1 package org.simantics.interop.test;
4 import java.util.Map.Entry;
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.Statement;
9 import org.simantics.db.common.utils.NameUtils;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.utils.datastructures.BijectionMap;
13 public class GraphChanges {
17 private List<Statement> deletions;
18 private List<Statement> additions;
19 private List<Modification> modifications;
21 private BijectionMap<Resource, Resource> comparable;
23 public static class Modification {
32 public Modification(Resource leftSub, Resource rightSub, Statement leftStm, Statement rightStm) {
34 this.leftSub = leftSub;
35 this.rightSub = rightSub;
36 this.leftStm = leftStm;
37 this.rightStm = rightStm;
39 hashCode = leftSub.hashCode() + rightSub.hashCode();
41 hashCode += leftStm.hashCode();
43 hashCode += rightStm.hashCode();
46 public boolean isLeftAsserted() {
47 return !leftSub.equals(leftStm.getSubject());
50 public boolean isRightAsserted() {
51 return !rightSub.equals(rightStm.getSubject());
54 public Resource getLeftSub() {
58 public void setLeftSub(Resource leftSub) {
59 this.leftSub = leftSub;
62 public Resource getRightSub() {
66 public void setRightSub(Resource rightSub) {
67 this.rightSub = rightSub;
70 public Statement getLeftStm() {
74 public void setLeftStm(Statement leftStm) {
75 this.leftStm = leftStm;
78 public Statement getRightStm() {
82 public void setRightStm(Statement rightStm) {
83 this.rightStm = rightStm;
87 public boolean equals(Object obj) {
88 if (obj.getClass() != this.getClass())
90 Modification other = (Modification)obj;
91 if (!leftSub.equals(other.leftSub))
93 if (!rightSub.equals(other.rightSub))
95 if (leftStm != null) {
96 if (!leftStm.equals(other.leftStm))
98 } else if (other.leftStm != null)
100 if (rightStm != null) {
101 if (!rightStm.equals(other.rightStm))
103 } else if (other.rightStm != null)
109 public int hashCode() {
115 public GraphChanges(Resource r1, Resource r2, List<Statement> deletions, List<Statement> additions,
116 List<Modification> modifications, BijectionMap<Resource, Resource> comparable) {
120 this.deletions = deletions;
121 this.additions = additions;
122 this.modifications = modifications;
123 this.comparable = comparable;
126 public Resource getResource1() {
130 public Resource getResource2() {
134 public List<Statement> getAdditions() {
138 public List<Statement> getDeletions() {
142 public List<Modification> getModifications() {
143 return modifications;
146 public BijectionMap<Resource, Resource> getComparable() {
150 public String toString(ReadGraph graph) throws DatabaseException {
151 StringBuilder sb = new StringBuilder();
153 for (Statement stm : deletions) {
154 sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+
155 NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
156 NameUtils.getSafeName(graph, stm.getObject()) + " (" +
157 stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
160 for (Statement stm : additions) {
161 sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+
162 NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
163 NameUtils.getSafeName(graph, stm.getObject()) + " (" +
164 stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
167 for (Modification mod :modifications) {
169 Statement stm = mod.getLeftStm();
170 sb.append(NameUtils.getSafeName(graph, mod.getLeftSub()) + " "+
171 NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
172 NameUtils.getSafeName(graph, stm.getObject()) + " (" +
173 stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
176 Statement stm = mod.getRightStm();
177 sb.append(NameUtils.getSafeName(graph, mod.getRightSub()) + " "+
178 NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
179 NameUtils.getSafeName(graph, stm.getObject()) + " (" +
180 stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
183 return sb.toString();
186 public String comparableToString(ReadGraph graph) throws DatabaseException {
187 StringBuilder sb = new StringBuilder();
188 sb.append("Comparable:\n");
189 for (Entry<Resource, Resource> entry : comparable.getEntries()) {
190 sb.append(NameUtils.getSafeName(graph, entry.getKey()) + " "+
191 NameUtils.getSafeName(graph, entry.getValue()) + " (" +
192 entry.getKey() + " " +entry.getValue() + ")\n");
195 return sb.toString();