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