SimpleIdGenerator.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:1k
源码类别:

Java编程

开发平台:

Java

  1. package com.borland.training.meetings.entities;
  2. import java.security.SecureRandom;
  3. // This class implements a simple primary key generator.
  4. // A generated primary key is a concatenation of the current time in milliseconds
  5. // and a random number.
  6. public class SimpleIdGenerator implements IdGenerator {
  7.   private static SimpleIdGenerator instance = null;
  8.   private SecureRandom secureRandom;
  9.   private SimpleIdGenerator() {
  10.     try {
  11.       secureRandom = SecureRandom.getInstance("SHA1PRNG");
  12.     }
  13.     catch (java.security.NoSuchAlgorithmException e) {
  14.       System.err.println("PRNG algorithm not available");
  15.     }
  16.   }
  17.   public static SimpleIdGenerator getInstance() {
  18.     if(instance == null) {
  19.       instance = new SimpleIdGenerator();
  20.     }
  21.     return instance;
  22.   }
  23.   public long generateId() {
  24.     int random = secureRandom.nextInt();
  25.     long timeNow = System.currentTimeMillis();
  26.     int timeLow = (int) timeNow & 0xFFFFFFFF;
  27.     if(timeLow < 0) timeLow = timeLow * -1;
  28.     long highId = random;
  29.     highId = highId << 32;
  30.     long lowId = timeLow;
  31.     long id = lowId | highId;
  32.     return id;
  33.   }
  34. }