diff options
Diffstat (limited to 'pdf-over-gui/src/main/java')
-rw-r--r-- | pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/VersionComparator.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/VersionComparator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/VersionComparator.java new file mode 100644 index 00000000..1437a4a3 --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/VersionComparator.java @@ -0,0 +1,101 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.utils; + +// Imports +import java.util.Comparator; + +/** + * + */ +public class VersionComparator implements Comparator<String> { + /* (non-Javadoc) + * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) + */ + @Override + public int compare(String v1, String v2) { + String[] v1Parts = v1.split("\\.|-"); //$NON-NLS-1$ + String[] v2Parts = v2.split("\\.|-"); //$NON-NLS-1$ + + int length = Math.max(v1Parts.length, v2Parts.length); + for (int i = 0; i < length; ++i) { + int v1Part = 0; + try { + if (i < v1Parts.length) + v1Part = Integer.parseInt(v1Parts[i]); + } catch (NumberFormatException e) { + if (v1Parts[i].equals("SNAPSHOT")) //$NON-NLS-1$ + v1Part = Integer.MAX_VALUE; + } + + int v2Part = 0; + try { + if (i < v2Parts.length) + v2Part = Integer.parseInt(v2Parts[i]); + } catch (NumberFormatException e) { + if (v2Parts[i].equals("SNAPSHOT")) //$NON-NLS-1$ + v2Part = Integer.MAX_VALUE; + } + + if (v1Part < v2Part) + return -1; + if (v1Part > v2Part) + return 1; + } + return 0; + } + + /** + * Compare two version strings (static version) + * @param v1 version 1 + * @param v2 version 2 + * @return -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2 + */ + public static int compare_s(String v1, String v2) { + VersionComparator vc = new VersionComparator(); + return vc.compare(v1, v2); + } + + /** + * Check two version strings for equality + * @param v1 version 1 + * @param v2 version 2 + * @return v1 == v2 + */ + public static boolean equals(String v1, String v2) { + return compare_s(v1, v2) == 0; + } + + /** + * Check two version strings for order + * @param v1 version 1 + * @param v2 version 2 + * @return v1 < v2 + */ + public static boolean before(String v1, String v2) { + return compare_s(v1, v2) < 0; + } + + /** + * Check two version strings for order + * @param v1 version 1 + * @param v2 version 2 + * @return v1 > v2 + */ + public static boolean after(String v1, String v2) { + return compare_s(v1, v2) > 0; + } +} |