/* * @(#)UUIDHexGenerator.java 2012-8-1 下午10:00:00 * * Copyright (c) 2011-2012 Makersoft.org all rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * */ package org.makersoft.shards.id.uuid; import java.io.Serializable; import org.apache.ibatis.session.SqlSession; /** * */ public class UUIDHexGenerator extends AbstractUUIDGenerator { private String sep = "/"; protected String format(int intval) { String formatted = Integer.toHexString(intval); StringBuffer buf = new StringBuffer("00000000"); buf.replace(8 - formatted.length(), 8, formatted); return buf.toString(); } protected String format(short shortval) { String formatted = Integer.toHexString(shortval); StringBuffer buf = new StringBuffer("0000"); buf.replace(4 - formatted.length(), 4, formatted); return buf.toString(); } public Serializable generate(SqlSession session, Object obj) { return new StringBuffer(36).append(format(getIP())).append(sep) .append(format(getJVM())).append(sep) .append(format(getHiTime())).append(sep) .append(format(getLoTime())).append(sep) .append(format(getCount())).toString(); } // public void configure(Type type, Properties params, Dialect d) { // sep = PropertiesHelper.getString("separator", params, ""); // } // public static void main(String[] args) throws Exception { // Properties props = new Properties(); // props.setProperty("separator", "/"); // IdentifierGenerator gen = new UUIDHexGenerator(); // ((Configurable) gen).configure(Hibernate.STRING, props, null); // IdentifierGenerator gen2 = new UUIDHexGenerator(); // ((Configurable) gen2).configure(Hibernate.STRING, props, null); // // for (int i = 0; i < 10; i++) { // String id = (String) gen.generate(null, null); // System.out.println(id); // String id2 = (String) gen2.generate(null, null); // System.out.println(id2); // } // // } }