1 package org.simantics.document.linking.report.templates;
3 import java.util.Comparator;
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.common.utils.NameUtils;
9 import org.simantics.db.exception.DatabaseException;
10 import org.simantics.utils.strings.AlphanumComparator;
12 public class PathComparator implements Comparator<List<Resource>>{
14 private ReadGraph graph;
16 public PathComparator(ReadGraph graph) {
21 public int compare(List<Resource> o1, List<Resource> o2) {
22 int common = Math.min(o1.size(), o2.size());
23 for (int i = 0; i < common; i++) {
24 if (o1.get(i).equals(o2.get(i)))
27 Resource r1 = o1.get(i);
28 Resource r2 = o2.get(i);
29 String l1 = getText(r1);
30 String l2 = getText(r2);
31 int c = AlphanumComparator.COMPARATOR.compare(l1, l2);
33 if (r1.getResourceId() > r2.getResourceId())
35 if (r1.getResourceId() < r2.getResourceId())
40 } catch (DatabaseException e) {
44 return o1.size() - o2.size();
47 public String getText(Resource r) throws DatabaseException {
48 String l1 = NameUtils.getSafeLabel(graph, r);
50 l1 = NameUtils.getSafeName(graph, r);