Homologation.java
package com.tradecloud.domain.item;
import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.event.Event;
import com.tradecloud.domain.state.Stateful;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
@Entity
@Table(name = "Homologation")
@Access(AccessType.FIELD)
public class Homologation extends PersistenceBase implements Serializable, Stateful<HomologationStatus, HomologationEvent> {
public static final String CONDITIONAL_APPROVAL_CERT = "Conditional Approval Cert";
public static final String FINAL_LOA_CERT = "Final LOA Cert";
public static final String ECE_DOCUMENT = "ECE Document";
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@Fetch(value = FetchMode.SELECT)
@OrderBy("createDateTime")
private List<HomologationEvent> events = new LinkedList<>();
@Enumerated(EnumType.STRING)
private HomologationStatus status;
private Date applicationSubmittedDate;
private String applicationReference;
private Date conditionalReleaseDate;
private Date inspectionDate;
private String inspectionRecordNumber;
private boolean notRequired;
public HomologationStatus getStatus() {
return status;
}
public void setStatus(HomologationStatus status) {
this.status = status;
}
public Date getApplicationSubmittedDate() {
return applicationSubmittedDate;
}
public void setApplicationSubmittedDate(Date applicationSubmittedDate) {
this.applicationSubmittedDate = applicationSubmittedDate;
}
public String getApplicationReference() {
return applicationReference;
}
public void setApplicationReference(String applicationReference) {
this.applicationReference = applicationReference;
}
public Date getConditionalReleaseDate() {
return conditionalReleaseDate;
}
public void setConditionalReleaseDate(Date conditionalReleaseDate) {
this.conditionalReleaseDate = conditionalReleaseDate;
}
public Date getInspectionDate() {
return inspectionDate;
}
public void setInspectionDate(Date inspectionDate) {
this.inspectionDate = inspectionDate;
}
public String getInspectionRecordNumber() {
return inspectionRecordNumber;
}
public void setInspectionRecordNumber(String inspectionRecordNumber) {
this.inspectionRecordNumber = inspectionRecordNumber;
}
public boolean isNotRequired() {
return notRequired;
}
public void setNotRequired(boolean notRequired) {
this.notRequired = notRequired;
}
@Override
public HomologationEvent getLastEvent() {
return Event.getLastEvent(events);
}
@Override
public List<HomologationEvent> getEvents() {
return events;
}
@Override
public boolean inNonEditableState() {
return false;
}
public void setEvents(List<HomologationEvent> events) {
this.events = events;
}
@Override
public String toString() {
return "Homologation{" +
"status=" + status +
", applicationReference='" + applicationReference + '\'' +
'}';
}
@Override
public HomologationStatus getState() {
return status;
}
@Override
public void setState(HomologationStatus state) {
this.status = state;
}
}