package org.deviceconnect.android.manager.util; public class VersionName implements Comparable { private final int[] mVersion; private final String mExpression; private VersionName(final int[] version) { mVersion = version; StringBuilder exp = new StringBuilder(); for (int i = 0; i < mVersion.length; i++) { if (i > 0) { exp.append("."); } exp.append(Integer.toString(mVersion[i])); } mExpression = exp.toString(); } public static VersionName parse(final String versionName) { if (versionName == null) { return null; } String[] array = versionName.split("\\."); if (array.length != 3) { return null; } try { int[] version = new int[array.length]; for (int i = 0; i < version.length; i++) { version[i] = Integer.parseInt(array[i]); if (version[i] < 0) { return null; } } return new VersionName(version); } catch (NumberFormatException e) { return null; } } @Override public boolean equals(final Object o) { if (this == o) { return true; } if (!(o instanceof VersionName)) { return false; } return this.compareTo(o) == 0; } @Override public int compareTo(final Object another) { VersionName that = (VersionName) another; for (int i = 0; i < mVersion.length; i++) { if (mVersion[i] > that.mVersion[i]) { return 1; } else if (mVersion[i] < that.mVersion[i]) { return -1; } } return 0; } @Override public String toString() { return mExpression; } }