001
014
015 package com.liferay.portlet.blogs.service.persistence.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryDefinition;
018 import com.liferay.portal.kernel.dao.orm.QueryPos;
019 import com.liferay.portal.kernel.dao.orm.QueryUtil;
020 import com.liferay.portal.kernel.dao.orm.SQLQuery;
021 import com.liferay.portal.kernel.dao.orm.Session;
022 import com.liferay.portal.kernel.dao.orm.Type;
023 import com.liferay.portal.kernel.exception.SystemException;
024 import com.liferay.portal.kernel.util.CalendarUtil;
025 import com.liferay.portal.kernel.util.StringBundler;
026 import com.liferay.portal.kernel.util.StringPool;
027 import com.liferay.portal.kernel.util.StringUtil;
028 import com.liferay.portal.kernel.workflow.WorkflowConstants;
029 import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
030 import com.liferay.portlet.blogs.model.BlogsEntry;
031 import com.liferay.portlet.blogs.model.impl.BlogsEntryImpl;
032 import com.liferay.portlet.blogs.service.persistence.BlogsEntryFinder;
033 import com.liferay.util.dao.orm.CustomSQLUtil;
034
035 import java.sql.Timestamp;
036
037 import java.util.ArrayList;
038 import java.util.Date;
039 import java.util.Iterator;
040 import java.util.List;
041
042
045 public class BlogsEntryFinderImpl
046 extends BasePersistenceImpl<BlogsEntry> implements BlogsEntryFinder {
047
048 public static final String COUNT_BY_ORGANIZATION_IDS =
049 BlogsEntryFinder.class.getName() + ".countByOrganizationIds";
050
051 public static final String FIND_BY_GROUP_IDS =
052 BlogsEntryFinder.class.getName() + ".findByGroupIds";
053
054 public static final String FIND_BY_ORGANIZATION_IDS =
055 BlogsEntryFinder.class.getName() + ".findByOrganizationIds";
056
057 public static final String FIND_BY_NO_ASSETS =
058 BlogsEntryFinder.class.getName() + ".findByNoAssets";
059
060 @Override
061 public int countByOrganizationId(
062 long organizationId, Date displayDate,
063 QueryDefinition<BlogsEntry> queryDefinition) {
064
065 List<Long> organizationIds = new ArrayList<Long>();
066
067 organizationIds.add(organizationId);
068
069 return countByOrganizationIds(
070 organizationIds, displayDate, queryDefinition);
071 }
072
073 @Override
074 public int countByOrganizationIds(
075 List<Long> organizationIds, Date displayDate,
076 QueryDefinition<BlogsEntry> queryDefinition) {
077
078 Timestamp displayDate_TS = CalendarUtil.getTimestamp(displayDate);
079
080 Session session = null;
081
082 try {
083 session = openSession();
084
085 String sql = CustomSQLUtil.get(COUNT_BY_ORGANIZATION_IDS);
086
087 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
088 if (queryDefinition.isExcludeStatus()) {
089 sql = CustomSQLUtil.appendCriteria(
090 sql, "AND (BlogsEntry.status != ?)");
091 }
092 else {
093 sql = CustomSQLUtil.appendCriteria(
094 sql, "AND (BlogsEntry.status = ?)");
095 }
096 }
097
098 sql = StringUtil.replace(
099 sql, "[$ORGANIZATION_ID$]",
100 getOrganizationIds(organizationIds));
101
102 SQLQuery q = session.createSynchronizedSQLQuery(sql);
103
104 q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
105
106 QueryPos qPos = QueryPos.getInstance(q);
107
108 for (int i = 0; i < organizationIds.size(); i++) {
109 Long organizationId = organizationIds.get(i);
110
111 qPos.add(organizationId);
112 }
113
114 qPos.add(displayDate_TS);
115
116 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
117 qPos.add(queryDefinition.getStatus());
118 }
119
120 Iterator<Long> itr = q.iterate();
121
122 if (itr.hasNext()) {
123 Long count = itr.next();
124
125 if (count != null) {
126 return count.intValue();
127 }
128 }
129
130 return 0;
131 }
132 catch (Exception e) {
133 throw new SystemException(e);
134 }
135 finally {
136 closeSession(session);
137 }
138 }
139
140 @Override
141 public List<BlogsEntry> findByGroupIds(
142 long companyId, long groupId, Date displayDate,
143 QueryDefinition<BlogsEntry> queryDefinition) {
144
145 Session session = null;
146
147 try {
148 session = openSession();
149
150 String sql = CustomSQLUtil.get(FIND_BY_GROUP_IDS);
151
152 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
153 if (queryDefinition.isExcludeStatus()) {
154 sql = CustomSQLUtil.appendCriteria(
155 sql, "AND (BlogsEntry.status != ?)");
156 }
157 else {
158 sql = CustomSQLUtil.appendCriteria(
159 sql, "AND (BlogsEntry.status = ?)");
160 }
161 }
162
163 SQLQuery q = session.createSynchronizedSQLQuery(sql);
164
165 q.addEntity("BlogsEntry", BlogsEntryImpl.class);
166
167 QueryPos qPos = QueryPos.getInstance(q);
168
169 qPos.add(companyId);
170 qPos.add(groupId);
171 qPos.add(groupId);
172 qPos.add(groupId);
173 qPos.add(displayDate);
174
175 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
176 qPos.add(queryDefinition.getStatus());
177 }
178
179 return (List<BlogsEntry>)QueryUtil.list(
180 q, getDialect(), queryDefinition.getStart(),
181 queryDefinition.getEnd());
182 }
183 catch (Exception e) {
184 throw new SystemException(e);
185 }
186 finally {
187 closeSession(session);
188 }
189 }
190
191 @Override
192 public List<BlogsEntry> findByOrganizationId(
193 long organizationId, Date displayDate,
194 QueryDefinition<BlogsEntry> queryDefinition) {
195
196 List<Long> organizationIds = new ArrayList<Long>();
197
198 organizationIds.add(organizationId);
199
200 return findByOrganizationIds(
201 organizationIds, displayDate, queryDefinition);
202 }
203
204 @Override
205 public List<BlogsEntry> findByOrganizationIds(
206 List<Long> organizationIds, Date displayDate,
207 QueryDefinition<BlogsEntry> queryDefinition) {
208
209 Timestamp displayDate_TS = CalendarUtil.getTimestamp(displayDate);
210
211 Session session = null;
212
213 try {
214 session = openSession();
215
216 String sql = CustomSQLUtil.get(FIND_BY_ORGANIZATION_IDS);
217
218 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
219 if (queryDefinition.isExcludeStatus()) {
220 sql = CustomSQLUtil.appendCriteria(
221 sql, "AND (BlogsEntry.status != ?)");
222 }
223 else {
224 sql = CustomSQLUtil.appendCriteria(
225 sql, "AND (BlogsEntry.status = ?)");
226 }
227 }
228
229 sql = StringUtil.replace(
230 sql, "[$ORGANIZATION_ID$]",
231 getOrganizationIds(organizationIds));
232 sql = CustomSQLUtil.replaceOrderBy(
233 sql, queryDefinition.getOrderByComparator());
234
235 SQLQuery q = session.createSynchronizedSQLQuery(sql);
236
237 q.addEntity("BlogsEntry", BlogsEntryImpl.class);
238
239 QueryPos qPos = QueryPos.getInstance(q);
240
241 for (int i = 0; i < organizationIds.size(); i++) {
242 Long organizationId = organizationIds.get(i);
243
244 qPos.add(organizationId);
245 }
246
247 qPos.add(displayDate_TS);
248
249 if (queryDefinition.getStatus() != WorkflowConstants.STATUS_ANY) {
250 qPos.add(queryDefinition.getStatus());
251 }
252
253 return (List<BlogsEntry>)QueryUtil.list(
254 q, getDialect(), queryDefinition.getStart(),
255 queryDefinition.getEnd());
256 }
257 catch (Exception e) {
258 throw new SystemException(e);
259 }
260 finally {
261 closeSession(session);
262 }
263 }
264
265 @Override
266 public List<BlogsEntry> findByNoAssets() {
267 Session session = null;
268
269 try {
270 session = openSession();
271
272 String sql = CustomSQLUtil.get(FIND_BY_NO_ASSETS);
273
274 SQLQuery q = session.createSynchronizedSQLQuery(sql);
275
276 q.addEntity("BlogsEntry", BlogsEntryImpl.class);
277
278 return q.list(true);
279 }
280 catch (Exception e) {
281 throw new SystemException(e);
282 }
283 finally {
284 closeSession(session);
285 }
286 }
287
288 protected String getOrganizationIds(List<Long> organizationIds) {
289 if (organizationIds.isEmpty()) {
290 return StringPool.BLANK;
291 }
292
293 StringBundler sb = new StringBundler(organizationIds.size() * 2 - 1);
294
295 for (int i = 0; i < organizationIds.size(); i++) {
296 sb.append("Users_Orgs.organizationId = ? ");
297
298 if ((i + 1) != organizationIds.size()) {
299 sb.append("OR ");
300 }
301 }
302
303 return sb.toString();
304 }
305
306 }