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