1
22
23 package com.liferay.portlet.messageboards.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.model.User;
28 import com.liferay.portlet.messageboards.model.MBMessage;
29 import com.liferay.portlet.messageboards.model.MBMessageFlag;
30 import com.liferay.portlet.messageboards.model.impl.MBMessageFlagImpl;
31 import com.liferay.portlet.messageboards.service.base.MBMessageFlagLocalServiceBaseImpl;
32
33 import java.util.List;
34
35
42 public class MBMessageFlagLocalServiceImpl
43 extends MBMessageFlagLocalServiceBaseImpl {
44
45 public void addReadFlags(long userId, List<MBMessage> messages)
46 throws PortalException, SystemException {
47
48 User user = userPersistence.findByPrimaryKey(userId);
49
50 if (user.isDefaultUser()) {
51 return;
52 }
53
54 for (MBMessage message : messages) {
55 MBMessageFlag messageFlag = mbMessageFlagPersistence.fetchByU_M_F(
56 userId, message.getMessageId(), MBMessageFlagImpl.READ_FLAG);
57
58 if (messageFlag == null) {
59 long messageFlagId = counterLocalService.increment();
60
61 messageFlag = mbMessageFlagPersistence.create(messageFlagId);
62
63 messageFlag.setUserId(userId);
64 messageFlag.setMessageId(message.getMessageId());
65 messageFlag.setFlag(MBMessageFlagImpl.READ_FLAG);
66
67 mbMessageFlagPersistence.update(messageFlag, false);
68 }
69 }
70 }
71
72 public void addQuestionFlag(long messageId)
73 throws PortalException, SystemException {
74
75 MBMessage message = mbMessagePersistence.findByPrimaryKey(messageId);
76
77 if (!message.isRoot()) {
78 return;
79 }
80
81 MBMessageFlag questionMessageFlag =
82 mbMessageFlagPersistence.fetchByU_M_F(
83 message.getUserId(), message.getMessageId(),
84 MBMessageFlagImpl.QUESTION_FLAG);
85
86 MBMessageFlag answerMessageFlag =
87 mbMessageFlagPersistence.fetchByU_M_F(
88 message.getUserId(), message.getMessageId(),
89 MBMessageFlagImpl.ANSWER_FLAG);
90
91 if ((questionMessageFlag == null) && (answerMessageFlag == null)) {
92 long messageFlagId = counterLocalService.increment();
93
94 questionMessageFlag = mbMessageFlagPersistence.create(
95 messageFlagId);
96
97 questionMessageFlag.setUserId(message.getUserId());
98 questionMessageFlag.setMessageId(message.getMessageId());
99 questionMessageFlag.setFlag(MBMessageFlagImpl.QUESTION_FLAG);
100
101 mbMessageFlagPersistence.update(questionMessageFlag, false);
102 }
103 }
104
105 public void deleteFlags(long userId) throws SystemException {
106 mbMessageFlagPersistence.removeByUserId(userId);
107 }
108
109 public void deleteFlags(long messageId, int flag) throws SystemException {
110 mbMessageFlagPersistence.removeByM_F(messageId, flag);
111 }
112
113 public void deleteQuestionAndAnswerFlags(long threadId)
114 throws SystemException {
115
116 List<MBMessage> messages = mbMessagePersistence.findByThreadId(
117 threadId);
118
119 for (MBMessage message : messages) {
120 if (message.isRoot()) {
121 mbMessageFlagPersistence.removeByM_F(
122 message.getMessageId(), MBMessageFlagImpl.QUESTION_FLAG);
123 }
124
125 mbMessageFlagPersistence.removeByM_F(
126 message.getMessageId(), MBMessageFlagImpl.ANSWER_FLAG);
127 }
128 }
129
130 public boolean hasAnswerFlag(long messageId) throws SystemException {
131 int count = mbMessageFlagPersistence.countByM_F(
132 messageId, MBMessageFlagImpl.ANSWER_FLAG);
133
134 if (count > 0) {
135 return true;
136 }
137 else {
138 return false;
139 }
140 }
141
142 public boolean hasQuestionFlag(long messageId) throws SystemException {
143 int count = mbMessageFlagPersistence.countByM_F(
144 messageId, MBMessageFlagImpl.QUESTION_FLAG);
145
146 if (count > 0) {
147 return true;
148 }
149 else {
150 return false;
151 }
152 }
153
154 public boolean hasReadFlag(long userId, long messageId)
155 throws PortalException, SystemException {
156
157 User user = userPersistence.findByPrimaryKey(userId);
158
159 if (user.isDefaultUser()) {
160 return true;
161 }
162
163 MBMessageFlag messageFlag = mbMessageFlagPersistence.fetchByU_M_F(
164 userId, messageId, MBMessageFlagImpl.READ_FLAG);
165
166 if (messageFlag != null) {
167 return true;
168 }
169 else {
170 return false;
171 }
172 }
173
174 }