diff --git a/src/main/java/org/reactome/server/graph/domain/model/DatabaseObject.java b/src/main/java/org/reactome/server/graph/domain/model/DatabaseObject.java index 139eb1c5..27ac34e9 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/DatabaseObject.java +++ b/src/main/java/org/reactome/server/graph/domain/model/DatabaseObject.java @@ -1,24 +1,29 @@ package org.reactome.server.graph.domain.model; -import com.fasterxml.jackson.annotation.JsonIdentityInfo; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.ObjectIdGenerators; +import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Objects; +import java.util.SortedSet; +import java.util.TreeSet; + import org.reactome.server.graph.domain.annotations.ReactomeProperty; import org.reactome.server.graph.domain.annotations.ReactomeSchemaIgnore; import org.reactome.server.graph.domain.annotations.ReactomeTransient; +import org.reactome.server.graph.domain.relationship.ModifiedList; import org.reactome.server.graph.domain.result.DatabaseObjectLike; import org.springframework.data.neo4j.core.schema.Id; import org.springframework.data.neo4j.core.schema.Node; import org.springframework.data.neo4j.core.schema.Relationship; import org.springframework.lang.NonNull; -import java.io.Serializable; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Objects; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; /** * DatabaseObject contains the minimum fields used to define an instance of an Reactome entry @@ -62,13 +67,21 @@ public abstract class DatabaseObject implements Serializable, Comparable modifiedList; + + @Relationship(type = "stableIdentifier") + private StableIdentifier stableIdentifier; public DatabaseObject() { } public DatabaseObject(Long dbId) { this.dbId = dbId; - } + } // @ReactomeSchemaIgnore // public Long getId() { @@ -79,6 +92,40 @@ public DatabaseObject(Long dbId) { // this.id = id; // } + public StableIdentifier getStableIdentifier() { + return stableIdentifier; + } + + public void setStableIdentifier(StableIdentifier stableIdentifier) { + this.stableIdentifier = stableIdentifier; + } + + public List getModifiedList() { + if (this.modifiedList == null || this.modifiedList.isEmpty()) { + return null; + } + + List rtn = new ArrayList<>(); + for (ModifiedList modified : this.modifiedList) { + rtn.add(modified.getInstanceEdit()); + } + return rtn; + } + + public void setModifiedList(List modifiedList) { + if (modifiedList == null || modifiedList.isEmpty()) { + return; + } + this.modifiedList = new TreeSet<>(); + int order = 0; + for (InstanceEdit instanceEdit : modifiedList) { + ModifiedList aux = new ModifiedList(); + aux.setInstanceEdit(instanceEdit); + aux.setOrder(order++); + this.modifiedList.add(aux); + } + } + public Long getDbId() { return dbId; } diff --git a/src/main/java/org/reactome/server/graph/domain/model/Deleted.java b/src/main/java/org/reactome/server/graph/domain/model/Deleted.java index dd4cadc5..afa66cea 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/Deleted.java +++ b/src/main/java/org/reactome/server/graph/domain/model/Deleted.java @@ -26,6 +26,9 @@ public class Deleted extends MetaDatabaseObject{ @Deprecated @ReactomeProperty(originName = "deletedInstanceDB_ID") private List deletedInstanceDbId; + + @ReactomeProperty(originName = "replacementInstanceDB_IDs") + private List replacementInstanceDbIds; public Deleted() { } @@ -34,6 +37,14 @@ public String getCuratorComment() { return curatorComment; } + public List getReplacementInstanceDbIds() { + return replacementInstanceDbIds; + } + + public void setReplacementInstanceDbIds(List replacementInstanceDbIds) { + this.replacementInstanceDbIds = replacementInstanceDbIds; + } + public void setCuratorComment(String curatorComment) { this.curatorComment = curatorComment; } diff --git a/src/main/java/org/reactome/server/graph/domain/model/Event.java b/src/main/java/org/reactome/server/graph/domain/model/Event.java index ad8fca3f..3b8bb8f5 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/Event.java +++ b/src/main/java/org/reactome/server/graph/domain/model/Event.java @@ -31,6 +31,8 @@ public abstract class Event extends DatabaseObject implements Trackable, Deletab private String releaseStatus; @ReactomeProperty(addedField = true) private String speciesName; + @ReactomeProperty(originName = "_doRelease") + private Boolean doRelease; @Relationship(type = "authored", direction = Relationship.Direction.INCOMING) private List authored; @@ -416,4 +418,13 @@ public List getUpdateTrackers() { public void setUpdateTrackers(List updateTrackers) { this.updateTrackers = updateTrackers; } + + + public Boolean getDoRelease() { + return doRelease; + } + + public void setDoRelease(Boolean doRelease) { + this.doRelease = doRelease; + } } diff --git a/src/main/java/org/reactome/server/graph/domain/model/GO_BiologicalProcess.java b/src/main/java/org/reactome/server/graph/domain/model/GO_BiologicalProcess.java index 4e794a73..10a715d4 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/GO_BiologicalProcess.java +++ b/src/main/java/org/reactome/server/graph/domain/model/GO_BiologicalProcess.java @@ -4,7 +4,7 @@ @SuppressWarnings("unused") @Node -public class GO_BiologicalProcess extends GO_Term{ +public class GO_BiologicalProcess extends GO_Term { public GO_BiologicalProcess() {} diff --git a/src/main/java/org/reactome/server/graph/domain/model/GO_CellularComponent.java b/src/main/java/org/reactome/server/graph/domain/model/GO_CellularComponent.java index 74d69eb6..e947ccbd 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/GO_CellularComponent.java +++ b/src/main/java/org/reactome/server/graph/domain/model/GO_CellularComponent.java @@ -43,13 +43,6 @@ public void setHasPart(List hasPart) { this.hasPart = hasPart; } - public List getInstanceOf() { - return instanceOf; - } - - public void setInstanceOf(List instanceOf) { - this.instanceOf = instanceOf; - } public List getSurroundedBy() { return surroundedBy; diff --git a/src/main/java/org/reactome/server/graph/domain/model/GO_Term.java b/src/main/java/org/reactome/server/graph/domain/model/GO_Term.java index 1635ae26..4f777221 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/GO_Term.java +++ b/src/main/java/org/reactome/server/graph/domain/model/GO_Term.java @@ -12,73 +12,14 @@ */ @SuppressWarnings("unused") @Node -public abstract class GO_Term extends DatabaseObject{ - - @ReactomeProperty - private String accession; - // will be filled together with url - private String databaseName; - @ReactomeProperty - private String definition; - @ReactomeProperty - private String name; - @ReactomeProperty(addedField = true) - private String url; - @Relationship(type = "referenceDatabase") - private ReferenceDatabase referenceDatabase; +public abstract class GO_Term extends ExternalOntology { public GO_Term() {} - + public GO_Term(Long dbId) { - super(dbId); - } - - public String getAccession() { - return accession; + super(); + setDbId(dbId); } - public void setAccession(String accession) { - this.accession = accession; - } - - public String getDatabaseName() { - return databaseName; - } - - public void setDatabaseName(String databaseName) { - this.databaseName = databaseName; - } - - public String getDefinition() { - return definition; - } - - public void setDefinition(String definition) { - this.definition = definition; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public ReferenceDatabase getReferenceDatabase() { - return referenceDatabase; - } - - public void setReferenceDatabase(ReferenceDatabase referenceDatabase) { - this.referenceDatabase = referenceDatabase; - } } diff --git a/src/main/java/org/reactome/server/graph/domain/model/LiteratureReference.java b/src/main/java/org/reactome/server/graph/domain/model/LiteratureReference.java index c7e2e9d8..37cfabec 100644 --- a/src/main/java/org/reactome/server/graph/domain/model/LiteratureReference.java +++ b/src/main/java/org/reactome/server/graph/domain/model/LiteratureReference.java @@ -2,6 +2,7 @@ import org.reactome.server.graph.domain.annotations.ReactomeProperty; import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; @SuppressWarnings("unused") @Node @@ -19,9 +20,20 @@ public class LiteratureReference extends Publication { private Integer volume; @ReactomeProperty private Integer year; + + @Relationship(type = "retractionStatus") + private RetractionStatus retractionStatus; public LiteratureReference() {} + public RetractionStatus getRetractionStatus() { + return retractionStatus; + } + + public void setRetractionStatus(RetractionStatus retractionStatus) { + this.retractionStatus = retractionStatus; + } + public LiteratureReference(Long dbId) { super(dbId); } diff --git a/src/main/java/org/reactome/server/graph/domain/model/PathwayDiagram.java b/src/main/java/org/reactome/server/graph/domain/model/PathwayDiagram.java new file mode 100644 index 00000000..a630fc82 --- /dev/null +++ b/src/main/java/org/reactome/server/graph/domain/model/PathwayDiagram.java @@ -0,0 +1,68 @@ +package org.reactome.server.graph.domain.model; + +import java.util.List; + +import org.reactome.server.graph.domain.annotations.ReactomeProperty; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +@Node +public class PathwayDiagram extends DatabaseObject { + + @Relationship(type = "representedPathway") + private List representedPathway; + @Relationship(type = "renderedInstance") + private List renderedInstance; + + @ReactomeProperty(addedField = true) + private String jsonFile; // JSON representation of the pathway diagram + @ReactomeProperty + private int width; // Width of the diagram + @ReactomeProperty + private int height; // Height of the diagram + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public PathwayDiagram() { + super(); + } + + public String getJsonFile() { + return jsonFile; + } + + public void setJsonFile(String jsonFile) { + this.jsonFile = jsonFile; + } + + public List getRepresentedPathway() { + return representedPathway; + } + + public void setRepresentedPathway(List representedPathway) { + this.representedPathway = representedPathway; + } + + public List getRenderedInstance() { + return renderedInstance; + } + + public void setRenderedInstance(List renderedInstance) { + this.renderedInstance = renderedInstance; + } + +} diff --git a/src/main/java/org/reactome/server/graph/domain/model/RetractionStatus.java b/src/main/java/org/reactome/server/graph/domain/model/RetractionStatus.java new file mode 100644 index 00000000..a7db0759 --- /dev/null +++ b/src/main/java/org/reactome/server/graph/domain/model/RetractionStatus.java @@ -0,0 +1,12 @@ +package org.reactome.server.graph.domain.model; + +import org.springframework.data.neo4j.core.schema.Node; + +@Node +public class RetractionStatus extends ControlledVocabulary { + + public RetractionStatus() { + + } + +} diff --git a/src/main/java/org/reactome/server/graph/domain/model/StableIdentifier.java b/src/main/java/org/reactome/server/graph/domain/model/StableIdentifier.java new file mode 100644 index 00000000..bc31998f --- /dev/null +++ b/src/main/java/org/reactome/server/graph/domain/model/StableIdentifier.java @@ -0,0 +1,68 @@ +package org.reactome.server.graph.domain.model; + +import org.reactome.server.graph.domain.annotations.ReactomeProperty; +import org.springframework.data.neo4j.core.schema.Node; + +@Node +public class StableIdentifier extends DatabaseObject { + + @ReactomeProperty + private String identifier; + @ReactomeProperty + private String identifierVersion; + @ReactomeProperty + private String oldIdentifier; + @ReactomeProperty + private String oldIdentifierVersion; + @ReactomeProperty + private Boolean released; + + + public StableIdentifier() {} + + public StableIdentifier(Long dbId) { + super(dbId); + } + + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + public String getIdentifierVersion() { + return identifierVersion; + } + + public void setIdentifierVersion(String identifierVersion) { + this.identifierVersion = identifierVersion; + } + + public String getOldIdentifier() { + return oldIdentifier; + } + + public void setOldIdentifier(String oldIdentifier) { + this.oldIdentifier = oldIdentifier; + } + + public String getOldIdentifierVersion() { + return oldIdentifierVersion; + } + + public void setOldIdentifierVersion(String oldIdentifierVersion) { + this.oldIdentifierVersion = oldIdentifierVersion; + } + + public Boolean getReleased() { + return released; + } + + public void setReleased(Boolean released) { + this.released = released; + } + + +} diff --git a/src/main/java/org/reactome/server/graph/domain/relationship/ModifiedList.java b/src/main/java/org/reactome/server/graph/domain/relationship/ModifiedList.java new file mode 100644 index 00000000..a1839177 --- /dev/null +++ b/src/main/java/org/reactome/server/graph/domain/relationship/ModifiedList.java @@ -0,0 +1,61 @@ +package org.reactome.server.graph.domain.relationship; + +import java.util.Objects; + +import org.reactome.server.graph.domain.model.InstanceEdit; +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.RelationshipProperties; +import org.springframework.data.neo4j.core.schema.TargetNode; + +@RelationshipProperties +public class ModifiedList implements Comparable { + @Id @GeneratedValue private Long id; + @TargetNode private InstanceEdit instanceEdit; + + private int order; + + public ModifiedList() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public InstanceEdit getInstanceEdit() { + return instanceEdit; + } + + public void setInstanceEdit(InstanceEdit instanceEdit) { + this.instanceEdit = instanceEdit; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + return Objects.equals(instanceEdit, ((ModifiedList) o).instanceEdit); + } + + @Override + public int hashCode() { + return Objects.hash(instanceEdit); + } + + @Override + public int compareTo(ModifiedList o) { + return this.order - o.order; + } + +}