diff options
author | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
commit | ed64b5edff15e702493df21aa3230b81593e6133 (patch) | |
tree | a4cb01fdaccc34930a8db403a3097c0d1e40914b /common-be/src/main/java/org/openecomp/sdc/be/utils/CommonBeUtils.java | |
parent | 280f8015d06af1f41a3ef12e8300801c7a5e0d54 (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.java | 43 |
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; } |