blob: b50ad5c3f74ebdcb2eaabfc8883263164ba99059 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.fineract.cn.portfolio.api.v1.domain;
import org.apache.fineract.cn.portfolio.api.v1.validation.ValidAccountAssignments;
import org.apache.fineract.cn.portfolio.api.v1.validation.ValidCurrencyCode;
import java.util.Objects;
import java.util.Set;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.apache.fineract.cn.lang.validation.constraints.ValidIdentifier;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
/**
* @author Myrle Krantz
*/
@SuppressWarnings({"WeakerAccess", "unused"})
public final class Product {
@ValidIdentifier
private String identifier;
@NotNull
@Length(min = 2, max = 256)
private String name;
@NotNull
@Valid
private TermRange termRange;
@NotNull
@Valid
private BalanceRange balanceRange;
@NotNull
@Valid
private InterestRange interestRange;
@NotNull
private InterestBasis interestBasis;
@NotNull
@ValidIdentifier(maxLength = 512)
private String patternPackage;
@Length(max = 4096)
private String description;
@ValidCurrencyCode
private String currencyCode;
@Range(min = 0, max = 4)
private int minorCurrencyUnitDigits;
@ValidAccountAssignments
private Set<AccountAssignment> accountAssignments;
@NotNull
@Length(max = 8092)
private String parameters; //json serialization of product specific parameters.
private String createdOn;
private String createdBy;
private String lastModifiedOn;
private String lastModifiedBy;
private boolean enabled;
public Product() {
}
public String getIdentifier() {
return identifier;
}
public void setIdentifier(String identifier) {
this.identifier = identifier;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TermRange getTermRange() {
return termRange;
}
public void setTermRange(TermRange termRange) {
this.termRange = termRange;
}
public BalanceRange getBalanceRange() {
return balanceRange;
}
public void setBalanceRange(BalanceRange balanceRange) {
this.balanceRange = balanceRange;
}
public InterestRange getInterestRange() {
return interestRange;
}
public void setInterestRange(InterestRange interestRange) {
this.interestRange = interestRange;
}
public InterestBasis getInterestBasis() {
return interestBasis;
}
public void setInterestBasis(InterestBasis interestBasis) {
this.interestBasis = interestBasis;
}
public String getPatternPackage() {
return patternPackage;
}
public void setPatternPackage(String patternPackage) {
this.patternPackage = patternPackage;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCurrencyCode() {
return currencyCode;
}
public void setCurrencyCode(String currencyCode) {
this.currencyCode = currencyCode;
}
public int getMinorCurrencyUnitDigits() {
return minorCurrencyUnitDigits;
}
public void setMinorCurrencyUnitDigits(int minorCurrencyUnitDigits) {
this.minorCurrencyUnitDigits = minorCurrencyUnitDigits;
}
public Set<AccountAssignment> getAccountAssignments() {
return accountAssignments;
}
public void setAccountAssignments(Set<AccountAssignment> accountAssignments) {
this.accountAssignments = accountAssignments;
}
public String getParameters() {
return parameters;
}
public void setParameters(String parameters) {
this.parameters = parameters;
}
public String getCreatedOn() {
return createdOn;
}
public void setCreatedOn(String createdOn) {
this.createdOn = createdOn;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getLastModifiedOn() {
return lastModifiedOn;
}
public void setLastModifiedOn(String lastModifiedOn) {
this.lastModifiedOn = lastModifiedOn;
}
public String getLastModifiedBy() {
return lastModifiedBy;
}
public void setLastModifiedBy(String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Product product = (Product) o;
return minorCurrencyUnitDigits == product.minorCurrencyUnitDigits &&
Objects.equals(identifier, product.identifier) &&
Objects.equals(name, product.name) &&
Objects.equals(termRange, product.termRange) &&
Objects.equals(balanceRange, product.balanceRange) &&
Objects.equals(interestRange, product.interestRange) &&
interestBasis == product.interestBasis &&
Objects.equals(patternPackage, product.patternPackage) &&
Objects.equals(description, product.description) &&
Objects.equals(currencyCode, product.currencyCode) &&
Objects.equals(accountAssignments, product.accountAssignments) &&
Objects.equals(parameters, product.parameters);
}
@Override
public int hashCode() {
return Objects.hash(identifier, name, termRange, balanceRange, interestRange, interestBasis, patternPackage, description, currencyCode, minorCurrencyUnitDigits, accountAssignments, parameters);
}
@Override
public String toString() {
return "Product{" +
"identifier='" + identifier + '\'' +
", name='" + name + '\'' +
", termRange=" + termRange +
", balanceRange=" + balanceRange +
", interestRange=" + interestRange +
", interestBasis=" + interestBasis +
", patternPackage='" + patternPackage + '\'' +
", description='" + description + '\'' +
", currencyCode='" + currencyCode + '\'' +
", minorCurrencyUnitDigits=" + minorCurrencyUnitDigits +
", accountAssignments=" + accountAssignments +
", parameters='" + parameters + '\'' +
", createdOn='" + createdOn + '\'' +
", createdBy='" + createdBy + '\'' +
", lastModifiedOn='" + lastModifiedOn + '\'' +
", lastModifiedBy='" + lastModifiedBy + '\'' +
", enabled='" + enabled + '\'' +
'}';
}
}