From 667c79c1aa111f7551f993b36cdd73cf285596e4 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 13 Oct 2019 15:05:37 +0200 Subject: [PATCH] add program --- java-cli.iml | 12 +++++ src/com/company/Main.java | 32 +++++++++++ src/com/company/Version.java | 100 +++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 java-cli.iml create mode 100644 src/com/company/Main.java create mode 100644 src/com/company/Version.java diff --git a/java-cli.iml b/java-cli.iml new file mode 100644 index 0000000..d5c0743 --- /dev/null +++ b/java-cli.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/com/company/Main.java b/src/com/company/Main.java new file mode 100644 index 0000000..ab28ec3 --- /dev/null +++ b/src/com/company/Main.java @@ -0,0 +1,32 @@ +package com.company; + +public class Main { + + public static void main(String[] args) { + + //supported versions; + String latest_version = "1.9.4"; + String min_version = "1.8.3"; + + + System.out.println("\nMinimum Requred Version: " + min_version + " | Latest Stable Version: " + latest_version + "\n"); + + + System.out.println("Test Versions ..."); + Version.result A = Version.check(min_version,latest_version,"1.9.4"); + Version.result B = Version.check(min_version,latest_version,"1.10.0+dev-414-gf1fdd782d"); + Version.result C = Version.check(min_version,latest_version,"no-version-at-all"); + Version.result D = Version.check(min_version,latest_version,"1.8.1"); + Version.result E = Version.check(min_version,latest_version,"1.10.0"); + + System.out.println("1.9.4 = " + A.name()); + System.out.println("1.10.0+dev-414-gf1fdd782d = " + B.name()); + System.out.println("-no-version-at-all- = " + C.name()); + System.out.println("1.8.1 = " + D.name()); + System.out.println("1.10.0 = " + E.name()); + + System.out.println("..."); + + + } +} diff --git a/src/com/company/Version.java b/src/com/company/Version.java new file mode 100644 index 0000000..375a945 --- /dev/null +++ b/src/com/company/Version.java @@ -0,0 +1,100 @@ +package com.company; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Version { + public enum result{ + UNKNOWN, + SUPPORTED_LATEST, + SUPPORTED_OLD, + DEVELOPMENT, + UNSUPPORTED_OLD, + UNSUPPORTED_NEW + } + + + public static result check(String min, String last, String value) { + + final Pattern pattern_stable_release = Pattern.compile("^(\\d)\\.(\\d+)\\.(\\d+)$"); + final Pattern pattern_dev_release = Pattern.compile("^(\\d).(\\d+).(\\d+)(\\D)(.+)"); + Matcher m ; + + m = pattern_stable_release.matcher(value); + if (m.find()) { + + switch (correlate(min, last, m.group())){ + case 0: + return result.UNSUPPORTED_OLD; + case 1: + return result.SUPPORTED_OLD; + case 2: + return result.SUPPORTED_LATEST; + default: + return result.UNSUPPORTED_NEW; + } + + } + m = pattern_dev_release.matcher(value); + if (m.find()) { + + m = Pattern.compile("^(\\d)\\.(\\d+)\\.(\\d+)").matcher(value); + m.find(); + + if (correlate(min, last, m.group())>0) { + return result.DEVELOPMENT; + } else { + return result.UNSUPPORTED_OLD; + } + + } + + return result.UNKNOWN; + + } + + //helper + // 0 to less + // 1 in spectrum + // 2 at the top + // 3 above + private static int correlate(String min, String last, String value){ + //init + int i_min = 0, i_last = 0, i_value = 0; + + while (value.indexOf(".")>0) { + + //prepare for checks + if (min.indexOf(".") >= 0) i_min = Integer.valueOf(min.substring(0,min.indexOf("."))); + if (last.indexOf(".") >= 0) i_last = Integer.valueOf(last.substring(0,last.indexOf("."))); + if (value.indexOf(".") >= 0) i_value = Integer.valueOf(value.substring(0,value.indexOf("."))); + + + if ( i_min != i_last ) { + //check + if (i_value < i_min) return 0; + if (i_value > i_last) return 3; + } + + //prepare for next checks + if (min.indexOf(".") < 0) return 0; + + min = min.substring(min.indexOf(".")+1); + last = last.substring(last.indexOf(".")+1); + value = value.substring(value.indexOf(".")+1); + + } + + i_min = Integer.valueOf(min); + i_last = Integer.valueOf(last); + i_value = Integer.valueOf(value); + + if (i_value < i_min) return 0; + if (i_min < i_value && i_value < i_last) return 1; + if (i_value == i_last) return 2; + if (i_value > i_last) return 3; + + + return 0; + } +}