CostFormulaSearch.java
package com.tradecloud.dto.costing.costsetup;
import com.tradecloud.common.base.HibernateUtils;
import com.tradecloud.domain.common.Incoterm;
import com.tradecloud.domain.costing.CostLineTemplate;
import com.tradecloud.domain.costing.CostingContextType;
import com.tradecloud.domain.costing.FormulaContainerType;
import com.tradecloud.domain.dto.base.SearchBase;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
@Scope("view")
public class CostFormulaSearch extends SearchBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* Search parameters.
*/
private List<OrganisationalUnit> organisationalUnits = new ArrayList<OrganisationalUnit>();
private ShippingMode shippingMode;
private Incoterm incoterm;
private CostLineTemplate costLineTemplate;
private Date effectiveDate;
private CostingContextType costingContextType;
private FormulaContainerType containerType;
private ServiceProvider freightForwarder;
private boolean exactSearch;
public CostFormulaSearch(List<OrganisationalUnit> organisationalUnits, ShippingMode shippingMode, Incoterm incoterm,
CostLineTemplate costLineTemplate, Date effectiveDate, CostingContextType costingContextType) {
this.organisationalUnits = organisationalUnits;
this.shippingMode = shippingMode;
this.incoterm = incoterm;
this.costLineTemplate = costLineTemplate;
this.effectiveDate = effectiveDate;
this.costingContextType = costingContextType;
}
public CostFormulaSearch(List<OrganisationalUnit> organisationalUnits, ShippingMode shippingMode, Incoterm incoterm,
CostLineTemplate costLineTemplate, Date effectiveDate, CostingContextType costingContextType,
FormulaContainerType containerType, ServiceProvider freightForwarder) {
this.organisationalUnits = organisationalUnits;
this.shippingMode = shippingMode;
this.incoterm = incoterm;
this.costLineTemplate = costLineTemplate;
this.effectiveDate = effectiveDate;
this.costingContextType = costingContextType;
this.containerType = containerType;
this.freightForwarder = freightForwarder;
}
public CostFormulaSearch() {
resetFields();
}
public List<OrganisationalUnit> getOrganisationalUnits() {
return organisationalUnits;
}
public void setOrganisationalUnits(List<OrganisationalUnit> organisationalUnits) {
this.organisationalUnits = organisationalUnits;
}
// Shortcut methods for the case where there is only one. This makes the UI much easier for now.
public OrganisationalUnit getOrganisationalUnit() {
return getOrganisationalUnits().isEmpty() ? null : getOrganisationalUnits().get(0);
}
// Shortcut methods for the case where there is only one. This makes the UI much easier for now.
public void setOrganisationalUnit(OrganisationalUnit organisationalUnit) {
getOrganisationalUnits().clear();
getOrganisationalUnits().add(organisationalUnit);
}
public void addOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnits.add(organisationalUnit);
}
public void removeOrganisationalUnit(OrganisationalUnit organisationalUnit) {
this.organisationalUnits.remove(organisationalUnit);
}
public ShippingMode getShippingMode() {
return shippingMode;
}
public void setShippingMode(ShippingMode shippingMode) {
this.shippingMode = shippingMode;
}
public Incoterm getIncoterm() {
return incoterm;
}
public void setIncoterm(Incoterm incoterm) {
this.incoterm = incoterm;
}
public Date getEffectiveDate() {
return effectiveDate;
}
public void setEffectiveDate(Date effectiveDate) {
this.effectiveDate = effectiveDate;
}
@Override
public String getTableName() {
return "costformula";
}
@Override
public String toString() {
return new ToStringBuilder(this).append("shippingMode", shippingMode)
.append("incoterm", incoterm).append("costlineTemplate", costLineTemplate).append("effectiveDate", effectiveDate)
.append("organisationalUnits", organisationalUnits).toString();
}
@Override
public int hashCode() {
HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
hashCodeBuilder.append(shippingMode).append(incoterm).append(costLineTemplate).append(effectiveDate)
.append(costingContextType).append(containerType).append(freightForwarder);
if(organisationalUnits!=null) {
for (OrganisationalUnit organisationalUnit : organisationalUnits) {
hashCodeBuilder.append(organisationalUnit);
}
}
return hashCodeBuilder.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (!HibernateUtils.proxyClassEquals(this, obj)) {
return false;
}
final CostFormulaSearch other = (CostFormulaSearch) obj;
EqualsBuilder equalsBuilder = new EqualsBuilder();
equalsBuilder.append(shippingMode, other.shippingMode)
.append(incoterm, other.incoterm)
.append(costLineTemplate, other.costLineTemplate)
.append(effectiveDate, other.effectiveDate)
.append(costingContextType, other.costingContextType)
.append(containerType, other.containerType)
.append(freightForwarder, other.freightForwarder);
if (organisationalUnits.size() == other.organisationalUnits.size()) {
for (int i = 0; i < organisationalUnits.size(); i++) {
OrganisationalUnit thisOrganisationalUnit = organisationalUnits.get(i);
OrganisationalUnit otherOrganisationalUnit = other.organisationalUnits.get(i);
equalsBuilder.append(thisOrganisationalUnit, otherOrganisationalUnit);
}
} else {
return false;
}
return equalsBuilder.isEquals();
}
/**
* Reset all search fields.
*/
public void resetFields() {
// defaults
// null signifies the ALL option here
organisationalUnits.clear();
organisationalUnits.add(null);
this.shippingMode = ShippingMode.SEA;
this.incoterm = null;
this.costLineTemplate = null;
this.effectiveDate = null;
this.costingContextType = CostingContextType.IMPORT;
this.freightForwarder = null;
this.containerType = null;
}
public CostLineTemplate getCostLineTemplate() {
return costLineTemplate;
}
public void setCostLineTemplate(CostLineTemplate costLineTemplate) {
this.costLineTemplate = costLineTemplate;
}
public CostingContextType getCostingContextType() {
return costingContextType;
}
public void setCostingContextType(CostingContextType costingContextType) {
this.costingContextType = costingContextType;
}
public FormulaContainerType getContainerType() {
return containerType;
}
public void setContainerType(FormulaContainerType containerType) {
this.containerType = containerType;
}
public ServiceProvider getFreightForwarder() {
return freightForwarder;
}
public void setFreightForwarder(ServiceProvider freightForwarder) {
this.freightForwarder = freightForwarder;
}
public boolean isExactSearch() {
return exactSearch;
}
public void setExactSearch(boolean exactSearch) {
this.exactSearch = exactSearch;
}
}