Преглед на файлове

[공통][New] Version String Compare

hyodong.min преди 7 години
родител
ревизия
3bf9fa030c
променени са 1 файла, в които са добавени 77 реда и са изтрити 0 реда
  1. 77 0
      app/src/main/java/kr/co/zumo/app/lifeplus/util/Version.java

+ 77 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/util/Version.java

@@ -0,0 +1,77 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.util;
+
+/**
+ * Version
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 10. 29.]   [최초 작성]
+ * @since 2018. 10. 29.
+ */
+public class Version implements Comparable<Version> {
+
+  private String version;
+
+  public final String get() {
+    return this.version;
+  }
+
+  public Version(String version) {
+    if (version == null) {
+      throw new IllegalArgumentException("Version can not be null");
+    }
+    if (!version.matches("[0-9]+(\\.[0-9]+)*")) {
+      throw new IllegalArgumentException("Invalid version format");
+    }
+    this.version = version;
+  }
+
+  /**
+   * Version String 비교
+   *
+   * @param that
+   * @return 0: 같음, 1: this 가 큼, -1: that 이 큼
+   */
+  @Override
+  public int compareTo(Version that) {
+    if (that == null) {
+      return 1;
+    }
+    String[] thisParts = this.get().split("\\.");
+    String[] thatParts = that.get().split("\\.");
+    int length = Math.max(thisParts.length, thatParts.length);
+    for (int i = 0; i < length; i++) {
+      int thisPart = i < thisParts.length ?
+        Integer.parseInt(thisParts[i]) : 0;
+      int thatPart = i < thatParts.length ?
+        Integer.parseInt(thatParts[i]) : 0;
+      if (thisPart < thatPart) {
+        return -1;
+      }
+      if (thisPart > thatPart) {
+        return 1;
+      }
+    }
+    return 0;
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (this == that) {
+      return true;
+    }
+    if (that == null) {
+      return false;
+    }
+    if (this.getClass() != that.getClass()) {
+      return false;
+    }
+    return this.compareTo((Version) that) == 0;
+  }
+
+}