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}