/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.portfolio.loanproduct.productmix.data;
import java.util.Collection;
import org.mifosplatform.portfolio.loanproduct.data.LoanProductData;
public class ProductMixData {
private final Long productId;
private final String productName;
private final Collection<LoanProductData> restrictedProducts;
private final Collection<LoanProductData> allowedProducts;
@SuppressWarnings("unused")
private final Collection<LoanProductData> productOptions;
public ProductMixData(final Long productId, final String productName, final Collection<LoanProductData> restrictedProducts,
final Collection<LoanProductData> allowedProducts, final Collection<LoanProductData> productOptions) {
this.productId = productId;
this.productName = productName;
this.restrictedProducts = restrictedProducts;
this.allowedProducts = allowedProducts;
this.productOptions = productOptions;
}
public static ProductMixData template(final Collection<LoanProductData> productOptions) {
return new ProductMixData(null, null, null, null, productOptions);
}
public static ProductMixData withTemplateOptions(final ProductMixData productMixData, final Collection<LoanProductData> productOptions) {
return new ProductMixData(productMixData.productId, productMixData.productName, productMixData.restrictedProducts,
productMixData.allowedProducts, productOptions);
}
public static ProductMixData withDetails(final Long productId, final String productName,
final Collection<LoanProductData> restrictedProducts, final Collection<LoanProductData> allowedProducts) {
return new ProductMixData(productId, productName, restrictedProducts, allowedProducts, null);
}
public static ProductMixData withRestrictedOptions(final Collection<LoanProductData> restrictedProducts,
final Collection<LoanProductData> allowedProducts) {
return new ProductMixData(null, null, restrictedProducts, allowedProducts, null);
}
}