Document.java

package com.tradecloud.domain.export;

import com.tradecloud.common.base.PersistenceBase;

import javax.persistence.*;

/**
 * Created by ds on 2015/12/02.
 */
@MappedSuperclass
public abstract class Document<T extends PersistenceBase> extends PersistenceBase implements Comparable<T> {

    @Enumerated(value = EnumType.STRING)
    private DocumentType documentType;

    @Enumerated(value = EnumType.STRING)
    private DocumentTitle documentTitle;

    private String filename;

    private Long dmsDocumentId;

    @OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private ExportDocumentData exportDocumentData;

    public DocumentType getDocumentType() {
        return documentType;
    }

    public void setDocumentType(DocumentType documentType) {
        this.documentType = documentType;
    }

    public DocumentTitle getDocumentTitle() {
        return documentTitle;
    }

    public void setDocumentTitle(DocumentTitle documentTitle) {
        this.documentTitle = documentTitle;
    }

    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    @Deprecated //using dms
    public ExportDocumentData _getDocumentData() {
        return exportDocumentData;
    }

    @Deprecated //using dms
    public void _setDocumentData(ExportDocumentData exportDocumentData) {
        if (exportDocumentData != null) {
            throw new IllegalStateException("now using dms, this method is kept for data migration");
        }
        this.exportDocumentData = exportDocumentData;
    }

    public Long getDmsDocumentId() {
        return dmsDocumentId;
    }

    public void setDmsDocumentId(Long dmsDocumentId) {
        this.dmsDocumentId = dmsDocumentId;
    }

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

}