001package org.biopax.paxtools.impl.level3; 002 003import org.biopax.paxtools.model.BioPAXElement; 004import org.biopax.paxtools.model.level3.PositionStatusType; 005import org.biopax.paxtools.model.level3.SequenceSite; 006import org.hibernate.annotations.Cache; 007import org.hibernate.annotations.CacheConcurrencyStrategy; 008import org.hibernate.annotations.Proxy; 009import org.hibernate.annotations.DynamicInsert; 010import org.hibernate.annotations.DynamicUpdate; 011import org.hibernate.search.annotations.Indexed; 012 013import javax.persistence.Entity; 014import javax.persistence.Enumerated; 015import javax.persistence.Transient; 016 017@Entity 018@Proxy(proxyClass= SequenceSite.class) 019@Indexed 020@DynamicUpdate @DynamicInsert 021@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 022public class SequenceSiteImpl extends SequenceLocationImpl implements SequenceSite 023{ 024 025 private PositionStatusType positionStatus; 026 private int sequencePosition = UNKNOWN_INT; 027 028 public SequenceSiteImpl() 029 { 030 } 031 032 @Transient 033 public Class<? extends SequenceSite> getModelInterface() 034 { 035 return SequenceSite.class; 036 } 037 038 protected boolean semanticallyEquivalent(BioPAXElement element) 039 { 040 if(!(element instanceof SequenceSite)) 041 return false; 042 043 final SequenceSite that = (SequenceSite) element; 044 return sequencePosition == that.getSequencePosition() && 045 positionStatus != null ? 046 positionStatus.equals(that.getPositionStatus()) : 047 that.getPositionStatus() == null; 048 } 049 050 public int equivalenceCode() 051 { 052 int result = 29 + sequencePosition; 053 result = 29 * result + 054 (positionStatus != null ? positionStatus.hashCode() : 0); 055 return result; 056 } 057 058 @Override 059 public String toString() 060 { 061 return String.valueOf(this.getSequencePosition()); 062 } 063 064 // 065 // sequenceSite interface implementation 066 // 067 //////////////////////////////////////////////////////////////////////////// 068 069 // Property POSITION-STATUS 070 @Enumerated 071 public PositionStatusType getPositionStatus() 072 { 073 return positionStatus; 074 } 075 076 public void setPositionStatus(PositionStatusType positionStatus) 077 { 078 this.positionStatus = positionStatus; 079 } 080 081 // Property sequence-POSITION 082 083 public int getSequencePosition() 084 { 085 return sequencePosition; 086 } 087 088 public void setSequencePosition(int sequencePosition) 089 { 090 this.sequencePosition = sequencePosition; 091 } 092}