Skip to content
Snippets Groups Projects
Commit 28402fc4 authored by srosse's avatar srosse
Browse files

OO-1346: use a query to load a specific message to prevent...

OO-1346: use a query to load a specific message to prevent EntityNotFoundException if the message was deleted
parent 9ac56100
No related branches found
No related tags found
No related merge requests found
......@@ -81,6 +81,7 @@ import org.olat.core.util.vfs.filters.VFSItemExcludePrefixFilter;
import org.olat.user.DisplayPortraitController;
import org.olat.user.UserInfoMainController;
import org.olat.user.UserManager;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
......@@ -119,12 +120,15 @@ public class FilterForUserController extends BasicController {
private final OLATResourceable forumOres;
private final String thumbMapper;
@Autowired
private ForumManager forumManager;
public FilterForUserController(UserRequest ureq, WindowControl wControl, Forum forum) {
super(ureq, wControl);
this.forum = forum;
msgs = ForumManager.getInstance().getMessagesByForum(forum);
msgs = forumManager.getMessagesByForum(forum);
forumOres = OresHelper.createOLATResourceableInstance(Forum.class,forum.getKey());
mainVC = createVelocityContainer("filter_for_user");
......@@ -300,7 +304,7 @@ public class FilterForUserController extends BasicController {
Map<String, Object> messageMap = getMessageMapFromCommand(ureq.getIdentity(), command);
Long messageId = (Long) messageMap.get("id");
Message selectedMessage = ForumManager.getInstance().findMessage(messageId);
Message selectedMessage = forumManager.loadMessage(messageId);
if (selectedMessage != null) {
if (command.startsWith("open_in_thread_")) {
fireEvent(ureq, new OpenMessageInThreadEvent(selectedMessage));
......
......@@ -330,7 +330,7 @@ public class ForumController extends BasicController implements GenericEventList
Long resId = ores.getResourceableId();
if (resId.longValue() != 0) {
if (isLogDebugEnabled()) logDebug("messageId=" , ores.getResourceableId().toString());
currentMsg = fm.findMessage(ores.getResourceableId());
currentMsg = fm.loadMessage(ores.getResourceableId());
if (currentMsg != null) {
showThreadView(ureq, currentMsg, null);
scrollToCurrentMessage();
......@@ -399,7 +399,7 @@ public class ForumController extends BasicController implements GenericEventList
Long resId = entries.get(0).getOLATResourceable().getResourceableId();
if (resId.longValue() != 0) {
currentMsg = fm.findMessage(resId);
currentMsg = fm.loadMessage(resId);
if (currentMsg != null) {
showThreadView(ureq, currentMsg, null);
scrollToCurrentMessage();
......@@ -472,7 +472,7 @@ public class ForumController extends BasicController implements GenericEventList
Map<String, Object> messageMap = getMessageMapFromCommand(ureq.getIdentity(), command);
Long messageId = (Long) messageMap.get("id");
Message updatedMessage = fm.findMessage(messageId);
Message updatedMessage = fm.loadMessage(messageId);
if (updatedMessage!=null) {
currentMsg = updatedMessage;
// now dispatch the commands
......@@ -584,7 +584,7 @@ public class ForumController extends BasicController implements GenericEventList
msgEditCtr.persistTempUploadedFiles(currentMsg);
} else if (msgEditCtr.getLastEditModus().equals(MessageEditController.EDITMODE_EDITMSG)){
// edit done -> save
Message updatedMessage = fm.findMessage(currentMsg.getKey());
Message updatedMessage = fm.loadMessage(currentMsg.getKey());
if(updatedMessage!=null) {
doEditMessage(ureq);
//file persisting is done already, as a msg-key was known during edit.
......@@ -593,7 +593,7 @@ public class ForumController extends BasicController implements GenericEventList
}
} else if (msgEditCtr.getLastEditModus().equals(MessageEditController.EDITMODE_REPLYMSG)){
// reply done -> save
Message updatedMessage = fm.findMessage(currentMsg.getKey());
Message updatedMessage = fm.loadMessage(currentMsg.getKey());
if(updatedMessage!=null) {
doReplyMessage(ureq);
msgEditCtr.persistTempUploadedFiles(currentMsg);
......
......@@ -395,13 +395,13 @@ public class ForumManager extends BasicManager {
* @return the message with the given messageKey
*/
public Message loadMessage(Long messageKey) {
Message msg = doloadMessage(messageKey);
return msg;
}
private Message doloadMessage(Long messageKey) {
Message msg = DBFactory.getInstance().loadObject(MessageImpl.class, messageKey);
return msg;
StringBuilder sb = new StringBuilder();
sb.append("select msg from ").append(MessageImpl.class.getName()).append(" msg where msg.key=:messageKey");
List<Message> messages = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Message.class)
.setParameter("messageKey", messageKey)
.getResultList();
return messages == null || messages.isEmpty() ? null : messages.get(0);
}
private void saveMessage(Message m) {
......@@ -576,10 +576,6 @@ public class ForumManager extends BasicManager {
return fContainer;
}
public Message findMessage(Long messageId) {
return DBFactory.getInstance().findObject(MessageImpl.class, messageId);
}
/**
* Splits the current thread starting from the current message.
* It updates the messages of the selected subthread by setting the Parent and the Threadtop.
......@@ -710,7 +706,7 @@ public class ForumManager extends BasicManager {
*/
public void markAsRead(Identity identity,Message msg) {
//Check if the message was not already deleted
Message retrievedMessage = findMessage(msg.getKey());
Message retrievedMessage = loadMessage(msg.getKey());
if(retrievedMessage!=null) {
ReadMessageImpl readMessage = new ReadMessageImpl();
readMessage.setIdentity(identity);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment