📄 messagetransactionpersistence.java
字号:
package com.jdon.jivejdon.service.imp.message;
import javax.transaction.TransactionManager;
import org.apache.log4j.Logger;
import com.jdon.controller.events.EventModel;
import com.jdon.jivejdon.model.Forum;
import com.jdon.jivejdon.model.ForumMessage;
import com.jdon.jivejdon.model.ForumMessageReply;
import com.jdon.jivejdon.model.ForumThread;
import com.jdon.jivejdon.repository.MessageRepository;
import com.jdon.jivejdon.repository.TagRepository;
import com.jdon.jivejdon.repository.builder.ForumAbstractFactory;
import com.jdon.jivejdon.service.util.JtaTransactionUtil;
public class MessageTransactionPersistence {
private final static Logger logger = Logger.getLogger(MessageTransactionPersistence.class);
protected JtaTransactionUtil jtaTransactionUtil;
protected MessageRepository messageRepository;
protected TagRepository tagRepository;
protected ForumAbstractFactory forumAbstractFactory;
public MessageTransactionPersistence(JtaTransactionUtil jtaTransactionUtil, MessageRepository messageRepository, TagRepository tagRepository,
ForumAbstractFactory forumAbstractFactory) {
super();
this.jtaTransactionUtil = jtaTransactionUtil;
this.messageRepository = messageRepository;
this.tagRepository = tagRepository;
this.forumAbstractFactory = forumAbstractFactory;
}
public void insertTopicMessage(EventModel em) throws Exception {
logger.debug("enter createTopicMessage");
ForumMessage forumMessage = (ForumMessage) em.getModelIF();
TransactionManager tx = jtaTransactionUtil.getTransactionManager();
try {
tx.begin();
messageRepository.createTopicMessage(forumMessage);
logger.debug("createTopicMessage ok!");
tx.commit();
} catch (Exception e) {
jtaTransactionUtil.rollback(tx);
String error = e + " createTopicMessage forumMessageId=" + forumMessage.getMessageId();
logger.error(error);
throw new Exception(error);
}
}
public void insertReplyMessage(EventModel em) throws Exception {
logger.debug("enter createReplyMessage");
ForumMessageReply forumMessageReply = (ForumMessageReply) em.getModelIF();
if ((forumMessageReply.getParentMessage() == null) || (forumMessageReply.getParentMessage().getMessageId() == null)) {
logger.error("parentMessage is null, this is not reply message!");
return;
}
TransactionManager tx = jtaTransactionUtil.getTransactionManager();
try {
tx.begin();
messageRepository.createReplyMessage(forumMessageReply);
logger.debug("createReplyMessage ok!");
tx.commit();
} catch (Exception e) {
jtaTransactionUtil.rollback(tx);
String error = e + " createTopicMessage forumMessageId=" + forumMessageReply.getParentMessage().getMessageId();
logger.error(error);
throw new Exception(error);
}
}
public void updateMessage(EventModel em) throws Exception {
logger.debug("enter updateMessage");
ForumMessage newForumMessageInputparamter = (ForumMessage) em.getModelIF();
TransactionManager tx = jtaTransactionUtil.getTransactionManager();
try {
// merge
tx.begin();
messageRepository.updateMessage(newForumMessageInputparamter);
ForumMessage forumMessage = this.forumAbstractFactory.getMessage(newForumMessageInputparamter.getMessageId());
Long newforumId = newForumMessageInputparamter.getForum().getForumId();
this.moveMessage(forumMessage, newforumId);
// update the forumThread's updatetime
messageRepository.updateThread(forumMessage.getForumThread());
String[] tagTitles = newForumMessageInputparamter.getMessageVO().getTagTitle();
tagRepository.mergeTagTitle(forumMessage.getForumThread(), tagTitles);
tx.commit();
} catch (Exception e) {
jtaTransactionUtil.rollback(tx);
String error = e + " updateMessage forumMessageId=" + newForumMessageInputparamter.getMessageId();
logger.error(error);
throw new Exception(error);
}
}
private void moveMessage(ForumMessage forumMessage, Long forumId) throws Exception{
// update moving a forum , when it is root message and has no reply.
if ((forumMessage.getForumThread().isRoot(forumMessage)) && (forumMessage.isLeaf())) {
if (forumId != null && forumId.intValue() != 0 && forumMessage.getForum().getForumId() != forumId) {
// the message has been moved to a new forum
Forum newForum = this.forumAbstractFactory.getForum(forumId);
if (newForum != null){
Long messageId = forumMessage.getMessageId();
Long threadId = forumMessage.getForumThread().getThreadId();
messageRepository.getMessageDaoFacade().getMessageDao().updateMovingForum(messageId, threadId, forumId);
}
}
}
}
public void deleteMessage(ForumMessage delforumMessage) throws Exception {
logger.debug("enter deleteMessage");
TransactionManager tx = jtaTransactionUtil.getTransactionManager();
try {
tx.begin();
this.messageRepository.deleteMessageComposite(delforumMessage);
// if the root message was deleted, the thread that it be in
// will all be deleted
if (delforumMessage.getMessageId().longValue() == delforumMessage.getForumThread().getRootMessage().getMessageId().longValue()) {
logger.debug("1. it is a root message, delete the forumThread");
tagRepository.deleteTagTitle(delforumMessage.getForumThread());
messageRepository.deleteThread(delforumMessage.getForumThread());
}
tx.commit();
} catch (Exception e) {
jtaTransactionUtil.rollback(tx);
String error = e + " deleteMessage forumMessageId=" + delforumMessage.getMessageId();
logger.error(error);
throw new Exception(error);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -