001package org.biopax.paxtools.impl.level3; 002 003import org.biopax.paxtools.model.BioPAXElement; 004import org.biopax.paxtools.model.level3.SequenceInterval; 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.ManyToOne; 015import javax.persistence.Transient; 016 017@Entity 018@Proxy(proxyClass = SequenceInterval.class) 019@Indexed 020@DynamicUpdate @DynamicInsert 021@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 022public class SequenceIntervalImpl extends SequenceLocationImpl 023 implements SequenceInterval { 024 025 private SequenceSite sequenceIntervalBegin; 026 private SequenceSite sequenceIntervalEnd; 027 028 public SequenceIntervalImpl() { 029 } 030 031 // 032 // utilityClass (BioPAXElement) interface implementation 033 // 034 //////////////////////////////////////////////////////////////////////////// 035 @Transient 036 public Class<? extends SequenceInterval> getModelInterface() { 037 return SequenceInterval.class; 038 } 039 040 protected boolean semanticallyEquivalent(BioPAXElement element) { 041 if (!(element instanceof SequenceInterval)) 042 return false; 043 044 final SequenceInterval that = (SequenceInterval) element; 045 return 046 sequenceIntervalBegin != null && 047 sequenceIntervalBegin.isEquivalent(that.getSequenceIntervalBegin()) && 048 sequenceIntervalEnd != null && 049 sequenceIntervalEnd.isEquivalent(that.getSequenceIntervalEnd()); 050 } 051 052 public int equivalenceCode() { 053 int result = 29 + (sequenceIntervalBegin != null ? 054 sequenceIntervalBegin.equivalenceCode() : 0); 055 result = 29 * result + 056 (sequenceIntervalEnd != null ? sequenceIntervalEnd.equivalenceCode() : 057 0); 058 return result; 059 } 060 061 // 062 // sequenceInterval interface implementation 063 // 064 //////////////////////////////////////////////////////////////////////////// 065 @ManyToOne(targetEntity = SequenceSiteImpl.class)//, cascade={CascadeType.ALL}) 066 public SequenceSite getSequenceIntervalBegin() { 067 return sequenceIntervalBegin; 068 } 069 070 public void setSequenceIntervalBegin(SequenceSite sequenceIntervalBegin) { 071 this.sequenceIntervalBegin = sequenceIntervalBegin; 072 } 073 074 @ManyToOne(targetEntity = SequenceSiteImpl.class)//, cascade={CascadeType.ALL}) 075 public SequenceSite getSequenceIntervalEnd() { 076 return sequenceIntervalEnd; 077 } 078 079 public void setSequenceIntervalEnd(SequenceSite sequenceIntervalEnd) { 080 this.sequenceIntervalEnd = sequenceIntervalEnd; 081 } 082 083 @Override 084 public String toString() 085 { 086 return this.getSequenceIntervalBegin()+"-"+this.getSequenceIntervalEnd(); 087 } 088 089} 090