JDBC操作id(uuid.hex)自动生成类

package cn.createsoft.saas.util;

import java.net.InetAddress;

/**
* UUID.HEX生成器
*
* @author dengyang
* <br />
* 日期: Jun 10, 2010
* 时间: 7:47:49 AM
*/
public class UUIDHexGenerator {
private String sep = "";

private static final int IP;

private static short counter = (short) 0;

private static final int JVM = (int)(System.currentTimeMillis() >>> 8);

private static UUIDHexGenerator uuidgen = new UUIDHexGenerator();

static {

   int ipadd;
   try {
    ipadd = toInt(InetAddress.getLocalHost().getAddress());
   } catch (Exception e) {
    ipadd = 0;
   }
   IP = ipadd;
}

public static UUIDHexGenerator getInstance() {
   return uuidgen;
}

public static int toInt(byte[] bytes) {
   int result = 0;
   for (int i = 0; i < 4; i++) {
    result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
   }
   return result;
}

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();
}

protected int getJVM() {
   return JVM;
}

protected synchronized short getCount() {
   if (counter < 0) {
    counter = 0;
   }
   return counter++;
}

protected int getIP() {
   return IP;
}

protected short getHiTime() {
   return (short) (System.currentTimeMillis() >>> 32);
}

protected int getLoTime() {
   return (int) System.currentTimeMillis();
}

public String generate() {
   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 static void main(String[] str) {
   UUIDHexGenerator id = new UUIDHexGenerator();
   for (int i = 0; i <= 100; i++) {
    System.out.println(id.generate());
   }
   System.out.println("40288182291d1bf501291d1bf5be0000".length());
}

}

--调用uuid.hex生成类

/**
* 解析james过滤的邮件 保存收件到收件人垃圾箱中
*
* @param message
* @param tool
*/
public void saveMail(MimeMessage message, EmailTools tool,
    String userFolderId,String acceptor,String from) {
   PreparedStatement ps = null;
   ConnectDB conndb=null;
   Connection cn=null;
   try {
    conndb = new ConnectDB();
    cn = conndb.getConnection();
   } catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
   try {
    TrashMail2Chinese m2c = new TrashMail2Chinese();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    message.writeTo(bos);
    byte bMsg[] = bos.toByteArray();
    bos.close();
    String messageName = (new SimpleDateFormat("yyyyMMddHHmmssSSS"))
      .format(new Date());
    // 保存库中sql
    ps = cn
      .prepareStatement("insert into inbox(MESSAGE_NAME,REPOSITORY_NAME,MESSAGE_STATE,SENDER,RECIPIENTS,REMOTE_HOST,REMOTE_ADDR,LAST_UPDATED,MESSAGE_BODY,MESSAGE_ATTRIBUTES) "
        + " values(?,?,?,?,?,?,?,?,empty_Blob(),empty_Blob())");
    ps.setString(1, messageName);
    ps.setString(2, m2c.dealReceiveAddress(message.getFrom())
      .split("@")[0]);
    ps.setString(3, "root");
    ps.setString(4, from);
    ps.setString(5, acceptor);
    ps.setString(6, "localhost");
    ps.setString(7, "127.0.0.1");
    ps.setDate(8, new java.sql.Date((new Date()).getTime()));
    int num = ps.executeUpdate();
    // 查询邮件入库信息
    ps = cn
      .prepareStatement("select MESSAGE_BODY,MESSAGE_ATTRIBUTES from inbox where MESSAGE_NAME = ? for update");
    ps.setString(1, messageName);
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
     Blob blob = (Blob) rs.getBlob("MESSAGE_BODY");
     blob.setBytes(1, bMsg);
     Blob blob2 = (Blob) rs.getBlob("MESSAGE_ATTRIBUTES");
     blob2.setBytes(1, bMsg);
     // 更新邮件,邮件内容Blob 更新入库
     ps = cn.prepareStatement("update inbox set MESSAGE_BODY=? ,MESSAGE_ATTRIBUTES = ? where MESSAGE_NAME = ?");
     ps.setBlob(1, blob);
     ps.setBlob(2, blob2);
     ps.setString(3, messageName);
     ps.executeUpdate();
    }
    // 把邮件存入用户"垃圾邮件"文件夹中
    if (null != userFolderId && null != messageName) {
     UUIDHexGenerator uuid = new UUIDHexGenerator();
     ps = cn
       .prepareStatement("insert into cs_oa_mail_folder_msg(id,folder_id,mail_number) values(?,?,?)");
     ps.setString(1, uuid.generate());
     ps.setString(2, userFolderId);
     ps.setString(3, messageName);
     int r =ps.executeUpdate();
    }
    cn.commit();
   } catch (Exception e) {
    e.printStackTrace();
   } finally {
    try {
     if (ps != null) {
      ps.close();
     }
     if (!cn.isClosed())
      conndb.closeConnection();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值