/** * 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.organisation.provisioning.data; import java.io.Serializable; import java.util.Collection; import java.util.List; import org.mifosplatform.accounting.glaccount.data.GLAccountData; import org.mifosplatform.portfolio.loanproduct.data.LoanProductData; @SuppressWarnings("unused") public class ProvisioningCriteriaData implements Comparable<ProvisioningCriteriaData>, Serializable { private final Long criteriaId; private final String criteriaName; private final String createdBy; private final Collection<LoanProductData> loanProducts; private Collection<LoanProductData> selectedLoanProducts ; private final Collection<ProvisioningCriteriaDefinitionData> definitions; private final Collection<GLAccountData> glAccounts; private ProvisioningCriteriaData(final Long criteriaId, final String criteriaName, final Collection<LoanProductData> loanProducts, Collection<ProvisioningCriteriaDefinitionData> definitions, Collection<GLAccountData> glAccounts, final String createdBy) { this.criteriaId = criteriaId; this.criteriaName = criteriaName; this.loanProducts = loanProducts; this.definitions = definitions; this.glAccounts = glAccounts; this.createdBy = createdBy; } private ProvisioningCriteriaData(ProvisioningCriteriaData data, final Collection<LoanProductData> loanProducts, Collection<GLAccountData> glAccounts) { this.criteriaId = data.criteriaId; this.criteriaName = data.criteriaName; this.selectedLoanProducts = data.loanProducts ; this.loanProducts = loanProducts; this.loanProducts.removeAll(selectedLoanProducts) ; this.definitions = data.definitions; this.glAccounts = glAccounts; this.createdBy = data.createdBy; } public static ProvisioningCriteriaData toLookup(final Long criteriaId, final String criteriaName, final Collection<LoanProductData> loanProducts, final List<ProvisioningCriteriaDefinitionData> definitions) { Collection<GLAccountData> glAccounts = null; String createdBy = null; return new ProvisioningCriteriaData(criteriaId, criteriaName, loanProducts, definitions, glAccounts, createdBy); } public static ProvisioningCriteriaData toLookup(final Long criteriaId, final String criteriaName, String createdBy) { Collection<GLAccountData> glAccounts = null; Collection<LoanProductData> loanProducts = null; List<ProvisioningCriteriaDefinitionData> definitions = null; return new ProvisioningCriteriaData(criteriaId, criteriaName, loanProducts, definitions, glAccounts, createdBy); } public static ProvisioningCriteriaData toTemplate(final Collection<ProvisioningCriteriaDefinitionData> definitions, final Collection<LoanProductData> loanProducts, final Collection<GLAccountData> glAccounts) { Long criteriaId = null; String criteriaName = null; String createdBy = null; return new ProvisioningCriteriaData(criteriaId, criteriaName, loanProducts, definitions, glAccounts, createdBy); } public static ProvisioningCriteriaData toTemplate(final ProvisioningCriteriaData data, final Collection<ProvisioningCriteriaDefinitionData> definitions, final Collection<LoanProductData> loanProducts, final Collection<GLAccountData> glAccounts) { return new ProvisioningCriteriaData(data, loanProducts, glAccounts); } @Override public int compareTo(ProvisioningCriteriaData obj) { if (obj == null ) { return -1; } return obj.criteriaId.compareTo(this.criteriaId); } }