import org.simantics.db.Statement;\r
import org.simantics.db.common.ResourceArray;\r
import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.common.utils.NameUtils;\r
import org.simantics.db.exception.DatabaseException;\r
import org.simantics.db.exception.InvalidResourceReferenceException;\r
import org.simantics.db.exception.ServiceException;\r
import org.simantics.db.request.Read;\r
import org.simantics.db.service.SerialisationSupport;\r
import org.simantics.layer0.Layer0;\r
-import org.simantics.layer0.utils.direct.GraphUtils;\r
import org.simantics.ui.SimanticsUI;\r
import org.simantics.ui.dnd.LocalObjectTransfer;\r
import org.simantics.ui.dnd.ResourceReferenceTransfer;\r
import org.simantics.ui.dnd.ResourceTransferUtils;\r
import org.simantics.ui.utils.ResourceAdaptionUtils;\r
import org.simantics.utils.datastructures.BijectionMap;\r
+import org.simantics.utils.datastructures.Pair;\r
\r
/**\r
* Simple multi line text viewer for seeing differences in two subgraphs. \r
private Text text1;\r
private Text text2;\r
\r
- private GraphComparator comparator = new GraphComparator();\r
+\r
\r
@Override\r
public void createPartControl(Composite parent) {\r
\r
@Override\r
public void run(final ReadGraph graph) throws DatabaseException {\r
+ GraphComparator comparator = new GraphComparator(r1,r2);\r
comparator.clearRels();\r
Layer0 l0 = Layer0.getInstance(graph);\r
comparator.addTraversed(l0.ConsistsOf);\r
+ comparator.addTraversed(l0.HasNext);\r
comparator.addTested(l0.IsWeaklyRelatedTo);\r
- comparator.test(graph, r1, r2);\r
- BijectionMap<Statement, Statement> map = comparator.getComparable();\r
+ comparator.test(graph);\r
+ BijectionMap<Statement, Statement> map = comparator.getComparableStatements();\r
Map<Statement, Integer> indices = new HashMap<Statement, Integer>();\r
final StringBuilder sb1 = new StringBuilder();\r
+ final StringBuilder sb2 = new StringBuilder();\r
int index = 0;\r
- for (Statement s : comparator.getChanges1()) {\r
+ \r
+ GraphChanges changes = comparator.getChanges();\r
+ \r
+ for (Pair<Statement,Statement> mod : changes.getModifications()) {\r
+ {\r
+ String sub;\r
+ try {\r
+ Statement s = mod.first;\r
+ sub = NameUtils.getSafeName(graph, s.getSubject());\r
+ String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+ String obj = NameUtils.getSafeName(graph, s.getObject());\r
+ if (map.containsLeft(s)) {\r
+ index++;\r
+ indices.put(s, index);\r
+ sb1.append("["+index + "] ");\r
+ }\r
+ sb1.append(sub + " - " + pre + " - " + obj);\r
+ sb1.append(" ["+s.getSubject().getResourceId() + " " + s.getPredicate().getResourceId() + " " + s.getObject().getResourceId()+"]");\r
+ sb1.append("\n");\r
+ } catch (ValidationException e) {\r
+ e.printStackTrace();\r
+ } catch (ServiceException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ {\r
+ String sub;\r
+ try {\r
+ Statement s = mod.second;\r
+ sub = NameUtils.getSafeName(graph, s.getSubject());\r
+ String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+ String obj = NameUtils.getSafeName(graph, s.getObject());\r
+ if (map.containsRight(s)) {\r
+ index = indices.get(map.getLeft(s));\r
+ sb2.append("["+index + "] ");\r
+ }\r
+ sb2.append(sub + " - " + pre + " - " + obj);\r
+ sb2.append(" ["+s.getSubject().getResourceId() + " " + s.getPredicate().getResourceId() + " " + s.getObject().getResourceId()+"]");\r
+ sb2.append("\n");\r
+ } catch (ValidationException e) {\r
+ e.printStackTrace();\r
+ } catch (ServiceException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ for (Statement s : changes.getDeletions()) {\r
String sub;\r
try {\r
\r
- sub = GraphUtils.getReadableName(graph, s.getSubject());\r
- String pre = GraphUtils.getReadableName(graph, s.getPredicate());\r
- String obj = GraphUtils.getReadableName(graph, s.getObject());\r
+ sub = NameUtils.getSafeName(graph, s.getSubject());\r
+ String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+ String obj = NameUtils.getSafeName(graph, s.getObject());\r
if (map.containsLeft(s)) {\r
index++;\r
indices.put(s, index);\r
}\r
\r
}\r
- final StringBuilder sb2 = new StringBuilder();\r
- for (Statement s : comparator.getChanges2()) {\r
+ \r
+ for (Statement s : changes.getAdditions()) {\r
String sub;\r
try {\r
- sub = GraphUtils.getReadableName(graph, s.getSubject());\r
- String pre = GraphUtils.getReadableName(graph, s.getPredicate());\r
- String obj = GraphUtils.getReadableName(graph, s.getObject());\r
+ sub = NameUtils.getSafeName(graph, s.getSubject());\r
+ String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+ String obj = NameUtils.getSafeName(graph, s.getObject());\r
if (map.containsRight(s)) {\r
index = indices.get(map.getLeft(s));\r
sb2.append("["+index + "] ");\r
@Override\r
public String perform(ReadGraph graph)\r
throws DatabaseException {\r
- return GraphUtils.getReadableName(graph, r);\r
+ return NameUtils.getSafeName(graph, r);\r
}\r
}));\r
} catch (DatabaseException e) {\r