From: Mailing l. f. C. c. m. <jtc...@li...> - 2007-01-30 07:24:22
|
Update of /cvsroot/jtcfrost/frost-wot/source/frost/storage/database/applayer In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv6305/source/frost/storage/database/applayer Modified Files: UnsentMessageDatabaseTable.java Log Message: new transaction Index: UnsentMessageDatabaseTable.java =================================================================== RCS file: /cvsroot/jtcfrost/frost-wot/source/frost/storage/database/applayer/UnsentMessageDatabaseTable.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** UnsentMessageDatabaseTable.java 5 Jan 2007 22:45:25 -0000 1.3 --- UnsentMessageDatabaseTable.java 30 Jan 2007 07:24:18 -0000 1.4 *************** *** 95,185 **** // insert msg and all attachments ! AppLayerDatabase db = AppLayerDatabase.getInstance(); ! PreparedStatement ps = db.prepareStatement( ! "INSERT INTO UNSENDMESSAGES ("+ ! "primkey,messageid,inreplyto,board,sendafter,idlinepos,idlinelen,fromname,subject,recipient,msgcontent," + ! "hasfileattachment,hasboardattachment,timeAdded"+ ! ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ! ! Long identity = null; ! Statement stmt = AppLayerDatabase.getInstance().createStatement(); ! ResultSet rs = stmt.executeQuery("select UNIQUEKEY('UNSENDMESSAGES')"); ! if( rs.next() ) { ! identity = new Long(rs.getLong(1)); ! } else { ! logger.log(Level.SEVERE,"Could not retrieve a new unique key!"); ! } ! rs.close(); ! stmt.close(); ! ! mo.setMsgIdentity(identity.longValue()); ! ! int i=1; ! ps.setLong(i++, mo.getMsgIdentity()); // primkey ! ps.setString(i++, mo.getMessageId()); // messageid ! ps.setString(i++, mo.getInReplyTo()); // inreplyto ! ps.setInt(i++, mo.getBoard().getPrimaryKey().intValue()); // board ! ps.setLong(i++, 0); // sendAfter ! ps.setInt(i++, mo.getIdLinePos()); // idLinePos ! ps.setInt(i++, mo.getIdLineLen()); // idLineLen ! ps.setString(i++, mo.getFromName()); // from ! ps.setString(i++, mo.getSubject()); // subject ! ps.setString(i++, mo.getRecipientName()); // recipient ! ps.setString(i++, mo.getContent()); // msgcontent ! ps.setBoolean(i++, (files.size() > 0)); // hasfileattachment ! ps.setBoolean(i++, (boards.size() > 0)); // hasboardattachment ! ps.setLong(i++, mo.getTimeAdded()); ! ! // sync to allow no updates until we got the generated identity ! int inserted = ps.executeUpdate(); ! ps.close(); ! ! if( inserted == 0 ) { ! logger.log(Level.SEVERE, "message insert returned 0 !!!"); ! return; ! } ! ! mo.setMsgIdentity(identity.longValue()); ! ! // attachments ! if( files.size() > 0 ) { ! PreparedStatement p = db.prepareStatement( ! "INSERT INTO UNSENDFILEATTACHMENTS"+ ! " (msgref,filename,filesize,filekey)"+ ! " VALUES (?,?,?,?)"); ! for(Iterator it=files.iterator(); it.hasNext(); ) { ! FileAttachment fa = (FileAttachment)it.next(); ! int ix=1; ! p.setLong(ix++, mo.getMsgIdentity()); ! p.setString(ix++, fa.getInternalFile().getPath()); ! p.setLong(ix++, fa.getSize().longValue()); ! p.setString(ix++, fa.getKey()); ! int ins = p.executeUpdate(); ! if( ins == 0 ) { ! logger.log(Level.SEVERE, "fileattachment insert returned 0 !!!"); } } ! p.close(); ! } ! if( boards.size() > 0 ) { ! PreparedStatement p = db.prepareStatement( ! "INSERT INTO UNSENDBOARDATTACHMENTS"+ ! " (msgref,boardname,boardpublickey,boardprivatekey,boarddescription)"+ ! " VALUES (?,?,?,?,?)"); ! for(Iterator it=boards.iterator(); it.hasNext(); ) { ! BoardAttachment ba = (BoardAttachment)it.next(); ! Board b = ba.getBoardObj(); ! int ix=1; ! p.setLong(ix++, mo.getMsgIdentity()); ! p.setString(ix++, b.getNameLowerCase()); ! p.setString(ix++, b.getPublicKey()); ! p.setString(ix++, b.getPrivateKey()); ! p.setString(ix++, b.getDescription()); ! int ins = p.executeUpdate(); ! if( ins == 0 ) { ! logger.log(Level.SEVERE, "boardattachment insert returned 0 !!!"); } } ! p.close(); } } --- 95,196 ---- // insert msg and all attachments ! Connection conn = AppLayerDatabase.getInstance().getPooledConnection(); ! try { ! conn.setAutoCommit(false); ! PreparedStatement ps = conn.prepareStatement( ! "INSERT INTO UNSENDMESSAGES ("+ ! "primkey,messageid,inreplyto,board,sendafter,idlinepos,idlinelen,fromname,subject,recipient,msgcontent," + ! "hasfileattachment,hasboardattachment,timeAdded"+ ! ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ! ! Long identity = null; ! Statement stmt = AppLayerDatabase.getInstance().createStatement(); ! ResultSet rs = stmt.executeQuery("select UNIQUEKEY('UNSENDMESSAGES')"); ! if( rs.next() ) { ! identity = new Long(rs.getLong(1)); ! } else { ! logger.log(Level.SEVERE,"Could not retrieve a new unique key!"); ! } ! rs.close(); ! stmt.close(); ! ! mo.setMsgIdentity(identity.longValue()); ! ! int i=1; ! ps.setLong(i++, mo.getMsgIdentity()); // primkey ! ps.setString(i++, mo.getMessageId()); // messageid ! ps.setString(i++, mo.getInReplyTo()); // inreplyto ! ps.setInt(i++, mo.getBoard().getPrimaryKey().intValue()); // board ! ps.setLong(i++, 0); // sendAfter ! ps.setInt(i++, mo.getIdLinePos()); // idLinePos ! ps.setInt(i++, mo.getIdLineLen()); // idLineLen ! ps.setString(i++, mo.getFromName()); // from ! ps.setString(i++, mo.getSubject()); // subject ! ps.setString(i++, mo.getRecipientName()); // recipient ! ps.setString(i++, mo.getContent()); // msgcontent ! ps.setBoolean(i++, (files.size() > 0)); // hasfileattachment ! ps.setBoolean(i++, (boards.size() > 0)); // hasboardattachment ! ps.setLong(i++, mo.getTimeAdded()); ! ! // sync to allow no updates until we got the generated identity ! int inserted = ps.executeUpdate(); ! ps.close(); ! ! if( inserted == 0 ) { ! logger.log(Level.SEVERE, "message insert returned 0 !!!"); ! return; ! } ! ! mo.setMsgIdentity(identity.longValue()); ! ! // attachments ! if( files.size() > 0 ) { ! PreparedStatement p = conn.prepareStatement( ! "INSERT INTO UNSENDFILEATTACHMENTS"+ ! " (msgref,filename,filesize,filekey)"+ ! " VALUES (?,?,?,?)"); ! for(Iterator it=files.iterator(); it.hasNext(); ) { ! FileAttachment fa = (FileAttachment)it.next(); ! int ix=1; ! p.setLong(ix++, mo.getMsgIdentity()); ! p.setString(ix++, fa.getInternalFile().getPath()); ! p.setLong(ix++, fa.getSize().longValue()); ! p.setString(ix++, fa.getKey()); ! int ins = p.executeUpdate(); ! if( ins == 0 ) { ! logger.log(Level.SEVERE, "fileattachment insert returned 0 !!!"); ! } } + p.close(); } ! if( boards.size() > 0 ) { ! PreparedStatement p = conn.prepareStatement( ! "INSERT INTO UNSENDBOARDATTACHMENTS"+ ! " (msgref,boardname,boardpublickey,boardprivatekey,boarddescription)"+ ! " VALUES (?,?,?,?,?)"); ! for(Iterator it=boards.iterator(); it.hasNext(); ) { ! BoardAttachment ba = (BoardAttachment)it.next(); ! Board b = ba.getBoardObj(); ! int ix=1; ! p.setLong(ix++, mo.getMsgIdentity()); ! p.setString(ix++, b.getNameLowerCase()); ! p.setString(ix++, b.getPublicKey()); ! p.setString(ix++, b.getPrivateKey()); ! p.setString(ix++, b.getDescription()); ! int ins = p.executeUpdate(); ! if( ins == 0 ) { ! logger.log(Level.SEVERE, "boardattachment insert returned 0 !!!"); ! } } + p.close(); } ! conn.commit(); ! conn.setAutoCommit(true); ! } catch(Throwable t) { ! logger.log(Level.SEVERE, "Exception during insert of unsent message", t); ! try { conn.rollback(); } catch(Throwable t1) { logger.log(Level.SEVERE, "Exception during rollback", t1); } ! try { conn.setAutoCommit(true); } catch(Throwable t1) { } ! } finally { ! AppLayerDatabase.getInstance().givePooledConnection(conn); } } |