001package org.biopax.paxtools.impl.level3;
002
003import org.biopax.paxtools.model.level3.*;
004import org.biopax.paxtools.model.level3.Process;
005import org.biopax.paxtools.util.BPCollections;
006import org.hibernate.annotations.Cache;
007import org.hibernate.annotations.*;
008import org.hibernate.search.annotations.Boost;
009import org.hibernate.search.annotations.Indexed;
010
011import javax.persistence.*;
012import java.util.Set;
013
014@javax.persistence.Entity
015@Proxy(proxyClass= Pathway.class)
016@Indexed
017@Boost(1.7f)
018@DynamicUpdate @DynamicInsert
019@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
020public class PathwayImpl extends ProcessImpl implements Pathway
021{
022// ------------------------------ FIELDS ------------------------------
023
024        private Set<Process> pathwayComponent;
025        private Set<PathwayStep> pathwayOrder;
026        private BioSource organism;
027        private Set<Control> controllerOf;
028
029// --------------------------- CONSTRUCTORS ---------------------------
030
031        public PathwayImpl()
032        {
033                this.pathwayComponent = BPCollections.I.createSafeSet();
034                this.pathwayOrder = BPCollections.I.createSafeSet();
035                this.controllerOf = BPCollections.I.createSafeSet();
036        }
037
038// ------------------------ INTERFACE METHODS ------------------------
039
040
041// --------------------- Interface BioPAXElement ---------------------
042
043
044        @Transient
045        public Class<? extends Pathway> getModelInterface()
046        {
047                return Pathway.class;
048        }
049
050// --------------------- Interface Pathway ---------------------
051
052// --------------------- ACCESORS and MUTATORS---------------------
053
054        @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
055        @ManyToMany(targetEntity = ProcessImpl.class)
056        @JoinTable(name="pathwayComponent")
057        public Set<Process> getPathwayComponent()
058        {
059                return this.pathwayComponent;
060        }
061
062        protected void setPathwayComponent(Set<Process> pathwayComponent)
063        {
064                this.pathwayComponent = pathwayComponent;
065        }
066
067        public void addPathwayComponent(Process component)
068        {
069                if (component != null) {
070                        this.pathwayComponent.add(component);
071                        component.getPathwayComponentOf().add(this);
072                }
073        }
074
075        public void removePathwayComponent(Process component)
076        {
077                if (component != null) {
078                        this.pathwayComponent.remove(component);
079                        component.getPathwayComponentOf().remove(this);
080                }
081        }
082
083        @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
084        @OneToMany(targetEntity = PathwayStepImpl.class, mappedBy = "pathwayOrderOf")
085        public Set<PathwayStep> getPathwayOrder()
086        {
087                return pathwayOrder;
088        }
089
090        protected void setPathwayOrder(Set<PathwayStep> pathwayOrder)
091        {
092                this.pathwayOrder = pathwayOrder;
093        }
094
095        public void addPathwayOrder(PathwayStep pathwayOrder)
096        {
097                if (pathwayOrder != null) {
098                        this.pathwayOrder.add(pathwayOrder);
099                        ((PathwayStepImpl) pathwayOrder).setPathwayOrderOf(this);
100                }
101        }
102
103        public void removePathwayOrder(PathwayStep pathwayOrder)
104        {
105                if (pathwayOrder != null) {
106                        this.pathwayOrder.remove(pathwayOrder);
107                        ((PathwayStepImpl) pathwayOrder).setPathwayOrderOf(null);
108                }
109        }
110
111
112        @ManyToOne(targetEntity = BioSourceImpl.class)
113        public BioSource getOrganism()
114        {
115                return organism;
116        }
117
118        public void setOrganism(BioSource organism)
119        {
120                this.organism = organism;
121        }
122
123    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
124        @ManyToMany(targetEntity = ControlImpl.class, mappedBy = "pathwayController")
125        public Set<Control> getControllerOf()
126        {
127                return controllerOf;
128        }
129
130        protected void setControllerOf(Set<Control> controllerOf)
131        {
132                this.controllerOf = controllerOf;
133        }
134}