package org.treeleafj.xmax.safe;

/**
 * ID工具
 * <p>
 * Created by leaf on 2016/2/19.
 */
public abstract class ID {

    private static Sequence sequence = new Sequence();

    /**
     * 生成一个有序,分布式唯一,且24位长度的id(只包含数字和字母,字母都为小写字母)
     *
     * @return
     */
    public static String get() {
        return org.apache.commons.codec.binary.Hex.encodeHexString(ObjectId.get().toByteArray());
    }

    /**
     * 生成一个有序,分布式唯一,且16位长度的短id(url安全的,区分大小写,包含"-")
     *
     * @return
     */
    public static String getShort() {
        return Base64.encodeURLSafe(ObjectId.get().toByteArray());
    }

    /**
     * 18位ID
     * <p>
     * <p>
     * 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。 <br>
     * 优化开源项目 http://git.oschina.net/yu120/sequence
     * </p>
     *
     * @author hubin
     */
    public static long getSequence() {
        return sequence.nextId();
    }

    /**
     * 18位ID
     * <p>
     * <p>
     * 高效GUID产生算法(sequence),基于Snowflake实现64位自增ID算法。 <br>
     * 优化开源项目 http://git.oschina.net/yu120/sequence
     * </p>
     *
     * @author hubin
     */
    public static String getSequenceString() {
        return String.valueOf(getSequence());
    }
}

@@ -167,16 +167,90 @@
 nce();%0A%0A
+    /**%0A     * %E7%94%9F%E6%88%90%E7%9A%84ID%E7%9A%84%E5%90%8E%E7%BC%80%0A     */%0A    private static String SUFFIX = null;%0A%0A
     /**%0A
@@ -298,16 +298,16 @@
 %E9%83%BD%E4%B8%BA%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D)%0A
-
      *%0A 
@@ -679,32 +679,43 @@
 /**%0A     * 18%E4%BD%8DID
+(%E5%A6%82%E6%9E%9C%E4%B8%8D%E6%8C%87%E5%AE%9A%E5%90%8E%E7%BC%80%E7%9A%84%E8%AF%9D)
 %0A     * %3Cp%3E%0A    
@@ -1201,24 +1201,58 @@
 eString() %7B%0A
+        if (SUFFIX != null) %7B%0A    
         retu
@@ -1283,16 +1283,166 @@
 uence())
+ + SUFFIX;%0A        %7D%0A        return String.valueOf(getSequence());%0A    %7D%0A%0A    public static void setSuffix(String suffix) %7B%0A        ID.SUFFIX = suffix
 ;%0A    %7D%0A

扩展ID生成规则,支持增加后缀