text: package proj.zoie.perf.client;
  
  import java.util.Comparator;
  
  public class ZoiePerfVersion implements Comparable<ZoiePerfVersion> {
  
    public final long countVersion;
    public final long offsetVersion;
  
    ZoiePerfVersion(long v1, long v2) {
      countVersion = v1;
      offsetVersion = v2;
    }
  
    public static String toString(ZoiePerfVersion version) {
      return toString(version.countVersion, version.offsetVersion);
    }
  
    public static String toString(long count, long offset) {
      StringBuilder buf = new StringBuilder();
      buf.append(count).append(":").append(offset);
      return buf.toString();
    }
  
    public static ZoiePerfVersion fromString(String version) {
      long v1 = 0, v2 = 0;
  
      if (version != null && version.length() > 0) {
        String[] parts = version.split(":");
        v1 = Long.parseLong(parts[0]);
        v2 = Long.parseLong(parts[1]);
      }
      return new ZoiePerfVersion(v1, v2);
    }
  
    public static final Comparator<String> COMPARATOR = new ZoiePerfVersionComparator();
  
    private static class ZoiePerfVersionComparator implements Comparator<String> {
      @Override
      public int compare(String o1, String o2) {
        ZoiePerfVersion v1 = ZoiePerfVersion.fromString(o1);
        ZoiePerfVersion v2 = ZoiePerfVersion.fromString(o2);
        return v1.compareTo(v2);
      }
    }
  
    @Override
    public int compareTo(ZoiePerfVersion o) {
      if (offsetVersion == o.offsetVersion) return 0;
      if (offsetVersion < o.offsetVersion) return -1;
      return 1;
    }
  }
  