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.util.BPCollections; 006import org.hibernate.annotations.*; 007 008import javax.persistence.Entity; 009import javax.persistence.JoinTable; 010import javax.persistence.ManyToMany; 011import java.util.Set; 012 013@Entity 014@Proxy(proxyClass= NucleicAcidReference.class) 015@DynamicUpdate @DynamicInsert 016@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 017public abstract class NucleicAcidReferenceImpl extends SequenceEntityReferenceImpl implements NucleicAcidReference 018{ 019 private Set<NucleicAcidRegionReference> subRegion; 020 021 public NucleicAcidReferenceImpl() 022 { 023 this.subRegion = BPCollections.I.createSafeSet(); 024 } 025 026 @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 027 @ManyToMany(targetEntity = NucleicAcidRegionReferenceImpl.class) 028 @JoinTable(name = "subRegion") 029 public Set<NucleicAcidRegionReference> getSubRegion() 030 { 031 return subRegion; 032 } 033 034 protected void setSubRegion(Set<NucleicAcidRegionReference> subRegion) 035 { 036 this.subRegion = subRegion; 037 } 038 039 public void addSubRegion(NucleicAcidRegionReference regionReference) 040 { 041 if (regionReference != null) 042 { 043 subRegion.add(regionReference); 044 regionReference.getSubRegionOf().add(this); 045 } 046 } 047 048 public void removeSubRegion(NucleicAcidRegionReference regionReference) 049 { 050 if (regionReference != null) 051 { 052 subRegion.remove(regionReference); 053 } 054 } 055} 056