package org.jboss.windup.project.condition; /** * Object used to specify the version range * * @author <a href="mailto:mbriskar@gmail.com">Matej Briskar</a> * */ public class Version { private String from; private String to; public static Version fromVersion(String from) { Version v = new Version(); v.setFrom(from); return v; } public static Version toVersion(String to) { Version v = new Version(); v.setTo(to); return v; } public Version to(String to) { this.setTo(to); return this; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public boolean validate(String versionString) { boolean result = true; if (from != null) { result = result && firstVersionLesser(from, versionString); } if (to != null) { result = result && firstVersionLesser(versionString, to); } return result; } private boolean firstVersionLesser(String first, String second) { boolean firstLesser = false; for (int i = 0; i < second.length(); i++) { if (Character.isDigit(second.charAt(i))) { int numericValue = Character.getNumericValue(second.charAt(i)); if (!firstLesser && first != null && Character.isDigit(first.charAt(i))) { int firstInt = Character.getNumericValue(first.charAt(i)); if (firstInt < numericValue) { firstLesser = true; } if (!firstLesser && (firstInt > numericValue)) { return false; } } } } return true; } }