|
From: <caw...@us...> - 2007-06-19 14:13:41
|
Revision: 2629
http://svn.sourceforge.net/rubyeclipse/?rev=2629&view=rev
Author: cawilliams
Date: 2007-06-19 07:13:40 -0700 (Tue, 19 Jun 2007)
Log Message:
-----------
order versions properly (taking them as numbers into account, rather than just treating them as strings)
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/LogicalGem.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/LogicalGem.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/LogicalGem.java 2007-06-19 13:19:10 UTC (rev 2628)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/LogicalGem.java 2007-06-19 14:13:40 UTC (rev 2629)
@@ -1,6 +1,9 @@
package com.aptana.rdt.internal.core.gems;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Comparator;
+import java.util.List;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeSet;
@@ -31,12 +34,40 @@
public SortedSet<String> getVersions() {
String raw = getVersion().substring(1, getVersion().length() - 1);
- SortedSet<String> version = new TreeSet<String>();
+ SortedSet<String> version = new TreeSet<String>(new VersionComparator());
StringTokenizer tokenizer = new StringTokenizer(raw, ",");
while (tokenizer.hasMoreTokens()) {
version.add(tokenizer.nextToken().trim());
}
return version;
}
+
+ private class VersionComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ String v1 = (String) o1;
+ String v2 = (String) o2;
+
+ List<Integer> v1Parts = getParts(v1);
+ List<Integer> v2Parts = getParts(v2);
+ for (int i = 0; i <= 3; i++) {
+ Integer one = v1Parts.get(i);
+ Integer two = v2Parts.get(i);
+ int result = one.compareTo(two);
+ if (result != 0) return result;
+ }
+ return 0;
+ }
+
+ private List<Integer> getParts(String version) {
+ StringTokenizer tokenizer = new StringTokenizer(version, ".");
+ List<Integer> parts = new ArrayList<Integer>();
+ while (tokenizer.hasMoreTokens()) {
+ parts.add(Integer.parseInt(tokenizer.nextToken()));
+ }
+ return parts;
+ }
+
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|