summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2019-04-05 04:51:42 +0000
committerliamfallon <liam.fallon@est.tech>2019-04-05 04:51:42 +0000
commit7825f3af14dfb087c9039c17be100ee7214ed560 (patch)
tree659a5522cfebf017c64ae50098f973738c9c7a11
parent2128942b95031180c9fab063fb43b8a710d1cdfe (diff)
Add string constructor to Version class
Issue-ID: POLICY-1095 Change-Id: Ib0d2c778f3e8dc5e52369e43b98249ed426fc14a Signed-off-by: liamfallon <liam.fallon@est.tech>
-rw-r--r--utils/src/main/java/org/onap/policy/common/utils/validation/Version.java42
1 files changed, 30 insertions, 12 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/validation/Version.java b/utils/src/main/java/org/onap/policy/common/utils/validation/Version.java
index b5769948..d8106ec6 100644
--- a/utils/src/main/java/org/onap/policy/common/utils/validation/Version.java
+++ b/utils/src/main/java/org/onap/policy/common/utils/validation/Version.java
@@ -25,13 +25,14 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import lombok.Data;
import lombok.NoArgsConstructor;
+import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Version of an object within the model. Versions are assumed to be of the form: major or
- * major.minor.patch, where each component is numeric.
+ * Version of an object within the model. Versions are assumed to be of the form: major or major.minor.patch, where each
+ * component is numeric.
*/
@Data
@RequiredArgsConstructor
@@ -40,8 +41,7 @@ public class Version implements Comparable<Version> {
private static final Logger logger = LoggerFactory.getLogger(Version.class);
/**
- * Pattern to match a version of the form, major or major.minor.patch, where all
- * components are numeric.
+ * Pattern to match a version of the form, major or major.minor.patch, where all components are numeric.
*/
private static final Pattern VERSION_PAT = Pattern.compile("(\\d+)([.](\\d+)[.](\\d+))?");
@@ -56,9 +56,8 @@ public class Version implements Comparable<Version> {
* @param type type of object with which the version is associated, used when logging
* @param name name with which the version is associated, used when logging
* @param versionText the version, in textual form
- * @return a new version, or {@code null} if the version cannot be created from the
- * key (e.g., the key has a version that does not match the major.minor.patch
- * form)
+ * @return a new version, or {@code null} if the version cannot be created from the key (e.g., the key has a version
+ * that does not match the major.minor.patch form)
*/
public static Version makeVersion(String type, String name, String versionText) {
Matcher matcher = VERSION_PAT.matcher(versionText);
@@ -75,7 +74,7 @@ public class Version implements Comparable<Version> {
} else {
// form: major.minor.patch
return new Version(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(3)),
- Integer.parseInt(matcher.group(4)));
+ Integer.parseInt(matcher.group(4)));
}
} catch (NumberFormatException e) {
@@ -85,10 +84,29 @@ public class Version implements Comparable<Version> {
}
/**
- * Generates a new version from the current version.
+ * String constructor.
*
- * @return a new version, of the form major.0.0, where "major" is one more than "this"
- * version's major number
+ * @param versionString the version string
+ */
+ public Version(@NonNull final String versionString) {
+ Version newVersion = makeVersion("String", "constructor", versionString);
+
+ if (newVersion != null) {
+ this.major = newVersion.major;
+ this.minor = newVersion.minor;
+ this.patch = newVersion.patch;
+ }
+ else {
+ this.major = 0;
+ this.minor = 0;
+ this.patch = 0;
+ }
+ }
+
+ /**
+ * Generates a new version from a string.
+ *
+ * @return a new version, of the form major.0.0, where "major" is one more than "this" version's major number
*/
public Version newVersion() {
return new Version(major + 1, 0, 0);
@@ -110,4 +128,4 @@ public class Version implements Comparable<Version> {
public String toString() {
return major + "." + minor + "." + patch;
}
-} \ No newline at end of file
+}