DemurrageFreePeriod.java
package com.tradecloud.domain.demurrage;
import com.tradecloud.domain.ValueLookupBase;
import com.tradecloud.domain.container.ContainerType;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.time.DateUtils;
import org.hibernate.annotations.ForeignKey;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
*
*/
@Entity
public abstract class DemurrageFreePeriod extends ValueLookupBase {
@NotNull
@ManyToOne
@ForeignKey(name = "fk_containertype")
private ContainerType containerType;
@NotNull
private int numberOfDays;
public ContainerType getContainerType() {
return containerType;
}
public void setContainerType(ContainerType containerType) {
this.containerType = containerType;
}
public int getNumberOfDays() {
return numberOfDays;
}
public void setNumberOfDays(int numberOfDays) {
this.numberOfDays = numberOfDays;
}
/**
* Utility to calculate the free period end date.
*
* @param date
* @return
*/
public Date getFreePeriodEndDate(Date date) {
return DateUtils.addDays(date, numberOfDays);
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.appendSuper(super.hashCode())
.append(containerType)
.append(numberOfDays)
.toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof DemurrageFreePeriod)) {
return false;
}
DemurrageFreePeriod other = (DemurrageFreePeriod) obj;
return new EqualsBuilder()
.appendSuper(super.equals(obj))
.append(containerType, other.containerType)
.append(numberOfDays, other.numberOfDays)
.isEquals();
}
}