[jboss-cvs] jboss-mail/src/java/org/jboss/mail/mailbox ...
Michael Barker
mike at middlesoft.co.uk
Sat Jul 29 02:51:19 EDT 2006
User: mikezzz
Date: 06/07/29 02:51:19
Modified: src/java/org/jboss/mail/mailbox MailboxServiceImpl.java
Log:
JBMAIL-246: Implement per-folder message id
Revision Changes Path
1.40 +31 -1 jboss-mail/src/java/org/jboss/mail/mailbox/MailboxServiceImpl.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MailboxServiceImpl.java
===================================================================
RCS file: /cvsroot/jboss/jboss-mail/src/java/org/jboss/mail/mailbox/MailboxServiceImpl.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- MailboxServiceImpl.java 11 Jun 2006 14:06:23 -0000 1.39
+++ MailboxServiceImpl.java 29 Jul 2006 06:51:19 -0000 1.40
@@ -24,6 +24,7 @@
import static org.jboss.mail.util.HibernateUtil.getSession;
import static org.jboss.mail.util.HibernateUtil.singleResult;
+import java.math.BigInteger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
@@ -49,7 +50,7 @@
*
* @author Andrew C. Oliver
* @author Jason Pugsley
- * @version $Revision: 1.39 $
+ * @version $Revision: 1.40 $
*/
// @Service
// @Management(org.jboss.mail.mailbox.MailboxService.class)
@@ -249,6 +250,7 @@
emInit();
Folder folder = session.find(Folder.class, xfolder.getId());
folder.addMessage(mail);
+
mail.setFolder(folder);
session.persist(mail);
}
@@ -290,6 +292,34 @@
return true;
}
+ @Tx(TxType.REQUIRESNEW)
+ public long getNextMessageId(long folderId) {
+ emInit();
+
+ String queryStr;
+
+ System.out.println("Hacks: " + hacks);
+
+ if ("hsqldb".equals(hacks)) {
+ queryStr = "SELECT NEXTMESSAGEID FROM FOLDERSEQUENCE WHERE FOLDER_ID = :folderId";
+ } else {
+ queryStr = "SELECT NEXTMESSAGEID FROM FOLDERSEQUENCE WHERE FOLDER_ID = :folderId FOR UPDATE";
+ }
+
+ Query getQ = session.createNativeQuery(queryStr);
+ getQ.setParameter("folderId", new Long(folderId));
+ BigInteger val = (BigInteger) getQ.getSingleResult();
+ long messageId = val.longValue();
+
+ long nextMessageId = messageId + 1;
+ Query updateQ = session.createNativeQuery("UPDATE FOLDERSEQUENCE SET NEXTMESSAGEID = :nextMessageId WHERE FOLDER_ID = :folderId");
+ updateQ.setParameter("nextMessageId", nextMessageId);
+ updateQ.setParameter("folderId", folderId);
+ updateQ.executeUpdate();
+
+ return messageId;
+ }
+
/**
* @param folder
* @return
More information about the jboss-cvs-commits
mailing list