Open Source Repository

Home /hibernate/hibernate-3.2.4.ga | Repository Home


org/hibernate/id/UUIDHexGenerator.java
//$Id: UUIDHexGenerator.java 8049 2005-08-30 23:28:50Z turin42 $
package org.hibernate.id;

import java.io.Serializable;
import java.util.Properties;

import org.hibernate.Hibernate;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.type.Type;
import org.hibernate.util.PropertiesHelper;

/**
 <b>uuid</b><br>
 <br>
 * A <tt>UUIDGenerator</tt> that returns a string of length 32,
 * This string will consist of only hex digits. Optionally,
 * the string may be generated with separators between each
 * component of the UUID.
 *
 * Mapping parameters supported: separator.
 *
 @author Gavin King
 */

public class UUIDHexGenerator extends AbstractUUIDGenerator implements Configurable {

  private String sep = "";

  protected String format(int intval) {
    String formatted = Integer.toHexString(intval);
    StringBuffer buf = new StringBuffer("00000000");
    buf.replace8-formatted.length()8, formatted );
    return buf.toString();
  }

  protected String format(short shortval) {
    String formatted = Integer.toHexString(shortval);
    StringBuffer buf = new StringBuffer("0000");
    buf.replace4-formatted.length()4, formatted );
    return buf.toString();
  }

  public Serializable generate(SessionImplementor session, Object obj) {
    return new StringBuffer(36)
      .appendformatgetIP() ) ).append(sep)
      .appendformatgetJVM() ) ).append(sep)
      .appendformatgetHiTime() ) ).append(sep)
      .appendformatgetLoTime() ) ).append(sep)
      .appendformatgetCount() ) )
      .toString();
  }

  public void configure(Type type, Properties params, Dialect d) {
    sep = PropertiesHelper.getString("separator", params, "");
  }

  public static void mainString[] args throws Exception {
    Properties props = new Properties();
    props.setProperty("separator""/");
    IdentifierGenerator gen = new UUIDHexGenerator();
    ( (Configurablegen ).configure(Hibernate.STRING, props, null);
    IdentifierGenerator gen2 = new UUIDHexGenerator();
    ( (Configurablegen2 ).configure(Hibernate.STRING, props, null);

    for int i=0; i<10; i++) {
      String id = (Stringgen.generate(null, null);
      System.out.println(id);
      String id2 = (Stringgen2.generate(null, null);
      System.out.println(id2);
    }

  }

}