package org.simantics.interop.test; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.layer0.Layer0; /** * * Object comparator that uses type and name of objects to check if objects are comparable. * * Difference value is amount of properties that have different values. * * @author Marko Luukkainen * */ public class NameComparator extends TypeComparator { @Override public int compare(ReadGraph g, Resource o1, Resource o2) throws DatabaseException { if (!compareType(g,o1, o2)) { return Integer.MAX_VALUE; } Layer0 l0 = Layer0.getInstance(g); String n1 = g.getPossibleRelatedValue(o1, l0.HasName); String n2 = g.getPossibleRelatedValue(o2, l0.HasName); if (n1 != null && n2 != null) { if (!n1.equals(n2)) return Integer.MAX_VALUE; } else if (n1 == null && n2 == null) { } else { return Integer.MAX_VALUE; } return propsDiffCount(g,o1, o2); } }