]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/ResourceNameComparator.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / report / templates / ResourceNameComparator.java
1 package org.simantics.document.linking.report.templates;
2
3 import java.util.Comparator;
4 import java.util.List;
5
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.document.linking.utils.SourceLinkUtil;
11 import org.simantics.layer0.Layer0;
12 import org.simantics.utils.strings.AlphanumComparator;
13
14
15 class ResourceNameComparator implements Comparator<Resource> {
16         protected ReadGraph graph;
17         protected Layer0 l0;
18         protected Resource model;
19         
20         public ResourceNameComparator(ReadGraph graph, Resource model) {
21                 this.graph = graph;
22                 this.l0 = Layer0.getInstance(graph);
23                 this.model = model;
24         }
25         
26         @Override
27         public int compare(Resource r1, Resource r2) {
28                 if (r1.equals(r2))
29                         return 0;
30                 try {
31                         String l1 = getText(r1);
32                         String l2 = getText(r2);
33                         int c = AlphanumComparator.COMPARATOR.compare(l1, l2);
34                         if (c == 0) {
35                                 if (r1.getResourceId() > r2.getResourceId())
36                                         return 1;
37                                 if (r1.getResourceId() < r2.getResourceId())
38                                         return -1;
39                                 return 0;
40                         }
41                         return c;
42                 } catch (DatabaseException e) {
43                         return 0;
44                 }
45                 
46         }
47         
48         public String getText(Resource r) throws DatabaseException {
49                 String l1 = NameUtils.getSafeLabel(graph, r);
50                 if (l1.length() == 0)
51                         l1 = NameUtils.getSafeName(graph, r);
52                 return l1;
53         }
54         
55         public List<Resource> getPath(Resource obj) throws DatabaseException {
56                 return SourceLinkUtil.getPath(graph, model, obj);
57         }
58 }