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}