summaryrefslogtreecommitdiffstats
path: root/common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java
diff options
context:
space:
mode:
authorMichael Lando <ml636r@att.com>2017-06-09 03:19:04 +0300
committerMichael Lando <ml636r@att.com>2017-06-09 03:19:04 +0300
commited64b5edff15e702493df21aa3230b81593e6133 (patch)
treea4cb01fdaccc34930a8db403a3097c0d1e40914b /common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java
parent280f8015d06af1f41a3ef12e8300801c7a5e0d54 (diff)
[SDC-29] catalog 1707 rebase commit.
Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1 Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java')
-rw-r--r--common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java43
1 files changed, 36 insertions, 7 deletions
diff --git a/common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java b/common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java
index 54a55811e3..8ad45a31f1 100644
--- a/common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java
+++ b/common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java
@@ -24,19 +24,15 @@ import org.openecomp.sdc.common.api.Constants;
public class CommonBeUtils {
/**
- * Compares two ASDC versions of a component. It's for internal usage, so
- * the assumption is that the versions are in valid format.
+ * Compares two ASDC versions of a component. It's for internal usage, so the assumption is that the versions are in valid format.
*
* @param firstVersion
* - version in format major.minor or just major (e.g, 2.0 or 2)
* @param secondVersion
* - version in format major.minor or just major (e.g, 2.0 or 2)
* @return Returns true iff:<br>
- * 1) first version's major number is higher than second's (e.g.,
- * firstVersion = 1.1, secondVersion = 0.3)<br>
- * 2) major version are equal, but first's minor version is higher
- * than second's (e.g., firstVersion = 0.10, secondVersion = 0.9)
- * <br>
+ * 1) first version's major number is higher than second's (e.g., firstVersion = 1.1, secondVersion = 0.3)<br>
+ * 2) major version are equal, but first's minor version is higher than second's (e.g., firstVersion = 0.10, secondVersion = 0.9) <br>
*/
public static boolean compareAsdcComponentVersions(String firstVersion, String secondVersion) {
String[] firstVersionNums = firstVersion.split("\\.");
@@ -54,6 +50,39 @@ public class CommonBeUtils {
}
}
+
+ /**
+ * Compares two version strings.
+ *
+ * Use this instead of String.compareTo() for a non-lexicographical
+ * comparison that works for version strings. e.g. "1.10".compareTo("1.6").
+ *
+ * @note It does not work if "1.10" is supposed to be equal to "1.10.0".
+ *
+ * @param str1 a string of ordinal numbers separated by decimal points.
+ * @param str2 a string of ordinal numbers separated by decimal points.
+ * @return The result is a negative integer if str1 is _numerically_ less than str2.
+ * The result is a positive integer if str1 is _numerically_ greater than str2.
+ * The result is zero if the strings are _numerically_ equal.
+ */
+ public static int conformanceLevelCompare(String str1, String str2) {
+ String[] vals1 = str1.split("\\.");
+ String[] vals2 = str2.split("\\.");
+ int i = 0;
+ // set index to first non-equal ordinal or length of shortest version string
+ while (i < vals1.length && i < vals2.length && vals1[i].equals(vals2[i])) {
+ i++;
+ }
+ // compare first non-equal ordinal number
+ if (i < vals1.length && i < vals2.length) {
+ int diff = Integer.valueOf(vals1[i]).compareTo(Integer.valueOf(vals2[i]));
+ return Integer.signum(diff);
+ }
+ // the strings are equal or one string is a substring of the other
+ // e.g. "1.2.3" = "1.2.3" or "1.2.3" < "1.2.3.4"
+ return Integer.signum(vals1.length - vals2.length);
+ }
+
public static String generateToscaResourceName(String resourceType, String resourceSystemName) {
return Constants.USER_DEFINED_RESOURCE_NAMESPACE_PREFIX + resourceType.toLowerCase() + "." + resourceSystemName;
}