001package org.biopax.paxtools.impl.level3;
002
003import org.biopax.paxtools.model.level3.BiochemicalReaction;
004import org.biopax.paxtools.model.level3.DeltaG;
005import org.biopax.paxtools.model.level3.KPrime;
006import org.biopax.paxtools.util.BPCollections;
007import org.biopax.paxtools.util.SetStringBridge;
008import org.hibernate.annotations.Cache;
009import org.hibernate.annotations.*;
010import org.hibernate.search.annotations.Analyze;
011import org.hibernate.search.annotations.Field;
012import org.hibernate.search.annotations.FieldBridge;
013import org.hibernate.search.annotations.Indexed;
014
015import javax.persistence.*;
016import javax.persistence.Entity;
017import java.util.Set;
018
019@Entity
020@Proxy(proxyClass= BiochemicalReaction.class)
021@Indexed
022@DynamicUpdate @DynamicInsert
023@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
024public class BiochemicalReactionImpl extends ConversionImpl
025        implements BiochemicalReaction
026{
027// ------------------------------ FIELDS ------------------------------
028
029        private Set<Float> deltaS;
030        private Set<KPrime> kEQ;
031        private Set<Float> deltaH;
032        private Set<DeltaG> deltaG;
033        private Set<String> eCNumber;
034
035// --------------------------- CONSTRUCTORS ---------------------------
036
037// --------------------- ACCESORS and MUTATORS---------------------
038
039        public BiochemicalReactionImpl()
040        {
041                this.deltaG = BPCollections.I.createSafeSet();
042                this.deltaH = BPCollections.I.createSet();
043                this.deltaS = BPCollections.I.createSet();
044                this.eCNumber = BPCollections.I.createSet();
045                this.kEQ = BPCollections.I.createSafeSet();
046        }
047
048// ------------------------ INTERFACE METHODS ------------------------
049
050
051// --------------------- Interface BioPAXElement ---------------------
052
053        @Transient
054        public Class<? extends BiochemicalReaction> getModelInterface()
055        {
056                return BiochemicalReaction.class;
057        }
058
059// --------------------- Interface BiochemicalReaction ---------------------
060
061    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
062        @OneToMany(targetEntity = DeltaGImpl.class)
063        @JoinTable(name="deltaG")       
064        public Set<DeltaG> getDeltaG()
065        {
066                return deltaG;
067        }
068
069        protected void setDeltaG(Set<DeltaG> deltaG)
070        {
071                this.deltaG = deltaG;
072        }
073
074        public void addDeltaG(DeltaG deltaG)
075        {
076                if(deltaG != null)
077                        this.deltaG.add(deltaG);
078        }
079
080        public void removeDeltaG(DeltaG deltaG)
081        {
082                if(deltaG != null) 
083                        this.deltaG.remove(deltaG);
084        }
085
086    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
087        @ElementCollection
088        @JoinTable(name="deltaH")       
089        public Set<Float> getDeltaH()
090        {
091                return deltaH;
092        }
093
094        protected void setDeltaH(Set<Float> deltaH)
095        {
096                this.deltaH = deltaH;
097        }
098
099        public void addDeltaH(float deltaH)
100        {
101                this.deltaH.add(deltaH);
102        }
103
104        public void removeDeltaH(float deltaH)
105        {
106                this.deltaH.remove(deltaH);
107        }
108
109    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
110        @ElementCollection
111        @JoinTable(name="deltaS")       
112        public Set<Float> getDeltaS()
113        {
114                return deltaS;
115        }
116
117        protected void setDeltaS(Set<Float> deltaS)
118        {
119                this.deltaS = deltaS;
120        }
121
122        public void addDeltaS(float deltaS)
123        {
124                this.deltaS.add(deltaS);
125        }
126
127        public void removeDeltaS(float deltaS)
128        {
129                this.deltaS.remove(new Float(deltaS));
130        }
131
132    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
133        @ElementCollection
134        @JoinTable(name="ECNumber")     
135        @Field(name=FIELD_ECNUMBER, analyze=Analyze.YES)
136        @FieldBridge(impl=SetStringBridge.class)
137        public Set<String> getECNumber()
138        {
139                return eCNumber;
140        }
141
142        protected void setECNumber(Set<String> eCNumber)
143        {
144                this.eCNumber = eCNumber;
145        }
146
147        public void addECNumber(String eCNumber)
148        {
149                this.eCNumber.add(eCNumber);
150        }
151
152        public void removeECNumber(String eCNumber)
153        {
154                this.eCNumber.remove(eCNumber);
155        }
156
157    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
158        @OneToMany(targetEntity = KPrimeImpl.class)
159        @JoinTable(name="keq")          
160        public Set<KPrime> getKEQ()
161        {
162                return kEQ;
163        }
164
165        protected void setKEQ(Set<KPrime> kEQ)
166        {
167                this.kEQ = kEQ;
168        }
169
170        public void addKEQ(KPrime kEQ)
171        {
172                this.kEQ.add(kEQ);
173        }
174
175        public void removeKEQ(KPrime kEQ)
176        {
177                this.kEQ.remove(kEQ);
178        }
179
180}