]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeComparator.java
Adapt refactoring (remove APIs from argeo.util)
[gpl/argeo-slc.git] / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / controllers / DistTreeComparator.java
1 package org.argeo.slc.client.ui.dist.controllers;
2
3 import org.argeo.slc.client.ui.dist.model.DistParentElem;
4 import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem;
5 import org.argeo.slc.client.ui.dist.model.RepoElem;
6 import org.argeo.slc.client.ui.dist.model.WkspGroupElem;
7 import org.argeo.slc.client.ui.dist.model.WorkspaceElem;
8 import org.argeo.slc.client.ui.dist.utils.NameVersionComparator;
9 import org.argeo.slc.client.ui.dist.utils.VersionComparator;
10 import org.eclipse.jface.viewers.Viewer;
11 import org.eclipse.jface.viewers.ViewerComparator;
12
13 /** Specific comparator to enhance Distribution tree browsers */
14 public class DistTreeComparator extends ViewerComparator {
15 private static final long serialVersionUID = -7386716562202568704L;
16
17 private VersionComparator vc = new VersionComparator();
18 private NameVersionComparator nvc = new NameVersionComparator();
19
20 public int category(Object element) {
21 if (element instanceof RepoElem)
22 if (((RepoElem) element).inHome())
23 // Home repository always first
24 return 2;
25 else
26 return 5;
27 else if (element instanceof WkspGroupElem)
28 return 10;
29 else if (element instanceof WorkspaceElem)
30 return 15;
31 else
32 return 20;
33 }
34
35 public int compare(Viewer viewer, Object e1, Object e2) {
36 int cat1 = category(e1);
37 int cat2 = category(e2);
38
39 if (cat1 != cat2) {
40 return cat1 - cat2;
41 }
42
43 String s1, s2;
44
45 if (e1 instanceof DistParentElem) {
46 s1 = ((DistParentElem) e1).getName();
47 s2 = ((DistParentElem) e2).getName();
48 } else {
49 s1 = e1.toString();
50 s2 = e2.toString();
51 }
52
53 if (e1 instanceof WorkspaceElem)
54 // Reverse order for nameversions
55 return nvc.compare(viewer, s2, s1);
56 else if (e1 instanceof ModularDistVersionElem)
57 // Reverse order for versions
58 return vc.compare(viewer, s2, s1);
59 else
60 return s1.compareTo(s2);
61 }
62 }