1 25 package org.jresearch.gossip.dao.drivers.keygen; 26 27 import java.sql.Connection ; 28 import java.sql.ResultSet ; 29 import java.sql.SQLException ; 30 import java.sql.Statement ; 31 import java.util.HashMap ; 32 import java.util.Map ; 33 34 40 public class SequenceKeyGenerator implements KeyGenerator { 41 static Map sequenceDefs = new HashMap (); 42 43 static { 44 SequenceKeyGenerator.sequenceDefs.put( 45 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_MESSAGE][0], 46 "SELECT JRF_KEY_MESSAGE_SEQ.NEXTVAL FROM DUAL"); 47 SequenceKeyGenerator.sequenceDefs.put( 48 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_THREAD][0], 49 "SELECT JRF_KEY_THREAD_SEQ.NEXTVAL FROM DUAL)"); 50 SequenceKeyGenerator.sequenceDefs.put( 51 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_USER][0], 52 "SELECT JRF_KEY_USER_SEQ.NEXTVAL FROM DUAL"); 53 SequenceKeyGenerator.sequenceDefs.put( 54 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_WHOIS][0], 55 "SELECT JRF_KEY_WHOIS_SEQ.NEXTVAL FROM DUAL"); 56 SequenceKeyGenerator.sequenceDefs.put( 57 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_FORUM][0], 58 "SELECT JRF_KEY_FORUM_SEQ.NEXTVAL FROM DUAL"); 59 SequenceKeyGenerator.sequenceDefs.put( 60 IKeyGenConst.KEY_NAMES[IKeyGenConst.KEY_GROUP][0], 61 "SELECT JRF_KEY_GROUP_SEQ.NEXTVAL FROM DUAL"); 62 } 63 64 public boolean isBeforeInsert() { 65 return true; 66 } 67 68 80 public Object generateKey(String [] primaryKeyName, Connection conn) 81 throws SQLException { 82 Object identity; 83 ResultSet rs = null; 84 ; 85 Statement stmt = null; 86 final String tableName = primaryKeyName[0]; 87 88 try { 89 String sql = (String ) SequenceKeyGenerator.sequenceDefs 92 .get(tableName); 93 stmt = conn.createStatement(); 94 rs = stmt.executeQuery(sql); 95 if (rs.next()) { 96 identity = rs.getObject(1); 97 } else 98 throw new SQLException ("persist.sequenceKeyGenFailed"); 99 } finally { 100 try { 101 if (rs != null) 102 rs.close(); 103 stmt.close(); 104 } catch (SQLException excep) { 105 106 } finally { 107 rs = null; 108 stmt = null; 109 } 110 } 111 return identity; 112 } 113 114 } 115 | Popular Tags |