ExportDocument.java

package com.tradecloud.domain.export;

import org.hibernate.annotations.ForeignKey;
import org.springframework.stereotype.Component;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;

@Entity
@Component(value = "ExportDocument")
@Table(name = "export_documents")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ExportDocument")
public class ExportDocument extends Document<ExportDocument> {

    public enum Status {
        Generated, Submitted, From_Sars, Additional_Success, Additional_Submitted, Additional_Failed
    }

    public enum Type {
        Additional_SARS_Document, SAD_500, SAD_554_Cancellation, SAD_554, CI, Edifact_CUSRES, Asycuda_SAD, Edifact_CUSDEC,
        Edifact_CUSREQ, CUSTOMS_WORKSHEET
    }

    private static final Long serialVersionUID = 1L;

    @Enumerated(value = EnumType.STRING)
    private com.tradecloud.domain.sars.Status exportStatus;

    @OneToOne(fetch = FetchType.LAZY)
    @ForeignKey(name = "export_documents_export_fk")
    private Export export;

    @Enumerated(value = EnumType.STRING)
    private Status status;

    private String reference;

    private Date submittedDate;

    private String token;

    public ExportDocument() {
    }

    public Export getExport() {
        return export;
    }

    public void setExport(Export export) {
        this.export = export;
        this.exportStatus = export.getStatus();
    }

    public Status getStatus() {
        return status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public Date getSubmittedDate() {
        return submittedDate;
    }

    public void setSubmittedDate(Date submittedDate) {
        this.submittedDate = submittedDate;
    }

    @Override
    public int compareTo(ExportDocument e) {
        if (created != null && e.created != null) {
            if (created.compareTo(e.getCreated()) != 0) {
                return created.compareTo(e.getCreated());
            }
        }
        return 0;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getToken() {
        return token;
    }

    public com.tradecloud.domain.sars.Status getExportStatus() {
        return exportStatus;
    }

    public void setExportStatus(com.tradecloud.domain.sars.Status exportStatus) {
        this.exportStatus = exportStatus;
    }
}