Java tutorial
/* Copyright (C) 2015, University of Kansas Center for Research * * Specify Software Project, specify@ku.edu, Biodiversity Institute, * 1345 Jayhawk Boulevard, Lawrence, Kansas, 66045, USA * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package edu.ku.brc.specify.datamodel; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import edu.ku.brc.util.Orderable; /** * @author jstewart * @code_status Alpha */ @Entity @org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true) @org.hibernate.annotations.Proxy(lazy = false) @Table(name = "accessionattachment") @SuppressWarnings("serial") public class AccessionAttachment extends DataModelObjBase implements ObjectAttachmentIFace<Accession>, Orderable, Serializable, Comparable<AccessionAttachment> { protected Integer accessionAttachmentId; protected Accession accession; protected Attachment attachment; protected Integer ordinal; protected String remarks; public AccessionAttachment() { // do nothing } public AccessionAttachment(Integer id) { this.accessionAttachmentId = id; } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#initialize() */ @Override public void initialize() { super.init(); accessionAttachmentId = null; accession = null; attachment = new Attachment(); attachment.initialize(); ordinal = null; } @Id @GeneratedValue @Column(name = "AccessionAttachmentID") public Integer getAccessionAttachmentId() { return accessionAttachmentId; } public void setAccessionAttachmentId(Integer accessionAttachmentId) { this.accessionAttachmentId = accessionAttachmentId; } @ManyToOne(cascade = {}, fetch = FetchType.LAZY) @JoinColumn(name = "AccessionID", nullable = false) public Accession getAccession() { return accession; } public void setAccession(Accession accession) { this.accession = accession; } @ManyToOne(cascade = {}, fetch = FetchType.LAZY) @Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN }) @JoinColumn(name = "AttachmentID", nullable = false) @OrderBy("ordinal ASC") public Attachment getAttachment() { return attachment; } public void setAttachment(Attachment attachment) { this.attachment = attachment; } @Column(name = "Ordinal", nullable = false) public Integer getOrdinal() { return ordinal; } public void setOrdinal(Integer ordinal) { this.ordinal = ordinal; } @Lob @Column(name = "Remarks", length = 4096) public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } /* (non-Javadoc) * @see edu.ku.brc.ui.OrderableFormDataObj#getOrderIndex() */ @Transient public int getOrderIndex() { return (this.ordinal != null) ? this.ordinal : 0; } /* (non-Javadoc) * @see edu.ku.brc.ui.OrderableFormDataObj#setOrderIndex(int) */ public void setOrderIndex(int ordinal) { this.ordinal = ordinal; } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#getDataClass() */ @Override @Transient public Class<?> getDataClass() { return AccessionAttachment.class; } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#getId() */ @Override @Transient public Integer getId() { return accessionAttachmentId; } /* (non-Javadoc) * @see edu.ku.brc.ui.forms.FormDataObjIFace#getTableId() */ @Override @Transient public int getTableId() { return getClassTableId(); } /** * @return the Table ID for the class. */ public static int getClassTableId() { return 108; } @Transient public Accession getObject() { return getAccession(); } public void setObject(Accession object) { setAccession(object); } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.ObjectAttachmentIFace#getTableID() */ @Override @Transient public int getTableID() { return Accession.getClassTableId(); } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#getParentTableId() */ @Override @Transient public Integer getParentTableId() { return Accession.getClassTableId(); } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#getParentId() */ @Override @Transient public Integer getParentId() { return accession != null ? accession.getId() : null; } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#getIdentityTitle() */ @Override @Transient public String getIdentityTitle() { return Attachment.getIdentityTitle(this); } /* (non-Javadoc) * @see edu.ku.brc.specify.datamodel.DataModelObjBase#toString() */ @Override public String toString() { return (attachment != null) ? attachment.getIdentityTitle() : super.getIdentityTitle(); //String aString = (attachment != null) ? attachment.getIdentityTitle() : "NULL Attachment"; //String oString = (getObject() != null) ? getObject().getIdentityTitle() : "NULL Object Reference"; //return aString + " : " + oString; } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(AccessionAttachment obj) { if (ordinal != null && obj != null && obj.ordinal != null) { return ordinal.compareTo(obj.ordinal); } return 0; } }