1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portlet.documentlibrary.service.persistence;
21  
22  import com.liferay.portal.SystemException;
23  import com.liferay.portal.kernel.annotation.BeanReference;
24  import com.liferay.portal.kernel.cache.CacheRegistry;
25  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
26  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
27  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
28  import com.liferay.portal.kernel.dao.orm.FinderPath;
29  import com.liferay.portal.kernel.dao.orm.Query;
30  import com.liferay.portal.kernel.dao.orm.QueryPos;
31  import com.liferay.portal.kernel.dao.orm.QueryUtil;
32  import com.liferay.portal.kernel.dao.orm.Session;
33  import com.liferay.portal.kernel.log.Log;
34  import com.liferay.portal.kernel.log.LogFactoryUtil;
35  import com.liferay.portal.kernel.util.GetterUtil;
36  import com.liferay.portal.kernel.util.OrderByComparator;
37  import com.liferay.portal.kernel.util.StringPool;
38  import com.liferay.portal.kernel.util.StringUtil;
39  import com.liferay.portal.kernel.util.Validator;
40  import com.liferay.portal.model.ModelListener;
41  import com.liferay.portal.service.persistence.BatchSessionUtil;
42  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
43  
44  import com.liferay.portlet.documentlibrary.NoSuchFileRankException;
45  import com.liferay.portlet.documentlibrary.model.DLFileRank;
46  import com.liferay.portlet.documentlibrary.model.impl.DLFileRankImpl;
47  import com.liferay.portlet.documentlibrary.model.impl.DLFileRankModelImpl;
48  
49  import java.util.ArrayList;
50  import java.util.Collections;
51  import java.util.List;
52  
53  /**
54   * <a href="DLFileRankPersistenceImpl.java.html"><b><i>View Source</i></b></a>
55   *
56   * @author Brian Wing Shun Chan
57   *
58   */
59  public class DLFileRankPersistenceImpl extends BasePersistenceImpl
60      implements DLFileRankPersistence {
61      public static final String FINDER_CLASS_NAME_ENTITY = DLFileRankImpl.class.getName();
62      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
63          ".List";
64      public static final FinderPath FINDER_PATH_FIND_BY_USERID = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
65              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
66              "findByUserId", new String[] { Long.class.getName() });
67      public static final FinderPath FINDER_PATH_FIND_BY_OBC_USERID = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
68              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
69              "findByUserId",
70              new String[] {
71                  Long.class.getName(),
72                  
73              "java.lang.Integer", "java.lang.Integer",
74                  "com.liferay.portal.kernel.util.OrderByComparator"
75              });
76      public static final FinderPath FINDER_PATH_COUNT_BY_USERID = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
77              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
78              "countByUserId", new String[] { Long.class.getName() });
79      public static final FinderPath FINDER_PATH_FIND_BY_G_U = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
80              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
81              "findByG_U",
82              new String[] { Long.class.getName(), Long.class.getName() });
83      public static final FinderPath FINDER_PATH_FIND_BY_OBC_G_U = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
84              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
85              "findByG_U",
86              new String[] {
87                  Long.class.getName(), Long.class.getName(),
88                  
89              "java.lang.Integer", "java.lang.Integer",
90                  "com.liferay.portal.kernel.util.OrderByComparator"
91              });
92      public static final FinderPath FINDER_PATH_COUNT_BY_G_U = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
93              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
94              "countByG_U",
95              new String[] { Long.class.getName(), Long.class.getName() });
96      public static final FinderPath FINDER_PATH_FIND_BY_F_N = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
97              DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
98              "findByF_N",
99              new String[] { Long.class.getName(), String.class.getName() });
100     public static final FinderPath FINDER_PATH_FIND_BY_OBC_F_N = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
101             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
102             "findByF_N",
103             new String[] {
104                 Long.class.getName(), String.class.getName(),
105                 
106             "java.lang.Integer", "java.lang.Integer",
107                 "com.liferay.portal.kernel.util.OrderByComparator"
108             });
109     public static final FinderPath FINDER_PATH_COUNT_BY_F_N = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
110             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
111             "countByF_N",
112             new String[] { Long.class.getName(), String.class.getName() });
113     public static final FinderPath FINDER_PATH_FETCH_BY_C_U_F_N = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
114             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_ENTITY,
115             "fetchByC_U_F_N",
116             new String[] {
117                 Long.class.getName(), Long.class.getName(), Long.class.getName(),
118                 String.class.getName()
119             });
120     public static final FinderPath FINDER_PATH_COUNT_BY_C_U_F_N = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
121             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
122             "countByC_U_F_N",
123             new String[] {
124                 Long.class.getName(), Long.class.getName(), Long.class.getName(),
125                 String.class.getName()
126             });
127     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
128             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
129             "findAll", new String[0]);
130     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
131             DLFileRankModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
132             "countAll", new String[0]);
133 
134     public void cacheResult(DLFileRank dlFileRank) {
135         EntityCacheUtil.putResult(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
136             DLFileRankImpl.class, dlFileRank.getPrimaryKey(), dlFileRank);
137 
138         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_U_F_N,
139             new Object[] {
140                 new Long(dlFileRank.getCompanyId()),
141                 new Long(dlFileRank.getUserId()),
142                 new Long(dlFileRank.getFolderId()),
143                 
144             dlFileRank.getName()
145             }, dlFileRank);
146     }
147 
148     public void cacheResult(List<DLFileRank> dlFileRanks) {
149         for (DLFileRank dlFileRank : dlFileRanks) {
150             if (EntityCacheUtil.getResult(
151                         DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
152                         DLFileRankImpl.class, dlFileRank.getPrimaryKey(), this) == null) {
153                 cacheResult(dlFileRank);
154             }
155         }
156     }
157 
158     public void clearCache() {
159         CacheRegistry.clear(DLFileRankImpl.class.getName());
160         EntityCacheUtil.clearCache(DLFileRankImpl.class.getName());
161         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
162         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
163     }
164 
165     public DLFileRank create(long fileRankId) {
166         DLFileRank dlFileRank = new DLFileRankImpl();
167 
168         dlFileRank.setNew(true);
169         dlFileRank.setPrimaryKey(fileRankId);
170 
171         return dlFileRank;
172     }
173 
174     public DLFileRank remove(long fileRankId)
175         throws NoSuchFileRankException, SystemException {
176         Session session = null;
177 
178         try {
179             session = openSession();
180 
181             DLFileRank dlFileRank = (DLFileRank)session.get(DLFileRankImpl.class,
182                     new Long(fileRankId));
183 
184             if (dlFileRank == null) {
185                 if (_log.isWarnEnabled()) {
186                     _log.warn("No DLFileRank exists with the primary key " +
187                         fileRankId);
188                 }
189 
190                 throw new NoSuchFileRankException(
191                     "No DLFileRank exists with the primary key " + fileRankId);
192             }
193 
194             return remove(dlFileRank);
195         }
196         catch (NoSuchFileRankException nsee) {
197             throw nsee;
198         }
199         catch (Exception e) {
200             throw processException(e);
201         }
202         finally {
203             closeSession(session);
204         }
205     }
206 
207     public DLFileRank remove(DLFileRank dlFileRank) throws SystemException {
208         for (ModelListener<DLFileRank> listener : listeners) {
209             listener.onBeforeRemove(dlFileRank);
210         }
211 
212         dlFileRank = removeImpl(dlFileRank);
213 
214         for (ModelListener<DLFileRank> listener : listeners) {
215             listener.onAfterRemove(dlFileRank);
216         }
217 
218         return dlFileRank;
219     }
220 
221     protected DLFileRank removeImpl(DLFileRank dlFileRank)
222         throws SystemException {
223         Session session = null;
224 
225         try {
226             session = openSession();
227 
228             if (dlFileRank.isCachedModel() || BatchSessionUtil.isEnabled()) {
229                 Object staleObject = session.get(DLFileRankImpl.class,
230                         dlFileRank.getPrimaryKeyObj());
231 
232                 if (staleObject != null) {
233                     session.evict(staleObject);
234                 }
235             }
236 
237             session.delete(dlFileRank);
238 
239             session.flush();
240         }
241         catch (Exception e) {
242             throw processException(e);
243         }
244         finally {
245             closeSession(session);
246         }
247 
248         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
249 
250         DLFileRankModelImpl dlFileRankModelImpl = (DLFileRankModelImpl)dlFileRank;
251 
252         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_U_F_N,
253             new Object[] {
254                 new Long(dlFileRankModelImpl.getOriginalCompanyId()),
255                 new Long(dlFileRankModelImpl.getOriginalUserId()),
256                 new Long(dlFileRankModelImpl.getOriginalFolderId()),
257                 
258             dlFileRankModelImpl.getOriginalName()
259             });
260 
261         EntityCacheUtil.removeResult(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
262             DLFileRankImpl.class, dlFileRank.getPrimaryKey());
263 
264         return dlFileRank;
265     }
266 
267     /**
268      * @deprecated Use <code>update(DLFileRank dlFileRank, boolean merge)</code>.
269      */
270     public DLFileRank update(DLFileRank dlFileRank) throws SystemException {
271         if (_log.isWarnEnabled()) {
272             _log.warn(
273                 "Using the deprecated update(DLFileRank dlFileRank) method. Use update(DLFileRank dlFileRank, boolean merge) instead.");
274         }
275 
276         return update(dlFileRank, false);
277     }
278 
279     /**
280      * Add, update, or merge, the entity. This method also calls the model
281      * listeners to trigger the proper events associated with adding, deleting,
282      * or updating an entity.
283      *
284      * @param        dlFileRank the entity to add, update, or merge
285      * @param        merge boolean value for whether to merge the entity. The
286      *                default value is false. Setting merge to true is more
287      *                expensive and should only be true when dlFileRank is
288      *                transient. See LEP-5473 for a detailed discussion of this
289      *                method.
290      * @return        true if the portlet can be displayed via Ajax
291      */
292     public DLFileRank update(DLFileRank dlFileRank, boolean merge)
293         throws SystemException {
294         boolean isNew = dlFileRank.isNew();
295 
296         for (ModelListener<DLFileRank> listener : listeners) {
297             if (isNew) {
298                 listener.onBeforeCreate(dlFileRank);
299             }
300             else {
301                 listener.onBeforeUpdate(dlFileRank);
302             }
303         }
304 
305         dlFileRank = updateImpl(dlFileRank, merge);
306 
307         for (ModelListener<DLFileRank> listener : listeners) {
308             if (isNew) {
309                 listener.onAfterCreate(dlFileRank);
310             }
311             else {
312                 listener.onAfterUpdate(dlFileRank);
313             }
314         }
315 
316         return dlFileRank;
317     }
318 
319     public DLFileRank updateImpl(
320         com.liferay.portlet.documentlibrary.model.DLFileRank dlFileRank,
321         boolean merge) throws SystemException {
322         boolean isNew = dlFileRank.isNew();
323 
324         DLFileRankModelImpl dlFileRankModelImpl = (DLFileRankModelImpl)dlFileRank;
325 
326         Session session = null;
327 
328         try {
329             session = openSession();
330 
331             BatchSessionUtil.update(session, dlFileRank, merge);
332 
333             dlFileRank.setNew(false);
334         }
335         catch (Exception e) {
336             throw processException(e);
337         }
338         finally {
339             closeSession(session);
340         }
341 
342         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
343 
344         EntityCacheUtil.putResult(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
345             DLFileRankImpl.class, dlFileRank.getPrimaryKey(), dlFileRank);
346 
347         if (!isNew &&
348                 ((dlFileRank.getCompanyId() != dlFileRankModelImpl.getOriginalCompanyId()) ||
349                 (dlFileRank.getUserId() != dlFileRankModelImpl.getOriginalUserId()) ||
350                 (dlFileRank.getFolderId() != dlFileRankModelImpl.getOriginalFolderId()) ||
351                 !Validator.equals(dlFileRank.getName(),
352                     dlFileRankModelImpl.getOriginalName()))) {
353             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_U_F_N,
354                 new Object[] {
355                     new Long(dlFileRankModelImpl.getOriginalCompanyId()),
356                     new Long(dlFileRankModelImpl.getOriginalUserId()),
357                     new Long(dlFileRankModelImpl.getOriginalFolderId()),
358                     
359                 dlFileRankModelImpl.getOriginalName()
360                 });
361         }
362 
363         if (isNew ||
364                 ((dlFileRank.getCompanyId() != dlFileRankModelImpl.getOriginalCompanyId()) ||
365                 (dlFileRank.getUserId() != dlFileRankModelImpl.getOriginalUserId()) ||
366                 (dlFileRank.getFolderId() != dlFileRankModelImpl.getOriginalFolderId()) ||
367                 !Validator.equals(dlFileRank.getName(),
368                     dlFileRankModelImpl.getOriginalName()))) {
369             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_U_F_N,
370                 new Object[] {
371                     new Long(dlFileRank.getCompanyId()),
372                     new Long(dlFileRank.getUserId()),
373                     new Long(dlFileRank.getFolderId()),
374                     
375                 dlFileRank.getName()
376                 }, dlFileRank);
377         }
378 
379         return dlFileRank;
380     }
381 
382     public DLFileRank findByPrimaryKey(long fileRankId)
383         throws NoSuchFileRankException, SystemException {
384         DLFileRank dlFileRank = fetchByPrimaryKey(fileRankId);
385 
386         if (dlFileRank == null) {
387             if (_log.isWarnEnabled()) {
388                 _log.warn("No DLFileRank exists with the primary key " +
389                     fileRankId);
390             }
391 
392             throw new NoSuchFileRankException(
393                 "No DLFileRank exists with the primary key " + fileRankId);
394         }
395 
396         return dlFileRank;
397     }
398 
399     public DLFileRank fetchByPrimaryKey(long fileRankId)
400         throws SystemException {
401         DLFileRank dlFileRank = (DLFileRank)EntityCacheUtil.getResult(DLFileRankModelImpl.ENTITY_CACHE_ENABLED,
402                 DLFileRankImpl.class, fileRankId, this);
403 
404         if (dlFileRank == null) {
405             Session session = null;
406 
407             try {
408                 session = openSession();
409 
410                 dlFileRank = (DLFileRank)session.get(DLFileRankImpl.class,
411                         new Long(fileRankId));
412             }
413             catch (Exception e) {
414                 throw processException(e);
415             }
416             finally {
417                 if (dlFileRank != null) {
418                     cacheResult(dlFileRank);
419                 }
420 
421                 closeSession(session);
422             }
423         }
424 
425         return dlFileRank;
426     }
427 
428     public List<DLFileRank> findByUserId(long userId) throws SystemException {
429         Object[] finderArgs = new Object[] { new Long(userId) };
430 
431         List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_USERID,
432                 finderArgs, this);
433 
434         if (list == null) {
435             Session session = null;
436 
437             try {
438                 session = openSession();
439 
440                 StringBuilder query = new StringBuilder();
441 
442                 query.append(
443                     "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
444 
445                 query.append("dlFileRank.userId = ?");
446 
447                 query.append(" ");
448 
449                 query.append("ORDER BY ");
450 
451                 query.append("dlFileRank.createDate DESC");
452 
453                 Query q = session.createQuery(query.toString());
454 
455                 QueryPos qPos = QueryPos.getInstance(q);
456 
457                 qPos.add(userId);
458 
459                 list = q.list();
460             }
461             catch (Exception e) {
462                 throw processException(e);
463             }
464             finally {
465                 if (list == null) {
466                     list = new ArrayList<DLFileRank>();
467                 }
468 
469                 cacheResult(list);
470 
471                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_USERID,
472                     finderArgs, list);
473 
474                 closeSession(session);
475             }
476         }
477 
478         return list;
479     }
480 
481     public List<DLFileRank> findByUserId(long userId, int start, int end)
482         throws SystemException {
483         return findByUserId(userId, start, end, null);
484     }
485 
486     public List<DLFileRank> findByUserId(long userId, int start, int end,
487         OrderByComparator obc) throws SystemException {
488         Object[] finderArgs = new Object[] {
489                 new Long(userId),
490                 
491                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
492             };
493 
494         List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_USERID,
495                 finderArgs, this);
496 
497         if (list == null) {
498             Session session = null;
499 
500             try {
501                 session = openSession();
502 
503                 StringBuilder query = new StringBuilder();
504 
505                 query.append(
506                     "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
507 
508                 query.append("dlFileRank.userId = ?");
509 
510                 query.append(" ");
511 
512                 if (obc != null) {
513                     query.append("ORDER BY ");
514 
515                     String[] orderByFields = obc.getOrderByFields();
516 
517                     for (int i = 0; i < orderByFields.length; i++) {
518                         query.append("dlFileRank.");
519                         query.append(orderByFields[i]);
520 
521                         if (obc.isAscending()) {
522                             query.append(" ASC");
523                         }
524                         else {
525                             query.append(" DESC");
526                         }
527 
528                         if ((i + 1) < orderByFields.length) {
529                             query.append(", ");
530                         }
531                     }
532                 }
533 
534                 else {
535                     query.append("ORDER BY ");
536 
537                     query.append("dlFileRank.createDate DESC");
538                 }
539 
540                 Query q = session.createQuery(query.toString());
541 
542                 QueryPos qPos = QueryPos.getInstance(q);
543 
544                 qPos.add(userId);
545 
546                 list = (List<DLFileRank>)QueryUtil.list(q, getDialect(), start,
547                         end);
548             }
549             catch (Exception e) {
550                 throw processException(e);
551             }
552             finally {
553                 if (list == null) {
554                     list = new ArrayList<DLFileRank>();
555                 }
556 
557                 cacheResult(list);
558 
559                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_USERID,
560                     finderArgs, list);
561 
562                 closeSession(session);
563             }
564         }
565 
566         return list;
567     }
568 
569     public DLFileRank findByUserId_First(long userId, OrderByComparator obc)
570         throws NoSuchFileRankException, SystemException {
571         List<DLFileRank> list = findByUserId(userId, 0, 1, obc);
572 
573         if (list.isEmpty()) {
574             StringBuilder msg = new StringBuilder();
575 
576             msg.append("No DLFileRank exists with the key {");
577 
578             msg.append("userId=" + userId);
579 
580             msg.append(StringPool.CLOSE_CURLY_BRACE);
581 
582             throw new NoSuchFileRankException(msg.toString());
583         }
584         else {
585             return list.get(0);
586         }
587     }
588 
589     public DLFileRank findByUserId_Last(long userId, OrderByComparator obc)
590         throws NoSuchFileRankException, SystemException {
591         int count = countByUserId(userId);
592 
593         List<DLFileRank> list = findByUserId(userId, count - 1, count, obc);
594 
595         if (list.isEmpty()) {
596             StringBuilder msg = new StringBuilder();
597 
598             msg.append("No DLFileRank exists with the key {");
599 
600             msg.append("userId=" + userId);
601 
602             msg.append(StringPool.CLOSE_CURLY_BRACE);
603 
604             throw new NoSuchFileRankException(msg.toString());
605         }
606         else {
607             return list.get(0);
608         }
609     }
610 
611     public DLFileRank[] findByUserId_PrevAndNext(long fileRankId, long userId,
612         OrderByComparator obc) throws NoSuchFileRankException, SystemException {
613         DLFileRank dlFileRank = findByPrimaryKey(fileRankId);
614 
615         int count = countByUserId(userId);
616 
617         Session session = null;
618 
619         try {
620             session = openSession();
621 
622             StringBuilder query = new StringBuilder();
623 
624             query.append("SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
625 
626             query.append("dlFileRank.userId = ?");
627 
628             query.append(" ");
629 
630             if (obc != null) {
631                 query.append("ORDER BY ");
632 
633                 String[] orderByFields = obc.getOrderByFields();
634 
635                 for (int i = 0; i < orderByFields.length; i++) {
636                     query.append("dlFileRank.");
637                     query.append(orderByFields[i]);
638 
639                     if (obc.isAscending()) {
640                         query.append(" ASC");
641                     }
642                     else {
643                         query.append(" DESC");
644                     }
645 
646                     if ((i + 1) < orderByFields.length) {
647                         query.append(", ");
648                     }
649                 }
650             }
651 
652             else {
653                 query.append("ORDER BY ");
654 
655                 query.append("dlFileRank.createDate DESC");
656             }
657 
658             Query q = session.createQuery(query.toString());
659 
660             QueryPos qPos = QueryPos.getInstance(q);
661 
662             qPos.add(userId);
663 
664             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
665                     dlFileRank);
666 
667             DLFileRank[] array = new DLFileRankImpl[3];
668 
669             array[0] = (DLFileRank)objArray[0];
670             array[1] = (DLFileRank)objArray[1];
671             array[2] = (DLFileRank)objArray[2];
672 
673             return array;
674         }
675         catch (Exception e) {
676             throw processException(e);
677         }
678         finally {
679             closeSession(session);
680         }
681     }
682 
683     public List<DLFileRank> findByG_U(long groupId, long userId)
684         throws SystemException {
685         Object[] finderArgs = new Object[] { new Long(groupId), new Long(userId) };
686 
687         List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_G_U,
688                 finderArgs, this);
689 
690         if (list == null) {
691             Session session = null;
692 
693             try {
694                 session = openSession();
695 
696                 StringBuilder query = new StringBuilder();
697 
698                 query.append(
699                     "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
700 
701                 query.append("dlFileRank.groupId = ?");
702 
703                 query.append(" AND ");
704 
705                 query.append("dlFileRank.userId = ?");
706 
707                 query.append(" ");
708 
709                 query.append("ORDER BY ");
710 
711                 query.append("dlFileRank.createDate DESC");
712 
713                 Query q = session.createQuery(query.toString());
714 
715                 QueryPos qPos = QueryPos.getInstance(q);
716 
717                 qPos.add(groupId);
718 
719                 qPos.add(userId);
720 
721                 list = q.list();
722             }
723             catch (Exception e) {
724                 throw processException(e);
725             }
726             finally {
727                 if (list == null) {
728                     list = new ArrayList<DLFileRank>();
729                 }
730 
731                 cacheResult(list);
732 
733                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_G_U, finderArgs,
734                     list);
735 
736                 closeSession(session);
737             }
738         }
739 
740         return list;
741     }
742 
743     public List<DLFileRank> findByG_U(long groupId, long userId, int start,
744         int end) throws SystemException {
745         return findByG_U(groupId, userId, start, end, null);
746     }
747 
748     public List<DLFileRank> findByG_U(long groupId, long userId, int start,
749         int end, OrderByComparator obc) throws SystemException {
750         Object[] finderArgs = new Object[] {
751                 new Long(groupId), new Long(userId),
752                 
753                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
754             };
755 
756         List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_G_U,
757                 finderArgs, this);
758 
759         if (list == null) {
760             Session session = null;
761 
762             try {
763                 session = openSession();
764 
765                 StringBuilder query = new StringBuilder();
766 
767                 query.append(
768                     "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
769 
770                 query.append("dlFileRank.groupId = ?");
771 
772                 query.append(" AND ");
773 
774                 query.append("dlFileRank.userId = ?");
775 
776                 query.append(" ");
777 
778                 if (obc != null) {
779                     query.append("ORDER BY ");
780 
781                     String[] orderByFields = obc.getOrderByFields();
782 
783                     for (int i = 0; i < orderByFields.length; i++) {
784                         query.append("dlFileRank.");
785                         query.append(orderByFields[i]);
786 
787                         if (obc.isAscending()) {
788                             query.append(" ASC");
789                         }
790                         else {
791                             query.append(" DESC");
792                         }
793 
794                         if ((i + 1) < orderByFields.length) {
795                             query.append(", ");
796                         }
797                     }
798                 }
799 
800                 else {
801                     query.append("ORDER BY ");
802 
803                     query.append("dlFileRank.createDate DESC");
804                 }
805 
806                 Query q = session.createQuery(query.toString());
807 
808                 QueryPos qPos = QueryPos.getInstance(q);
809 
810                 qPos.add(groupId);
811 
812                 qPos.add(userId);
813 
814                 list = (List<DLFileRank>)QueryUtil.list(q, getDialect(), start,
815                         end);
816             }
817             catch (Exception e) {
818                 throw processException(e);
819             }
820             finally {
821                 if (list == null) {
822                     list = new ArrayList<DLFileRank>();
823                 }
824 
825                 cacheResult(list);
826 
827                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_G_U,
828                     finderArgs, list);
829 
830                 closeSession(session);
831             }
832         }
833 
834         return list;
835     }
836 
837     public DLFileRank findByG_U_First(long groupId, long userId,
838         OrderByComparator obc) throws NoSuchFileRankException, SystemException {
839         List<DLFileRank> list = findByG_U(groupId, userId, 0, 1, obc);
840 
841         if (list.isEmpty()) {
842             StringBuilder msg = new StringBuilder();
843 
844             msg.append("No DLFileRank exists with the key {");
845 
846             msg.append("groupId=" + groupId);
847 
848             msg.append(", ");
849             msg.append("userId=" + userId);
850 
851             msg.append(StringPool.CLOSE_CURLY_BRACE);
852 
853             throw new NoSuchFileRankException(msg.toString());
854         }
855         else {
856             return list.get(0);
857         }
858     }
859 
860     public DLFileRank findByG_U_Last(long groupId, long userId,
861         OrderByComparator obc) throws NoSuchFileRankException, SystemException {
862         int count = countByG_U(groupId, userId);
863 
864         List<DLFileRank> list = findByG_U(groupId, userId, count - 1, count, obc);
865 
866         if (list.isEmpty()) {
867             StringBuilder msg = new StringBuilder();
868 
869             msg.append("No DLFileRank exists with the key {");
870 
871             msg.append("groupId=" + groupId);
872 
873             msg.append(", ");
874             msg.append("userId=" + userId);
875 
876             msg.append(StringPool.CLOSE_CURLY_BRACE);
877 
878             throw new NoSuchFileRankException(msg.toString());
879         }
880         else {
881             return list.get(0);
882         }
883     }
884 
885     public DLFileRank[] findByG_U_PrevAndNext(long fileRankId, long groupId,
886         long userId, OrderByComparator obc)
887         throws NoSuchFileRankException, SystemException {
888         DLFileRank dlFileRank = findByPrimaryKey(fileRankId);
889 
890         int count = countByG_U(groupId, userId);
891 
892         Session session = null;
893 
894         try {
895             session = openSession();
896 
897             StringBuilder query = new StringBuilder();
898 
899             query.append("SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
900 
901             query.append("dlFileRank.groupId = ?");
902 
903             query.append(" AND ");
904 
905             query.append("dlFileRank.userId = ?");
906 
907             query.append(" ");
908 
909             if (obc != null) {
910                 query.append("ORDER BY ");
911 
912                 String[] orderByFields = obc.getOrderByFields();
913 
914                 for (int i = 0; i < orderByFields.length; i++) {
915                     query.append("dlFileRank.");
916                     query.append(orderByFields[i]);
917 
918                     if (obc.isAscending()) {
919                         query.append(" ASC");
920                     }
921                     else {
922                         query.append(" DESC");
923                     }
924 
925                     if ((i + 1) < orderByFields.length) {
926                         query.append(", ");
927                     }
928                 }
929             }
930 
931             else {
932                 query.append("ORDER BY ");
933 
934                 query.append("dlFileRank.createDate DESC");
935             }
936 
937             Query q = session.createQuery(query.toString());
938 
939             QueryPos qPos = QueryPos.getInstance(q);
940 
941             qPos.add(groupId);
942 
943             qPos.add(userId);
944 
945             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
946                     dlFileRank);
947 
948             DLFileRank[] array = new DLFileRankImpl[3];
949 
950             array[0] = (DLFileRank)objArray[0];
951             array[1] = (DLFileRank)objArray[1];
952             array[2] = (DLFileRank)objArray[2];
953 
954             return array;
955         }
956         catch (Exception e) {
957             throw processException(e);
958         }
959         finally {
960             closeSession(session);
961         }
962     }
963 
964     public List<DLFileRank> findByF_N(long folderId, String name)
965         throws SystemException {
966         Object[] finderArgs = new Object[] { new Long(folderId), name };
967 
968         List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_F_N,
969                 finderArgs, this);
970 
971         if (list == null) {
972             Session session = null;
973 
974             try {
975                 session = openSession();
976 
977                 StringBuilder query = new StringBuilder();
978 
979                 query.append(
980                     "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
981 
982                 query.append("dlFileRank.folderId = ?");
983 
984                 query.append(" AND ");
985 
986                 if (name == null) {
987                     query.append("dlFileRank.name IS NULL");
988                 }
989                 else {
990                     query.append("dlFileRank.name = ?");
991                 }
992 
993                 query.append(" ");
994 
995                 query.append("ORDER BY ");
996 
997                 query.append("dlFileRank.createDate DESC");
998 
999                 Query q = session.createQuery(query.toString());
1000
1001                QueryPos qPos = QueryPos.getInstance(q);
1002
1003                qPos.add(folderId);
1004
1005                if (name != null) {
1006                    qPos.add(name);
1007                }
1008
1009                list = q.list();
1010            }
1011            catch (Exception e) {
1012                throw processException(e);
1013            }
1014            finally {
1015                if (list == null) {
1016                    list = new ArrayList<DLFileRank>();
1017                }
1018
1019                cacheResult(list);
1020
1021                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_F_N, finderArgs,
1022                    list);
1023
1024                closeSession(session);
1025            }
1026        }
1027
1028        return list;
1029    }
1030
1031    public List<DLFileRank> findByF_N(long folderId, String name, int start,
1032        int end) throws SystemException {
1033        return findByF_N(folderId, name, start, end, null);
1034    }
1035
1036    public List<DLFileRank> findByF_N(long folderId, String name, int start,
1037        int end, OrderByComparator obc) throws SystemException {
1038        Object[] finderArgs = new Object[] {
1039                new Long(folderId),
1040                
1041                name,
1042                
1043                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1044            };
1045
1046        List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_F_N,
1047                finderArgs, this);
1048
1049        if (list == null) {
1050            Session session = null;
1051
1052            try {
1053                session = openSession();
1054
1055                StringBuilder query = new StringBuilder();
1056
1057                query.append(
1058                    "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
1059
1060                query.append("dlFileRank.folderId = ?");
1061
1062                query.append(" AND ");
1063
1064                if (name == null) {
1065                    query.append("dlFileRank.name IS NULL");
1066                }
1067                else {
1068                    query.append("dlFileRank.name = ?");
1069                }
1070
1071                query.append(" ");
1072
1073                if (obc != null) {
1074                    query.append("ORDER BY ");
1075
1076                    String[] orderByFields = obc.getOrderByFields();
1077
1078                    for (int i = 0; i < orderByFields.length; i++) {
1079                        query.append("dlFileRank.");
1080                        query.append(orderByFields[i]);
1081
1082                        if (obc.isAscending()) {
1083                            query.append(" ASC");
1084                        }
1085                        else {
1086                            query.append(" DESC");
1087                        }
1088
1089                        if ((i + 1) < orderByFields.length) {
1090                            query.append(", ");
1091                        }
1092                    }
1093                }
1094
1095                else {
1096                    query.append("ORDER BY ");
1097
1098                    query.append("dlFileRank.createDate DESC");
1099                }
1100
1101                Query q = session.createQuery(query.toString());
1102
1103                QueryPos qPos = QueryPos.getInstance(q);
1104
1105                qPos.add(folderId);
1106
1107                if (name != null) {
1108                    qPos.add(name);
1109                }
1110
1111                list = (List<DLFileRank>)QueryUtil.list(q, getDialect(), start,
1112                        end);
1113            }
1114            catch (Exception e) {
1115                throw processException(e);
1116            }
1117            finally {
1118                if (list == null) {
1119                    list = new ArrayList<DLFileRank>();
1120                }
1121
1122                cacheResult(list);
1123
1124                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_F_N,
1125                    finderArgs, list);
1126
1127                closeSession(session);
1128            }
1129        }
1130
1131        return list;
1132    }
1133
1134    public DLFileRank findByF_N_First(long folderId, String name,
1135        OrderByComparator obc) throws NoSuchFileRankException, SystemException {
1136        List<DLFileRank> list = findByF_N(folderId, name, 0, 1, obc);
1137
1138        if (list.isEmpty()) {
1139            StringBuilder msg = new StringBuilder();
1140
1141            msg.append("No DLFileRank exists with the key {");
1142
1143            msg.append("folderId=" + folderId);
1144
1145            msg.append(", ");
1146            msg.append("name=" + name);
1147
1148            msg.append(StringPool.CLOSE_CURLY_BRACE);
1149
1150            throw new NoSuchFileRankException(msg.toString());
1151        }
1152        else {
1153            return list.get(0);
1154        }
1155    }
1156
1157    public DLFileRank findByF_N_Last(long folderId, String name,
1158        OrderByComparator obc) throws NoSuchFileRankException, SystemException {
1159        int count = countByF_N(folderId, name);
1160
1161        List<DLFileRank> list = findByF_N(folderId, name, count - 1, count, obc);
1162
1163        if (list.isEmpty()) {
1164            StringBuilder msg = new StringBuilder();
1165
1166            msg.append("No DLFileRank exists with the key {");
1167
1168            msg.append("folderId=" + folderId);
1169
1170            msg.append(", ");
1171            msg.append("name=" + name);
1172
1173            msg.append(StringPool.CLOSE_CURLY_BRACE);
1174
1175            throw new NoSuchFileRankException(msg.toString());
1176        }
1177        else {
1178            return list.get(0);
1179        }
1180    }
1181
1182    public DLFileRank[] findByF_N_PrevAndNext(long fileRankId, long folderId,
1183        String name, OrderByComparator obc)
1184        throws NoSuchFileRankException, SystemException {
1185        DLFileRank dlFileRank = findByPrimaryKey(fileRankId);
1186
1187        int count = countByF_N(folderId, name);
1188
1189        Session session = null;
1190
1191        try {
1192            session = openSession();
1193
1194            StringBuilder query = new StringBuilder();
1195
1196            query.append("SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
1197
1198            query.append("dlFileRank.folderId = ?");
1199
1200            query.append(" AND ");
1201
1202            if (name == null) {
1203                query.append("dlFileRank.name IS NULL");
1204            }
1205            else {
1206                query.append("dlFileRank.name = ?");
1207            }
1208
1209            query.append(" ");
1210
1211            if (obc != null) {
1212                query.append("ORDER BY ");
1213
1214                String[] orderByFields = obc.getOrderByFields();
1215
1216                for (int i = 0; i < orderByFields.length; i++) {
1217                    query.append("dlFileRank.");
1218                    query.append(orderByFields[i]);
1219
1220                    if (obc.isAscending()) {
1221                        query.append(" ASC");
1222                    }
1223                    else {
1224                        query.append(" DESC");
1225                    }
1226
1227                    if ((i + 1) < orderByFields.length) {
1228                        query.append(", ");
1229                    }
1230                }
1231            }
1232
1233            else {
1234                query.append("ORDER BY ");
1235
1236                query.append("dlFileRank.createDate DESC");
1237            }
1238
1239            Query q = session.createQuery(query.toString());
1240
1241            QueryPos qPos = QueryPos.getInstance(q);
1242
1243            qPos.add(folderId);
1244
1245            if (name != null) {
1246                qPos.add(name);
1247            }
1248
1249            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1250                    dlFileRank);
1251
1252            DLFileRank[] array = new DLFileRankImpl[3];
1253
1254            array[0] = (DLFileRank)objArray[0];
1255            array[1] = (DLFileRank)objArray[1];
1256            array[2] = (DLFileRank)objArray[2];
1257
1258            return array;
1259        }
1260        catch (Exception e) {
1261            throw processException(e);
1262        }
1263        finally {
1264            closeSession(session);
1265        }
1266    }
1267
1268    public DLFileRank findByC_U_F_N(long companyId, long userId, long folderId,
1269        String name) throws NoSuchFileRankException, SystemException {
1270        DLFileRank dlFileRank = fetchByC_U_F_N(companyId, userId, folderId, name);
1271
1272        if (dlFileRank == null) {
1273            StringBuilder msg = new StringBuilder();
1274
1275            msg.append("No DLFileRank exists with the key {");
1276
1277            msg.append("companyId=" + companyId);
1278
1279            msg.append(", ");
1280            msg.append("userId=" + userId);
1281
1282            msg.append(", ");
1283            msg.append("folderId=" + folderId);
1284
1285            msg.append(", ");
1286            msg.append("name=" + name);
1287
1288            msg.append(StringPool.CLOSE_CURLY_BRACE);
1289
1290            if (_log.isWarnEnabled()) {
1291                _log.warn(msg.toString());
1292            }
1293
1294            throw new NoSuchFileRankException(msg.toString());
1295        }
1296
1297        return dlFileRank;
1298    }
1299
1300    public DLFileRank fetchByC_U_F_N(long companyId, long userId,
1301        long folderId, String name) throws SystemException {
1302        return fetchByC_U_F_N(companyId, userId, folderId, name, true);
1303    }
1304
1305    public DLFileRank fetchByC_U_F_N(long companyId, long userId,
1306        long folderId, String name, boolean retrieveFromCache)
1307        throws SystemException {
1308        Object[] finderArgs = new Object[] {
1309                new Long(companyId), new Long(userId), new Long(folderId),
1310                
1311                name
1312            };
1313
1314        Object result = null;
1315
1316        if (retrieveFromCache) {
1317            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_C_U_F_N,
1318                    finderArgs, this);
1319        }
1320
1321        if (result == null) {
1322            Session session = null;
1323
1324            try {
1325                session = openSession();
1326
1327                StringBuilder query = new StringBuilder();
1328
1329                query.append(
1330                    "SELECT dlFileRank FROM DLFileRank dlFileRank WHERE ");
1331
1332                query.append("dlFileRank.companyId = ?");
1333
1334                query.append(" AND ");
1335
1336                query.append("dlFileRank.userId = ?");
1337
1338                query.append(" AND ");
1339
1340                query.append("dlFileRank.folderId = ?");
1341
1342                query.append(" AND ");
1343
1344                if (name == null) {
1345                    query.append("dlFileRank.name IS NULL");
1346                }
1347                else {
1348                    query.append("dlFileRank.name = ?");
1349                }
1350
1351                query.append(" ");
1352
1353                query.append("ORDER BY ");
1354
1355                query.append("dlFileRank.createDate DESC");
1356
1357                Query q = session.createQuery(query.toString());
1358
1359                QueryPos qPos = QueryPos.getInstance(q);
1360
1361                qPos.add(companyId);
1362
1363                qPos.add(userId);
1364
1365                qPos.add(folderId);
1366
1367                if (name != null) {
1368                    qPos.add(name);
1369                }
1370
1371                List<DLFileRank> list = q.list();
1372
1373                result = list;
1374
1375                DLFileRank dlFileRank = null;
1376
1377                if (list.isEmpty()) {
1378                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_U_F_N,
1379                        finderArgs, list);
1380                }
1381                else {
1382                    dlFileRank = list.get(0);
1383
1384                    cacheResult(dlFileRank);
1385
1386                    if ((dlFileRank.getCompanyId() != companyId) ||
1387                            (dlFileRank.getUserId() != userId) ||
1388                            (dlFileRank.getFolderId() != folderId) ||
1389                            (dlFileRank.getName() == null) ||
1390                            !dlFileRank.getName().equals(name)) {
1391                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_U_F_N,
1392                            finderArgs, dlFileRank);
1393                    }
1394                }
1395
1396                return dlFileRank;
1397            }
1398            catch (Exception e) {
1399                throw processException(e);
1400            }
1401            finally {
1402                if (result == null) {
1403                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_U_F_N,
1404                        finderArgs, new ArrayList<DLFileRank>());
1405                }
1406
1407                closeSession(session);
1408            }
1409        }
1410        else {
1411            if (result instanceof List) {
1412                return null;
1413            }
1414            else {
1415                return (DLFileRank)result;
1416            }
1417        }
1418    }
1419
1420    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
1421        throws SystemException {
1422        Session session = null;
1423
1424        try {
1425            session = openSession();
1426
1427            dynamicQuery.compile(session);
1428
1429            return dynamicQuery.list();
1430        }
1431        catch (Exception e) {
1432            throw processException(e);
1433        }
1434        finally {
1435            closeSession(session);
1436        }
1437    }
1438
1439    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
1440        int start, int end) throws SystemException {
1441        Session session = null;
1442
1443        try {
1444            session = openSession();
1445
1446            dynamicQuery.setLimit(start, end);
1447
1448            dynamicQuery.compile(session);
1449
1450            return dynamicQuery.list();
1451        }
1452        catch (Exception e) {
1453            throw processException(e);
1454        }
1455        finally {
1456            closeSession(session);
1457        }
1458    }
1459
1460    public List<DLFileRank> findAll() throws SystemException {
1461        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
1462    }
1463
1464    public List<DLFileRank> findAll(int start, int end)
1465        throws SystemException {
1466        return findAll(start, end, null);
1467    }
1468
1469    public List<DLFileRank> findAll(int start, int end, OrderByComparator obc)
1470        throws SystemException {
1471        Object[] finderArgs = new Object[] {
1472                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1473            };
1474
1475        List<DLFileRank> list = (List<DLFileRank>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
1476                finderArgs, this);
1477
1478        if (list == null) {
1479            Session session = null;
1480
1481            try {
1482                session = openSession();
1483
1484                StringBuilder query = new StringBuilder();
1485
1486                query.append("SELECT dlFileRank FROM DLFileRank dlFileRank ");
1487
1488                if (obc != null) {
1489                    query.append("ORDER BY ");
1490
1491                    String[] orderByFields = obc.getOrderByFields();
1492
1493                    for (int i = 0; i < orderByFields.length; i++) {
1494                        query.append("dlFileRank.");
1495                        query.append(orderByFields[i]);
1496
1497                        if (obc.isAscending()) {
1498                            query.append(" ASC");
1499                        }
1500                        else {
1501                            query.append(" DESC");
1502                        }
1503
1504                        if ((i + 1) < orderByFields.length) {
1505                            query.append(", ");
1506                        }
1507                    }
1508                }
1509
1510                else {
1511                    query.append("ORDER BY ");
1512
1513                    query.append("dlFileRank.createDate DESC");
1514                }
1515
1516                Query q = session.createQuery(query.toString());
1517
1518                if (obc == null) {
1519                    list = (List<DLFileRank>)QueryUtil.list(q, getDialect(),
1520                            start, end, false);
1521
1522                    Collections.sort(list);
1523                }
1524                else {
1525                    list = (List<DLFileRank>)QueryUtil.list(q, getDialect(),
1526                            start, end);
1527                }
1528            }
1529            catch (Exception e) {
1530                throw processException(e);
1531            }
1532            finally {
1533                if (list == null) {
1534                    list = new ArrayList<DLFileRank>();
1535                }
1536
1537                cacheResult(list);
1538
1539                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
1540
1541                closeSession(session);
1542            }
1543        }
1544
1545        return list;
1546    }
1547
1548    public void removeByUserId(long userId) throws SystemException {
1549        for (DLFileRank dlFileRank : findByUserId(userId)) {
1550            remove(dlFileRank);
1551        }
1552    }
1553
1554    public void removeByG_U(long groupId, long userId)
1555        throws SystemException {
1556        for (DLFileRank dlFileRank : findByG_U(groupId, userId)) {
1557            remove(dlFileRank);
1558        }
1559    }
1560
1561    public void removeByF_N(long folderId, String name)
1562        throws SystemException {
1563        for (DLFileRank dlFileRank : findByF_N(folderId, name)) {
1564            remove(dlFileRank);
1565        }
1566    }
1567
1568    public void removeByC_U_F_N(long companyId, long userId, long folderId,
1569        String name) throws NoSuchFileRankException, SystemException {
1570        DLFileRank dlFileRank = findByC_U_F_N(companyId, userId, folderId, name);
1571
1572        remove(dlFileRank);
1573    }
1574
1575    public void removeAll() throws SystemException {
1576        for (DLFileRank dlFileRank : findAll()) {
1577            remove(dlFileRank);
1578        }
1579    }
1580
1581    public int countByUserId(long userId) throws SystemException {
1582        Object[] finderArgs = new Object[] { new Long(userId) };
1583
1584        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_USERID,
1585                finderArgs, this);
1586
1587        if (count == null) {
1588            Session session = null;
1589
1590            try {
1591                session = openSession();
1592
1593                StringBuilder query = new StringBuilder();
1594
1595                query.append("SELECT COUNT(dlFileRank) ");
1596                query.append("FROM DLFileRank dlFileRank WHERE ");
1597
1598                query.append("dlFileRank.userId = ?");
1599
1600                query.append(" ");
1601
1602                Query q = session.createQuery(query.toString());
1603
1604                QueryPos qPos = QueryPos.getInstance(q);
1605
1606                qPos.add(userId);
1607
1608                count = (Long)q.uniqueResult();
1609            }
1610            catch (Exception e) {
1611                throw processException(e);
1612            }
1613            finally {
1614                if (count == null) {
1615                    count = Long.valueOf(0);
1616                }
1617
1618                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_USERID,
1619                    finderArgs, count);
1620
1621                closeSession(session);
1622            }
1623        }
1624
1625        return count.intValue();
1626    }
1627
1628    public int countByG_U(long groupId, long userId) throws SystemException {
1629        Object[] finderArgs = new Object[] { new Long(groupId), new Long(userId) };
1630
1631        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_U,
1632                finderArgs, this);
1633
1634        if (count == null) {
1635            Session session = null;
1636
1637            try {
1638                session = openSession();
1639
1640                StringBuilder query = new StringBuilder();
1641
1642                query.append("SELECT COUNT(dlFileRank) ");
1643                query.append("FROM DLFileRank dlFileRank WHERE ");
1644
1645                query.append("dlFileRank.groupId = ?");
1646
1647                query.append(" AND ");
1648
1649                query.append("dlFileRank.userId = ?");
1650
1651                query.append(" ");
1652
1653                Query q = session.createQuery(query.toString());
1654
1655                QueryPos qPos = QueryPos.getInstance(q);
1656
1657                qPos.add(groupId);
1658
1659                qPos.add(userId);
1660
1661                count = (Long)q.uniqueResult();
1662            }
1663            catch (Exception e) {
1664                throw processException(e);
1665            }
1666            finally {
1667                if (count == null) {
1668                    count = Long.valueOf(0);
1669                }
1670
1671                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_U, finderArgs,
1672                    count);
1673
1674                closeSession(session);
1675            }
1676        }
1677
1678        return count.intValue();
1679    }
1680
1681    public int countByF_N(long folderId, String name) throws SystemException {
1682        Object[] finderArgs = new Object[] { new Long(folderId), name };
1683
1684        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_F_N,
1685                finderArgs, this);
1686
1687        if (count == null) {
1688            Session session = null;
1689
1690            try {
1691                session = openSession();
1692
1693                StringBuilder query = new StringBuilder();
1694
1695                query.append("SELECT COUNT(dlFileRank) ");
1696                query.append("FROM DLFileRank dlFileRank WHERE ");
1697
1698                query.append("dlFileRank.folderId = ?");
1699
1700                query.append(" AND ");
1701
1702                if (name == null) {
1703                    query.append("dlFileRank.name IS NULL");
1704                }
1705                else {
1706                    query.append("dlFileRank.name = ?");
1707                }
1708
1709                query.append(" ");
1710
1711                Query q = session.createQuery(query.toString());
1712
1713                QueryPos qPos = QueryPos.getInstance(q);
1714
1715                qPos.add(folderId);
1716
1717                if (name != null) {
1718                    qPos.add(name);
1719                }
1720
1721                count = (Long)q.uniqueResult();
1722            }
1723            catch (Exception e) {
1724                throw processException(e);
1725            }
1726            finally {
1727                if (count == null) {
1728                    count = Long.valueOf(0);
1729                }
1730
1731                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_F_N, finderArgs,
1732                    count);
1733
1734                closeSession(session);
1735            }
1736        }
1737
1738        return count.intValue();
1739    }
1740
1741    public int countByC_U_F_N(long companyId, long userId, long folderId,
1742        String name) throws SystemException {
1743        Object[] finderArgs = new Object[] {
1744                new Long(companyId), new Long(userId), new Long(folderId),
1745                
1746                name
1747            };
1748
1749        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_U_F_N,
1750                finderArgs, this);
1751
1752        if (count == null) {
1753            Session session = null;
1754
1755            try {
1756                session = openSession();
1757
1758                StringBuilder query = new StringBuilder();
1759
1760                query.append("SELECT COUNT(dlFileRank) ");
1761                query.append("FROM DLFileRank dlFileRank WHERE ");
1762
1763                query.append("dlFileRank.companyId = ?");
1764
1765                query.append(" AND ");
1766
1767                query.append("dlFileRank.userId = ?");
1768
1769                query.append(" AND ");
1770
1771                query.append("dlFileRank.folderId = ?");
1772
1773                query.append(" AND ");
1774
1775                if (name == null) {
1776                    query.append("dlFileRank.name IS NULL");
1777                }
1778                else {
1779                    query.append("dlFileRank.name = ?");
1780                }
1781
1782                query.append(" ");
1783
1784                Query q = session.createQuery(query.toString());
1785
1786                QueryPos qPos = QueryPos.getInstance(q);
1787
1788                qPos.add(companyId);
1789
1790                qPos.add(userId);
1791
1792                qPos.add(folderId);
1793
1794                if (name != null) {
1795                    qPos.add(name);
1796                }
1797
1798                count = (Long)q.uniqueResult();
1799            }
1800            catch (Exception e) {
1801                throw processException(e);
1802            }
1803            finally {
1804                if (count == null) {
1805                    count = Long.valueOf(0);
1806                }
1807
1808                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_U_F_N,
1809                    finderArgs, count);
1810
1811                closeSession(session);
1812            }
1813        }
1814
1815        return count.intValue();
1816    }
1817
1818    public int countAll() throws SystemException {
1819        Object[] finderArgs = new Object[0];
1820
1821        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1822                finderArgs, this);
1823
1824        if (count == null) {
1825            Session session = null;
1826
1827            try {
1828                session = openSession();
1829
1830                Query q = session.createQuery(
1831                        "SELECT COUNT(dlFileRank) FROM DLFileRank dlFileRank");
1832
1833                count = (Long)q.uniqueResult();
1834            }
1835            catch (Exception e) {
1836                throw processException(e);
1837            }
1838            finally {
1839                if (count == null) {
1840                    count = Long.valueOf(0);
1841                }
1842
1843                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1844                    count);
1845
1846                closeSession(session);
1847            }
1848        }
1849
1850        return count.intValue();
1851    }
1852
1853    public void afterPropertiesSet() {
1854        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1855                    com.liferay.portal.util.PropsUtil.get(
1856                        "value.object.listener.com.liferay.portlet.documentlibrary.model.DLFileRank")));
1857
1858        if (listenerClassNames.length > 0) {
1859            try {
1860                List<ModelListener<DLFileRank>> listenersList = new ArrayList<ModelListener<DLFileRank>>();
1861
1862                for (String listenerClassName : listenerClassNames) {
1863                    listenersList.add((ModelListener<DLFileRank>)Class.forName(
1864                            listenerClassName).newInstance());
1865                }
1866
1867                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1868            }
1869            catch (Exception e) {
1870                _log.error(e);
1871            }
1872        }
1873    }
1874
1875    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFileEntryPersistence.impl")
1876    protected com.liferay.portlet.documentlibrary.service.persistence.DLFileEntryPersistence dlFileEntryPersistence;
1877    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFileRankPersistence.impl")
1878    protected com.liferay.portlet.documentlibrary.service.persistence.DLFileRankPersistence dlFileRankPersistence;
1879    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFileShortcutPersistence.impl")
1880    protected com.liferay.portlet.documentlibrary.service.persistence.DLFileShortcutPersistence dlFileShortcutPersistence;
1881    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFileVersionPersistence.impl")
1882    protected com.liferay.portlet.documentlibrary.service.persistence.DLFileVersionPersistence dlFileVersionPersistence;
1883    @BeanReference(name = "com.liferay.portlet.documentlibrary.service.persistence.DLFolderPersistence.impl")
1884    protected com.liferay.portlet.documentlibrary.service.persistence.DLFolderPersistence dlFolderPersistence;
1885    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutPersistence.impl")
1886    protected com.liferay.portal.service.persistence.LayoutPersistence layoutPersistence;
1887    private static Log _log = LogFactoryUtil.getLog(DLFileRankPersistenceImpl.class);
1888}