Rate.java
package com.tradecloud.domain.rate;
import com.tradecloud.common.base.HibernateUtils;
import com.tradecloud.domain.ValueLookupBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.costing.CostingType;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Entity
public abstract class Rate extends ValueLookupBase {
private static final long serialVersionUID = 1L;
@NotNull
@Basic(optional = false)
private String costLine;
@NotNull
@Basic(optional = false)
private BigDecimal rate;
@Enumerated(EnumType.ORDINAL)
@NotNull
@Basic(optional = false)
protected RateUnit rateUnit;
@Enumerated(value = EnumType.STRING)
@NotNull
@Basic(optional = false)
private CostingType costingType;
@ManyToOne
private Currency currency;
@ManyToOne
private OrganisationalUnit organisationalUnit;
private boolean costCompareOnly;
public String getCostLine() {
return costLine;
}
public void setCostLine(String costLine) {
this.costLine = costLine;
}
public BigDecimal getRate() {
return rate;
}
public void setRate(BigDecimal rate) {
this.rate = rate;
}
public RateUnit getRateUnit() {
return rateUnit;
}
public void setRateUnit(RateUnit rateUnit) {
this.rateUnit = rateUnit;
}
public Currency getCurrency() {
return currency;
}
public void setCurrency(Currency currency) {
this.currency = currency;
}
public CostingType getCostingType() {
return costingType;
}
public void setCostingType(CostingType costingType) {
this.costingType = costingType;
}
public OrganisationalUnit getOrganisationalUnit() {
return organisationalUnit;
}
public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnit = organisationalUnit;
}
public boolean isCostCompareOnly() {
return costCompareOnly;
}
public void setCostCompareOnly(boolean costCompareOnly) {
this.costCompareOnly = costCompareOnly;
}
@Override
public String toString() {
return "Rate{" +
"costLine='" + costLine + '\'' +
", rate=" + rate +
", rateUnit=" + rateUnit +
", costingType=" + costingType +
", currency=" + currency +
", costCompareOnly=" + costCompareOnly +
'}';
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.appendSuper(super.hashCode())
.append(costLine)
.append(rateUnit)
.append(rateUnit == RateUnit.CURRENCY ? currency : null)
.append(costingType)
.append(costCompareOnly)
.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!HibernateUtils.proxyClassEquals(this, obj)) {
return false;
}
Rate other = (Rate) obj;
return new EqualsBuilder()
.appendSuper(super.equals(other))
.append(costLine, other.getCostLine())
.append(rateUnit, other.getRateUnit())
.append(costCompareOnly, other.isCostCompareOnly())
.append(rateUnit == RateUnit.CURRENCY ? currency : null, other.getRateUnit() == RateUnit.CURRENCY ? other.getRateUnit() : null)
.append(costingType, other.getCostingType())
.isEquals();
/*
if (other.getCostLine().equals(costLine)
&& other.getRateUnit() == rateUnit
&& other.getEffectiveDate().equals(getEffectiveDate())
&& (other.getRateUnit() != RateUnit.CURRENCY ? true : other.getCurrency().equals(currency))
&& (other.getCostingType() == costingType))
return true;
return false;
*/
}
// Use EqualsBuilder
@Deprecated
protected boolean objectsEqual(Object a, Object b) {
if (a == null && b == null)
return true;
if (a == null && b != null)
return false;
if (!a.equals(b))
return false;
return true;
}
}