diff --git a/pom.xml b/pom.xml
index faa08f02..71f839f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
graph-core
jar
- 2.0.9
+ 2.0.11.CT
Graph Core Next Generation
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..efc8edf6 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
@@ -1,14 +1,21 @@
package org.reactome.server.graph.domain.model;
-import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.stream.Collectors;
+
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.HasCompartment;
+import org.reactome.server.graph.domain.relationship.StructureModified;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Relationship;
-import java.util.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
@SuppressWarnings({"unused"})
@@ -31,6 +38,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;
@@ -114,8 +123,13 @@ public abstract class Event extends DatabaseObject implements Trackable, Deletab
@Relationship(type = "internalReviewed", direction = Relationship.Direction.INCOMING)
private List internalReviewed;
+ // For some reason, we have to define a relationship to keep the order
+ // for newly added InstanceEdit in this attribute. Not sure why.
+ // Use SortedSet to make sure the order is correct. Most likely
+ // the sorting is conducted when the list, which is generated by the framework(?), is
+ // converted into a SortedSet.
@Relationship(type = "structureModified", direction = Relationship.Direction.INCOMING)
- private List structureModified;
+ private SortedSet structureModified;
@ReactomeTransient
@Relationship(type = "replacementInstances", direction = Relationship.Direction.INCOMING)
@@ -392,11 +406,26 @@ public void setInternalReviewed(List internalReviewed) {
}
public List getStructureModified() {
- return structureModified;
+ if (structureModified == null || structureModified.isEmpty())
+ return null;
+ return this.structureModified.stream().map(s -> s.getInstanceEdit()).collect(Collectors.toList());
}
public void setStructureModified(List structureModified) {
- this.structureModified = structureModified;
+ if (structureModified != null && structureModified.size() > 0) {
+ int order = 0;
+ this.structureModified = new TreeSet<>();
+ for (InstanceEdit ie : structureModified) {
+ StructureModified sm = new StructureModified();
+ sm.setId(ie.getDbId());
+ sm.setInstanceEdit(ie);
+ sm.setOrder(order);
+ order ++;
+ this.structureModified.add(sm);
+ }
+ }
+ else
+ this.structureModified = null;
}
@Override
@@ -416,4 +445,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;
+ }
+
+}
diff --git a/src/main/java/org/reactome/server/graph/domain/relationship/StructureModified.java b/src/main/java/org/reactome/server/graph/domain/relationship/StructureModified.java
new file mode 100644
index 00000000..e9411649
--- /dev/null
+++ b/src/main/java/org/reactome/server/graph/domain/relationship/StructureModified.java
@@ -0,0 +1,8 @@
+package org.reactome.server.graph.domain.relationship;
+
+import org.springframework.data.neo4j.core.schema.RelationshipProperties;
+
+@RelationshipProperties
+public class StructureModified extends ModifiedList {
+ public StructureModified() {}
+}