package org.jivesoftware.spark.plugin; import org.jivesoftware.spark.util.log.Log; public class PluginDependency { private String name; private String version; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public boolean compareVersion(String version) { if(version != null && getVersion() != null) { String checkVersion[] = version.split("\\."); String originalVersion[] = getVersion().split("\\."); int maxlength = (originalVersion.length >= checkVersion.length)?originalVersion.length:checkVersion.length; // go through all Version-parts for(int i= 0; i < maxlength; i++) { // if the checked version is too short if ( checkVersion.length <= i && originalVersion[i].equals(0)) return true; else if (checkVersion.length <= i) return false; // if the original version is long enough if(originalVersion.length > i) { // convert to integer try { int originalVersNumber = Integer.valueOf(originalVersion[i]).intValue(); int checkVersNumber = Integer.valueOf(checkVersion[i]).intValue(); // check the numbers if(checkVersNumber > originalVersNumber) { return true; } else if(checkVersNumber < originalVersNumber) { return false; } } catch(Exception e) { Log.error("Version " + checkVersion + " contains letters.", e); return false; } } else { return true; } } return true; } return false; } }