aboutsummaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java
diff options
context:
space:
mode:
authorKenji Hosokawa <khosokawa@jp.adit-jv.com>2021-08-03 18:42:39 +0900
committerKenji Hosokawa <khosokawa@jp.adit-jv.com>2021-08-06 19:32:38 +0900
commitbe4f78978faba3d3ceb88df02a7f93a2e09ff1e0 (patch)
tree1f3f1a96251ac4f655c8a96fc33d5d4ee779cd06 /rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java
parent71ca7c6cab863767ef30c8bd05b2bbfda8731cb5 (diff)
Initial commit
Bug-AGL: SPEC-4033 Signed-off-by: Kenji Hosokawa <khosokawa@jp.adit-jv.com>
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java b/rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java
new file mode 100644
index 0000000..559e9d5
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/model/manager/GlobalIndexResourceSorter.java
@@ -0,0 +1,36 @@
+package rba.tool.editor.model.manager;
+
+import java.util.Comparator;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+
+public class GlobalIndexResourceSorter implements Comparator<Resource> {
+
+ int sort(URI o1, URI o2) {
+ /* first compare folder */
+ int size1 = o1.segmentCount() - 1;
+ int size2 = o2.segmentCount() - 1;
+ for (int i = 0; i < size1 && i < size2; i++) {
+ int result = o1.segment(i).toLowerCase().compareTo(o2.segment(i).toLowerCase());
+ if (result != 0) {
+ return result;
+ }
+ }
+
+ if (size1 == size2) {
+ /* order of name that last segment(file). */
+ return o1.lastSegment().toLowerCase().compareTo(o2.lastSegment().toLowerCase());
+ } else if (size1 > size2) {
+ /* prioritize folder over file */
+ return -1;
+ } else {
+ return 1;
+ }
+ }
+
+ @Override
+ public int compare(Resource o1, Resource o2) {
+ return sort(o1.getURI(), o2.getURI());
+ }
+}