// Path: util/src/main/java/se/callista/microservices/model/Product.java
// public class Product {
//     private int productId;
//     private String name;
//     private int weight;
//     private String serviceAddress;
// 
//     public Product() {
//     }
// 
//     public Product(int productId, String name, int weight, String serviceAddress) {
//         this.productId = productId;
//         this.name = name;
//         this.weight = weight;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public int getWeight() {
//         return weight;
//     }
// 
//     public void setWeight(int weight) {
//         this.weight = weight;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }
// 
// Path: util/src/main/java/se/callista/microservices/model/Recommendation.java
// public class Recommendation {
//     private int productId;
//     private int recommendationId;
//     private String author;
//     private int rate;
//     private String content;
//     private String serviceAddress;
// 
//     public Recommendation() {
//     }
// 
//     public Recommendation(int productId, int recommendationId, String author, int rate, String content, String serviceAddress) {
//         this.productId = productId;
//         this.recommendationId = recommendationId;
//         this.author = author;
//         this.rate = rate;
//         this.content = content;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public int getRecommendationId() {
//         return recommendationId;
//     }
// 
//     public void setRecommendationId(int recommendationId) {
//         this.recommendationId = recommendationId;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public int getRate() {
//         return rate;
//     }
// 
//     public void setRate(int rate) {
//         this.rate = rate;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }
// 
// Path: util/src/main/java/se/callista/microservices/model/Review.java
// public class Review {
//     private int productId;
//     private int reviewId;
//     private String author;
//     private String subject;
//     private String content;
//     private String serviceAddress;
// 
//     public Review() {
//     }
// 
//     public Review(int productId, int reviewId, String author, String subject, String content, String serviceAddress) {
//         this.productId = productId;
//         this.reviewId = reviewId;
//         this.author = author;
//         this.subject = subject;
//         this.content = content;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public int getReviewId() {
//         return reviewId;
//     }
// 
//     public void setReviewId(int reviewId) {
//         this.reviewId = reviewId;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getSubject() {
//         return subject;
//     }
// 
//     public void setSubject(String subject) {
//         this.subject = subject;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }


import se.callista.microservices.model.Product;
import se.callista.microservices.model.Recommendation;
import se.callista.microservices.model.Review;
import java.util.List;
import java.util.stream.Collectors;
package se.callista.microservices.composite.product.model;



/**
 * Created by magnus on 04/03/15.
 */
public class ProductAggregated {
    private int productId;
    private String name;
    private int weight;
    private List<RecommendationSummary> recommendations;
    private List<ReviewSummary> reviews;
    private ServiceAddresses serviceAddresses;

// Path: util/src/main/java/se/callista/microservices/model/Product.java
// public class Product {
//     private int productId;
//     private String name;
//     private int weight;
//     private String serviceAddress;
// 
//     public Product() {
//     }
// 
//     public Product(int productId, String name, int weight, String serviceAddress) {
//         this.productId = productId;
//         this.name = name;
//         this.weight = weight;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public int getWeight() {
//         return weight;
//     }
// 
//     public void setWeight(int weight) {
//         this.weight = weight;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }
// 
// Path: util/src/main/java/se/callista/microservices/model/Recommendation.java
// public class Recommendation {
//     private int productId;
//     private int recommendationId;
//     private String author;
//     private int rate;
//     private String content;
//     private String serviceAddress;
// 
//     public Recommendation() {
//     }
// 
//     public Recommendation(int productId, int recommendationId, String author, int rate, String content, String serviceAddress) {
//         this.productId = productId;
//         this.recommendationId = recommendationId;
//         this.author = author;
//         this.rate = rate;
//         this.content = content;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public int getRecommendationId() {
//         return recommendationId;
//     }
// 
//     public void setRecommendationId(int recommendationId) {
//         this.recommendationId = recommendationId;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public int getRate() {
//         return rate;
//     }
// 
//     public void setRate(int rate) {
//         this.rate = rate;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }
// 
// Path: util/src/main/java/se/callista/microservices/model/Review.java
// public class Review {
//     private int productId;
//     private int reviewId;
//     private String author;
//     private String subject;
//     private String content;
//     private String serviceAddress;
// 
//     public Review() {
//     }
// 
//     public Review(int productId, int reviewId, String author, String subject, String content, String serviceAddress) {
//         this.productId = productId;
//         this.reviewId = reviewId;
//         this.author = author;
//         this.subject = subject;
//         this.content = content;
//         this.serviceAddress = serviceAddress;
//     }
// 
//     public int getProductId() {
//         return productId;
//     }
// 
//     public void setProductId(int productId) {
//         this.productId = productId;
//     }
// 
//     public int getReviewId() {
//         return reviewId;
//     }
// 
//     public void setReviewId(int reviewId) {
//         this.reviewId = reviewId;
//     }
// 
//     public String getAuthor() {
//         return author;
//     }
// 
//     public void setAuthor(String author) {
//         this.author = author;
//     }
// 
//     public String getSubject() {
//         return subject;
//     }
// 
//     public void setSubject(String subject) {
//         this.subject = subject;
//     }
// 
//     public String getContent() {
//         return content;
//     }
// 
//     public void setContent(String content) {
//         this.content = content;
//     }
// 
//     public String getServiceAddress() {
//         return serviceAddress;
//     }
// }


// Path: microservices/composite/product-composite-service/src/main/java/se/callista/microservices/composite/product/model/ProductAggregated.java
import se.callista.microservices.model.Product;
import se.callista.microservices.model.Recommendation;
import se.callista.microservices.model.Review;
import java.util.List;
import java.util.stream.Collectors;

package se.callista.microservices.composite.product.model;



/**
 * Created by magnus on 04/03/15.
 */
public class ProductAggregated {
    private int productId;
    private String name;
    private int weight;
    private List<RecommendationSummary> recommendations;
    private List<ReviewSummary> reviews;
    private ServiceAddresses serviceAddresses;

    public ProductAggregated(Product product, List<Recommendation> recommendations, List<Review> reviews, String serviceAddress) {