package org.simantics.interop.test; import java.util.List; import java.util.Map.Entry; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.Statement; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.utils.datastructures.BijectionMap; import org.simantics.utils.datastructures.Pair; public class GraphChanges { private Resource r1; private Resource r2; private List deletions; private List additions; private List> modifications; private BijectionMap comparable; public GraphChanges(Resource r1, Resource r2, List deletions, List additions, List> modifications, BijectionMap comparable) { super(); this.r1 = r1; this.r2 = r2; this.deletions = deletions; this.additions = additions; this.modifications = modifications; this.comparable = comparable; } public Resource getResource1() { return r1; } public Resource getResource2() { return r2; } public List getAdditions() { return additions; } public List getDeletions() { return deletions; } public List> getModifications() { return modifications; } public BijectionMap getComparable() { return comparable; } public String toString(ReadGraph graph) throws DatabaseException { StringBuilder sb = new StringBuilder(); sb.append("Del:\n"); for (Statement stm : deletions) { sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ NameUtils.getSafeName(graph, stm.getPredicate()) + " " + NameUtils.getSafeName(graph, stm.getObject()) + " (" + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); } sb.append("Add:\n"); for (Statement stm : additions) { sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ NameUtils.getSafeName(graph, stm.getPredicate()) + " " + NameUtils.getSafeName(graph, stm.getObject()) + " (" + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); } sb.append("Mod:\n"); for (Pair mod :modifications) { { Statement stm = mod.first; sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ NameUtils.getSafeName(graph, stm.getPredicate()) + " " + NameUtils.getSafeName(graph, stm.getObject()) + " (" + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); } { Statement stm = mod.second; sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ NameUtils.getSafeName(graph, stm.getPredicate()) + " " + NameUtils.getSafeName(graph, stm.getObject()) + " (" + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); } } return sb.toString(); } public String comparableToString(ReadGraph graph) throws DatabaseException { StringBuilder sb = new StringBuilder(); sb.append("Comparable:\n"); for (Entry entry : comparable.getEntries()) { sb.append(NameUtils.getSafeName(graph, entry.getKey()) + " "+ NameUtils.getSafeName(graph, entry.getValue()) + " (" + entry.getKey() + " " +entry.getValue() + ")\n"); } return sb.toString(); } }