1
14
15 package com.liferay.portlet.messageboards.service.impl;
16
17 import com.liferay.portal.PortalException;
18 import com.liferay.portal.SystemException;
19 import com.liferay.portal.security.permission.ActionKeys;
20 import com.liferay.portlet.messageboards.NoSuchMessageFlagException;
21 import com.liferay.portlet.messageboards.model.MBMessage;
22 import com.liferay.portlet.messageboards.model.MBMessageFlag;
23 import com.liferay.portlet.messageboards.model.MBThread;
24 import com.liferay.portlet.messageboards.model.impl.MBMessageFlagImpl;
25 import com.liferay.portlet.messageboards.service.base.MBMessageFlagServiceBaseImpl;
26 import com.liferay.portlet.messageboards.service.permission.MBMessagePermission;
27
28 import java.util.Date;
29
30
35 public class MBMessageFlagServiceImpl extends MBMessageFlagServiceBaseImpl {
36
37 public void addAnswerFlag(long messageId)
38 throws PortalException, SystemException {
39
40 MBMessage message = mbMessagePersistence.findByPrimaryKey(messageId);
41
42 if (message.isRoot()) {
43 return;
44 }
45
46 MBThread thread = mbThreadPersistence.findByPrimaryKey(
47 message.getThreadId());
48
49 MBMessage rootMessage = mbMessagePersistence.findByPrimaryKey(
50 thread.getRootMessageId());
51
52 MBMessagePermission.check(
53 getPermissionChecker(), rootMessage.getMessageId(),
54 ActionKeys.UPDATE);
55
56 MBMessageFlag questionMessageFlag =
57 mbMessageFlagPersistence.fetchByU_M_F(
58 rootMessage.getUserId(), rootMessage.getMessageId(),
59 MBMessageFlagImpl.QUESTION_FLAG);
60
61 MBMessageFlag answerMessageFlag =
62 mbMessageFlagPersistence.fetchByU_M_F(
63 rootMessage.getUserId(), rootMessage.getMessageId(),
64 MBMessageFlagImpl.ANSWER_FLAG);
65
66 if ((questionMessageFlag != null) && (answerMessageFlag == null)) {
67 questionMessageFlag.setFlag(MBMessageFlagImpl.ANSWER_FLAG);
68
69 mbMessageFlagPersistence.update(questionMessageFlag, false);
70 }
71
72 MBMessageFlag messageFlag = mbMessageFlagPersistence.fetchByU_M_F(
73 message.getUserId(), message.getMessageId(),
74 MBMessageFlagImpl.ANSWER_FLAG);
75
76 if (messageFlag == null) {
77 long messageFlagId = counterLocalService.increment();
78
79 messageFlag = mbMessageFlagPersistence.create(messageFlagId);
80
81 messageFlag.setUserId(message.getUserId());
82 messageFlag.setModifiedDate(new Date());
83 messageFlag.setThreadId(message.getThreadId());
84 messageFlag.setMessageId(message.getMessageId());
85 messageFlag.setFlag(MBMessageFlagImpl.ANSWER_FLAG);
86
87 mbMessageFlagPersistence.update(messageFlag, false);
88 }
89 }
90
91 public void deleteAnswerFlag(long messageId)
92 throws PortalException, SystemException {
93
94 MBMessage message = mbMessagePersistence.findByPrimaryKey(messageId);
95
96 if (message.isRoot()) {
97 return;
98 }
99
100 MBThread thread = mbThreadPersistence.findByPrimaryKey(
101 message.getThreadId());
102
103 MBMessage rootMessage = mbMessagePersistence.findByPrimaryKey(
104 thread.getRootMessageId());
105
106 MBMessagePermission.check(
107 getPermissionChecker(), rootMessage.getMessageId(),
108 ActionKeys.UPDATE);
109
110 try {
111 mbMessageFlagPersistence.removeByU_M_F(
112 message.getUserId(), message.getMessageId(),
113 MBMessageFlagImpl.ANSWER_FLAG);
114 }
115 catch (NoSuchMessageFlagException nsmfe) {
116 }
117
118 MBMessageFlag answerMessageFlag =
119 mbMessageFlagPersistence.fetchByU_M_F(
120 rootMessage.getUserId(), rootMessage.getMessageId(),
121 MBMessageFlagImpl.ANSWER_FLAG);
122
123 if (answerMessageFlag == null) {
124 return;
125 }
126
127 int answerFlagsCount = mbMessageFlagPersistence.countByT_F(
128 message.getThreadId(), MBMessageFlagImpl.ANSWER_FLAG);
129
130 if (answerFlagsCount == 1) {
131 answerMessageFlag.setFlag(MBMessageFlagImpl.QUESTION_FLAG);
132
133 mbMessageFlagPersistence.update(answerMessageFlag, false);
134 }
135 }
136
137 }