001package org.biopax.paxtools.impl.level3; 002 003import org.biopax.paxtools.model.level3.NucleicAcidReference; 004import org.biopax.paxtools.model.level3.NucleicAcidRegionReference; 005import org.biopax.paxtools.model.level3.SequenceLocation; 006import org.biopax.paxtools.model.level3.SequenceRegionVocabulary; 007import org.biopax.paxtools.util.BPCollections; 008import org.hibernate.annotations.*; 009 010import javax.persistence.Entity; 011import javax.persistence.JoinTable; 012import javax.persistence.ManyToMany; 013import javax.persistence.ManyToOne; 014import java.util.Set; 015 016@Entity 017@Proxy(proxyClass= NucleicAcidReference.class) 018@DynamicUpdate @DynamicInsert 019@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 020public abstract class NucleicAcidRegionReferenceImpl extends NucleicAcidReferenceImpl 021 implements NucleicAcidRegionReference 022{ 023 024 private SequenceLocation absoluteRegion; 025 026 private Set<SequenceRegionVocabulary> regionType; 027 028 private NucleicAcidReference containerEntityReference; 029 030 private Set<NucleicAcidReference> subRegionOf; 031 032 public NucleicAcidRegionReferenceImpl() 033 { 034 regionType = BPCollections.I.createSafeSet(); 035 subRegionOf = BPCollections.I.createSafeSet(); 036 } 037 038 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 039 @ManyToMany(targetEntity = NucleicAcidReferenceImpl.class, mappedBy = "subRegion") 040 public Set<NucleicAcidReference> getSubRegionOf() 041 { 042 return subRegionOf; 043 } 044 045 protected void setSubRegionOf(Set<NucleicAcidReference> subRegionOf) 046 { 047 this.subRegionOf = subRegionOf; 048 } 049 050 051 @ManyToOne(targetEntity = SequenceLocationImpl.class) 052 public SequenceLocation getAbsoluteRegion() 053 { 054 return this.absoluteRegion; 055 } 056 057 public void setAbsoluteRegion(SequenceLocation absoluteRegion) 058 { 059 this.absoluteRegion = absoluteRegion; 060 061 } 062 063 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 064 @ManyToMany(targetEntity = SequenceRegionVocabularyImpl.class) 065 @JoinTable(name = "regionType") 066 public Set<SequenceRegionVocabulary> getRegionType() 067 { 068 return this.regionType; 069 } 070 071 public void addRegionType(SequenceRegionVocabulary regionType) 072 { 073 if (regionType != null) this.regionType.add(regionType); 074 } 075 076 public void removeRegionType(SequenceRegionVocabulary regionType) 077 { 078 if (regionType != null) this.regionType.remove(regionType); 079 } 080 081 protected void setRegionType(Set<SequenceRegionVocabulary> regionType) 082 { 083 this.regionType = regionType; 084 } 085 086}