--- /dev/null
+/*\r
+ * ============LICENSE_START========================================================================\r
+ * ONAP : tr-069-adapter\r
+ * =================================================================================================\r
+ * Copyright (C) 2020 CommScope Inc Intellectual Property.\r
+ * =================================================================================================\r
+ * This tr-069-adapter software file is distributed by CommScope Inc under the Apache License,\r
+ * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You\r
+ * may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\r
+ * either express or implied. See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ===============LICENSE_END=======================================================================\r
+ */\r
+\r
+package org.commscope.tr069adapter.common.deviceversion;\r
+\r
+import java.io.Serializable;\r
+import java.util.Comparator;\r
+\r
+public class DeviceVersion implements Serializable, Comparable<DeviceVersion> {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = -7251276716604249440L;\r
+ private int svMajorVersion = 0;\r
+ private int svMinorVersion = 0;\r
+ private int svPatchVersion = 0;\r
+ private String swVersion;\r
+ private boolean isGenericVersion = false;\r
+ private boolean isHwRegex = false;\r
+ private boolean isSwRegex = false;\r
+\r
+ public DeviceVersion(String swVersion, String hwVersion) {\r
+ super();\r
+ setSwVersion(swVersion);\r
+ this.hwVersion = hwVersion;\r
+ }\r
+\r
+ public DeviceVersion(String swVersion, String hwVersion, boolean isSwRegex,\r
+ boolean isHwRegex) {\r
+ super();\r
+ this.hwVersion = hwVersion;\r
+ this.swVersion = swVersion;\r
+ this.isHwRegex = isHwRegex;\r
+ this.isSwRegex = isSwRegex;\r
+ if (!isSwRegex) {\r
+ setSwVersion(swVersion);\r
+ }\r
+ }\r
+\r
+ public String getSwVersion() {\r
+ if (!isSwRegex)\r
+ return svMajorVersion + "." + svMinorVersion + "." + svPatchVersion;\r
+ else\r
+ return this.swVersion;\r
+ }\r
+\r
+ public boolean isHwRegex() {\r
+ return isHwRegex;\r
+ }\r
+\r
+ public boolean isSwRegex() {\r
+ return isSwRegex;\r
+ }\r
+\r
+ private void setSwVersion(String swVersion) {\r
+ if (swVersion.indexOf(".") > 0) {\r
+ String[] verArray = swVersion.split("\\.");\r
+\r
+ for (int i = 0; i < verArray.length; i++) {\r
+\r
+ if (verArray[i].equals("*")) {\r
+ verArray[i] = "0";\r
+ }\r
+ }\r
+ try {\r
+ svMajorVersion = Integer.parseInt(verArray[0]);\r
+ svMinorVersion = Integer.parseInt(verArray[1]);\r
+ svPatchVersion = Integer.parseInt(verArray[2]);\r
+ } catch (Exception e) {\r
+ // TODO: handle exception\r
+ }\r
+\r
+ } else if (swVersion.indexOf("x") > 0) {\r
+ swVersion = "*";\r
+ } else if (swVersion.equals("*")) {\r
+ isGenericVersion = true;\r
+ }\r
+\r
+ }\r
+\r
+ public String getHwVersion() {\r
+ return hwVersion;\r
+ }\r
+\r
+ private String hwVersion;\r
+\r
+ public int getSvMajorVersion() {\r
+ return svMajorVersion;\r
+ }\r
+\r
+ public int getSvMinorVersion() {\r
+ return svMinorVersion;\r
+ }\r
+\r
+ public int getSvPatchVersion() {\r
+ return svPatchVersion;\r
+ }\r
+\r
+ private long deviceTypeId;\r
+\r
+ public long getDeviceTypeId() {\r
+ return deviceTypeId;\r
+ }\r
+\r
+ public boolean isGenericVersion() {\r
+ return isGenericVersion;\r
+ }\r
+\r
+ public static Comparator<DeviceVersion> softwareComparator = new Comparator<DeviceVersion>() {\r
+ @Override\r
+ public int compare(DeviceVersion d1, DeviceVersion d2) {\r
+ if (d1.getSvMajorVersion() != d2.getSvMajorVersion()) {\r
+ return (d1.getSvMajorVersion() - d2.getSvMajorVersion());\r
+ } else if (d1.getSvMinorVersion() != d2.getSvMinorVersion()) {\r
+ return d1.getSvMinorVersion() - d2.getSvMinorVersion();\r
+ } else\r
+ return d1.getSvPatchVersion() - d2.getSvPatchVersion();\r
+ }\r
+ };\r
+\r
+ @Override\r
+ public int compareTo(DeviceVersion o) {\r
+ if (deviceTypeId != o.deviceTypeId)\r
+ return -1;\r
+\r
+ if (isSwRegex) {\r
+ return this.hashCode() - o.hashCode();\r
+ } else {\r
+ if (svMajorVersion != o.svMajorVersion) {\r
+ return (svMajorVersion - o.svMajorVersion);\r
+ } else if (svMinorVersion != o.svMinorVersion) {\r
+ return svMinorVersion - o.svMinorVersion;\r
+ } else if (svPatchVersion != o.svPatchVersion) {\r
+ return svPatchVersion - o.svPatchVersion;\r
+ } else {\r
+ return hwVersion.compareToIgnoreCase(o.hwVersion);\r
+ }\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + (int) (deviceTypeId ^ (deviceTypeId >>> 32));\r
+ result = prime * result + ((hwVersion == null) ? 0 : hwVersion.hashCode());\r
+ result = prime * result + (isGenericVersion ? 1231 : 1237);\r
+ result = prime * result + (isHwRegex ? 1231 : 1237);\r
+ result = prime * result + (isSwRegex ? 1241 : 1247);\r
+ result = prime * result + svMajorVersion;\r
+ result = prime * result + svMinorVersion;\r
+ result = prime * result + svPatchVersion;\r
+ return result;\r
+ }\r
+}\r