WorkLoadRule.java
package com.tradecloud.domain.workload;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.model.payment.PaymentTerm;
import com.tradecloud.domain.model.ordermanagement.OrderState;
import com.tradecloud.domain.model.shipment.ShippingMode;
import com.tradecloud.domain.party.ServiceProvider;
import com.tradecloud.domain.party.ServiceProviderType;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Entity
@Table(name = "workload_rule")
@Access(AccessType.FIELD)
public class WorkLoadRule extends PersistenceBase implements Serializable {
@Column(nullable = false)
private String name;
@NotNull
@ManyToOne(optional = false)
@JoinColumn(name = "category_id", nullable = false)
private WorkLoadCategory category;
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private RuleScope scope; // ORDER or SHIPMENT
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private AttributeType attribute;
@Enumerated(EnumType.STRING)
private ShippingMode modeOfTransport;
private boolean enableSupplierAutoAllocation;
@ManyToOne
private ServiceProvider serviceProvider;
@Enumerated(EnumType.STRING)
private ServiceProviderType serviceProviderType;
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private DateFilter dateFilter;
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private DateFormulaOperator dateFormulaOperator;
@Column(nullable = false)
private int dateFormulaValue;
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private DateFilter priorityDateFilter;
@NotNull
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private DateFormulaOperator priorityOperator;
@Column(nullable = false)
private short priorityFormulaAdditionalDays;
private Date lastPriorityDate;
@ManyToOne
private PaymentTerm paymentTerm;
public WorkLoadRule() {
}
public WorkLoadRule(AttributeType attributeType) {
this.attribute=attributeType;
}
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "workloadrule_order_states", joinColumns = @JoinColumn(name = "workloadrule_id"))
@Column(name = "orderState")
@Enumerated(EnumType.STRING)
private List<OrderState> orderStates;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public WorkLoadCategory getCategory() {
return category;
}
public void setCategory(WorkLoadCategory category) {
this.category = category;
}
public RuleScope getScope() {
return scope;
}
public void setScope(RuleScope scope) {
this.scope = scope;
}
public AttributeType getAttribute() {
return attribute;
}
public void setAttribute(AttributeType attribute) {
this.attribute = attribute;
}
public ShippingMode getModeOfTransport() {
return modeOfTransport;
}
public void setModeOfTransport(ShippingMode modeOfTransport) {
this.modeOfTransport = modeOfTransport;
}
public boolean isEnableSupplierAutoAllocation() {
return enableSupplierAutoAllocation;
}
public void setEnableSupplierAutoAllocation(boolean enableSupplierAutoAllocation) {
this.enableSupplierAutoAllocation = enableSupplierAutoAllocation;
}
public ServiceProvider getServiceProvider() {
return serviceProvider;
}
public void setServiceProvider(ServiceProvider serviceProvider) {
this.serviceProvider = serviceProvider;
}
public ServiceProviderType getServiceProviderType() {
return serviceProviderType;
}
public void setServiceProviderType(ServiceProviderType serviceProviderType) {
this.serviceProviderType = serviceProviderType;
}
public DateFilter getDateFilter() {
return dateFilter;
}
public void setDateFilter(DateFilter dateFilter) {
this.dateFilter = dateFilter;
}
public DateFormulaOperator getDateFormulaOperator() {
return dateFormulaOperator;
}
public void setDateFormulaOperator(DateFormulaOperator dateFormulaOperator) {
this.dateFormulaOperator = dateFormulaOperator;
}
public int getDateFormulaValue() {
return dateFormulaValue;
}
public void setDateFormulaValue(int dateFormulaValue) {
this.dateFormulaValue = dateFormulaValue;
}
public DateFilter getPriorityDateFilter() {
return priorityDateFilter;
}
public void setPriorityDateFilter(DateFilter priorityDateFilter) {
this.priorityDateFilter = priorityDateFilter;
}
public DateFormulaOperator getPriorityOperator() {
return priorityOperator;
}
public void setPriorityOperator(DateFormulaOperator priorityOperator) {
this.priorityOperator = priorityOperator;
}
public short getPriorityFormulaAdditionalDays() {
return priorityFormulaAdditionalDays;
}
public void setPriorityFormulaAdditionalDays(short priorityFormulaAdditionalDays) {
this.priorityFormulaAdditionalDays = priorityFormulaAdditionalDays;
}
public PaymentTerm getPaymentTerm() {
return paymentTerm;
}
public void setPaymentTerm(PaymentTerm paymentTerm) {
this.paymentTerm = paymentTerm;
}
public Date getLastPriorityDate() {
return lastPriorityDate;
}
public void setLastPriorityDate(Date lastPriorityDate) {
this.lastPriorityDate = lastPriorityDate;
}
public List<OrderState> getOrderStates() {
return orderStates;
}
public void setOrderStates(List<OrderState> orderStates) {
this.orderStates = orderStates;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
WorkLoadRule that = (WorkLoadRule) o;
return Objects.equals(name, that.name) && Objects.equals(category, that.category);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), name, category);
}
@Override
public String toString() {
return "WorkLoadRule{" +
"attribute=" + attribute +
", name='" + name + '\'' +
'}';
}
}