001
014
015 package com.liferay.portlet.wiki.service.persistence.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryPos;
018 import com.liferay.portal.kernel.dao.orm.QueryUtil;
019 import com.liferay.portal.kernel.dao.orm.SQLQuery;
020 import com.liferay.portal.kernel.dao.orm.Session;
021 import com.liferay.portal.kernel.dao.orm.Type;
022 import com.liferay.portal.kernel.exception.SystemException;
023 import com.liferay.portal.kernel.util.StringBundler;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.util.StringUtil;
026 import com.liferay.portal.kernel.workflow.WorkflowConstants;
027 import com.liferay.portal.security.permission.InlineSQLHelperUtil;
028 import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
029 import com.liferay.portlet.wiki.NoSuchPageException;
030 import com.liferay.portlet.wiki.model.WikiPage;
031 import com.liferay.portlet.wiki.model.impl.WikiPageImpl;
032 import com.liferay.portlet.wiki.service.persistence.WikiPageFinder;
033 import com.liferay.util.dao.orm.CustomSQLUtil;
034
035 import java.sql.Timestamp;
036
037 import java.util.Date;
038 import java.util.Iterator;
039 import java.util.List;
040
041
044 public class WikiPageFinderImpl
045 extends BasePersistenceImpl<WikiPage> implements WikiPageFinder {
046
047 public static final String COUNT_BY_CREATE_DATE =
048 WikiPageFinder.class.getName() + ".countByCreateDate";
049
050 public static final String FIND_BY_RESOURCE_PRIM_KEY =
051 WikiPageFinder.class.getName() + ".findByResourcePrimKey";
052
053 public static final String FIND_BY_CREATE_DATE =
054 WikiPageFinder.class.getName() + ".findByCreateDate";
055
056 public static final String FIND_BY_NO_ASSETS =
057 WikiPageFinder.class.getName() + ".findByNoAssets";
058
059 @Override
060 public int countByCreateDate(
061 long groupId, long nodeId, Date createDate, boolean before) {
062
063 return countByCreateDate(
064 groupId, nodeId, new Timestamp(createDate.getTime()), before);
065 }
066
067 @Override
068 public int countByCreateDate(
069 long groupId, long nodeId, Timestamp createDate, boolean before) {
070
071 return doCountByCreateDate(groupId, nodeId, createDate, before, false);
072 }
073
074 @Override
075 public int filterCountByCreateDate(
076 long groupId, long nodeId, Date createDate, boolean before) {
077
078 return doCountByCreateDate(
079 groupId, nodeId, new Timestamp(createDate.getTime()), before, true);
080 }
081
082 @Override
083 public int filterCountByCreateDate(
084 long groupId, long nodeId, Timestamp createDate, boolean before) {
085
086 return doCountByCreateDate(groupId, nodeId, createDate, before, true);
087 }
088
089 @Override
090 public List<WikiPage> filterFindByCreateDate(
091 long groupId, long nodeId, Date createDate, boolean before, int start,
092 int end) {
093
094 return doFindByCreateDate(
095 groupId, nodeId, new Timestamp(createDate.getTime()), before, start,
096 end, true);
097 }
098
099 @Override
100 public List<WikiPage> filterFindByCreateDate(
101 long groupId, long nodeId, Timestamp createDate, boolean before,
102 int start, int end) {
103
104 return doFindByCreateDate(
105 groupId, nodeId, createDate, before, start, end, true);
106 }
107
108 @Override
109 public WikiPage findByResourcePrimKey(long resourcePrimKey)
110 throws NoSuchPageException {
111
112 Session session = null;
113
114 try {
115 session = openSession();
116
117 String sql = CustomSQLUtil.get(FIND_BY_RESOURCE_PRIM_KEY);
118
119 SQLQuery q = session.createSynchronizedSQLQuery(sql);
120
121 q.addEntity("WikiPage", WikiPageImpl.class);
122
123 QueryPos qPos = QueryPos.getInstance(q);
124
125 qPos.add(resourcePrimKey);
126
127 List<WikiPage> pages = q.list();
128
129 if (!pages.isEmpty()) {
130 return pages.get(0);
131 }
132 }
133 catch (Exception e) {
134 throw new SystemException(e);
135 }
136 finally {
137 closeSession(session);
138 }
139
140 StringBundler sb = new StringBundler(3);
141
142 sb.append("No WikiPage exists with the key {resourcePrimKey");
143 sb.append(resourcePrimKey);
144 sb.append("}");
145
146 throw new NoSuchPageException(sb.toString());
147 }
148
149 @Override
150 public List<WikiPage> findByCreateDate(
151 long groupId, long nodeId, Date createDate, boolean before, int start,
152 int end) {
153
154 return doFindByCreateDate(
155 groupId, nodeId, new Timestamp(createDate.getTime()), before, start,
156 end, false);
157 }
158
159 @Override
160 public List<WikiPage> findByCreateDate(
161 long groupId, long nodeId, Timestamp createDate, boolean before,
162 int start, int end) {
163
164 return doFindByCreateDate(
165 groupId, nodeId, createDate, before, start, end, false);
166 }
167
168 @Override
169 public List<WikiPage> findByNoAssets() {
170 Session session = null;
171
172 try {
173 session = openSession();
174
175 String sql = CustomSQLUtil.get(FIND_BY_NO_ASSETS);
176
177 SQLQuery q = session.createSynchronizedSQLQuery(sql);
178
179 q.addEntity("WikiPage", WikiPageImpl.class);
180
181 return q.list(true);
182 }
183 catch (Exception e) {
184 throw new SystemException(e);
185 }
186 finally {
187 closeSession(session);
188 }
189 }
190
191 protected int doCountByCreateDate(
192 long groupId, long nodeId, Timestamp createDate, boolean before,
193 boolean inlineSQLHelper) {
194
195 Session session = null;
196
197 try {
198 session = openSession();
199
200 String sql = CustomSQLUtil.get(COUNT_BY_CREATE_DATE);
201
202 String createDateComparator = StringPool.GREATER_THAN;
203
204 if (before) {
205 createDateComparator = StringPool.LESS_THAN;
206 }
207
208 sql = StringUtil.replace(
209 sql, "[$CREATE_DATE_COMPARATOR$]", createDateComparator);
210
211 if (inlineSQLHelper) {
212 sql = InlineSQLHelperUtil.replacePermissionCheck(
213 sql, WikiPage.class.getName(), "WikiPage.resourcePrimKey",
214 groupId);
215 }
216
217 SQLQuery q = session.createSynchronizedSQLQuery(sql);
218
219 q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
220
221 QueryPos qPos = QueryPos.getInstance(q);
222
223 qPos.add(groupId);
224 qPos.add(nodeId);
225 qPos.add(createDate);
226 qPos.add(true);
227 qPos.add(WorkflowConstants.STATUS_APPROVED);
228
229 Iterator<Long> itr = q.iterate();
230
231 if (itr.hasNext()) {
232 Long count = itr.next();
233
234 if (count != null) {
235 return count.intValue();
236 }
237 }
238
239 return 0;
240 }
241 catch (Exception e) {
242 throw new SystemException(e);
243 }
244 finally {
245 closeSession(session);
246 }
247 }
248
249 protected List<WikiPage> doFindByCreateDate(
250 long groupId, long nodeId, Timestamp createDate, boolean before,
251 int start, int end, boolean inlineSQLHelper) {
252
253 Session session = null;
254
255 try {
256 session = openSession();
257
258 String sql = CustomSQLUtil.get(FIND_BY_CREATE_DATE);
259
260 String createDateComparator = StringPool.GREATER_THAN;
261
262 if (before) {
263 createDateComparator = StringPool.LESS_THAN;
264 }
265
266 sql = StringUtil.replace(
267 sql, "[$CREATE_DATE_COMPARATOR$]", createDateComparator);
268
269 if (inlineSQLHelper) {
270 sql = InlineSQLHelperUtil.replacePermissionCheck(
271 sql, WikiPage.class.getName(), "WikiPage.resourcePrimKey",
272 groupId);
273 }
274
275 SQLQuery q = session.createSynchronizedSQLQuery(sql);
276
277 q.addEntity("WikiPage", WikiPageImpl.class);
278
279 QueryPos qPos = QueryPos.getInstance(q);
280
281 qPos.add(groupId);
282 qPos.add(nodeId);
283 qPos.add(createDate);
284 qPos.add(true);
285 qPos.add(WorkflowConstants.STATUS_APPROVED);
286
287 return (List<WikiPage>)QueryUtil.list(q, getDialect(), start, end);
288 }
289 catch (Exception e) {
290 throw new SystemException(e);
291 }
292 finally {
293 closeSession(session);
294 }
295 }
296
297 }