1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.service.persistence;
24  
25  import com.liferay.portal.NoSuchResourceActionException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.kernel.annotation.BeanReference;
28  import com.liferay.portal.kernel.cache.CacheRegistry;
29  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
30  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
31  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
32  import com.liferay.portal.kernel.dao.orm.FinderPath;
33  import com.liferay.portal.kernel.dao.orm.Query;
34  import com.liferay.portal.kernel.dao.orm.QueryPos;
35  import com.liferay.portal.kernel.dao.orm.QueryUtil;
36  import com.liferay.portal.kernel.dao.orm.Session;
37  import com.liferay.portal.kernel.log.Log;
38  import com.liferay.portal.kernel.log.LogFactoryUtil;
39  import com.liferay.portal.kernel.util.GetterUtil;
40  import com.liferay.portal.kernel.util.OrderByComparator;
41  import com.liferay.portal.kernel.util.StringPool;
42  import com.liferay.portal.kernel.util.StringUtil;
43  import com.liferay.portal.kernel.util.Validator;
44  import com.liferay.portal.model.ModelListener;
45  import com.liferay.portal.model.ResourceAction;
46  import com.liferay.portal.model.impl.ResourceActionImpl;
47  import com.liferay.portal.model.impl.ResourceActionModelImpl;
48  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
49  
50  import java.util.ArrayList;
51  import java.util.Collections;
52  import java.util.List;
53  
54  /**
55   * <a href="ResourceActionPersistenceImpl.java.html"><b><i>View Source</i></b></a>
56   *
57   * <p>
58   * ServiceBuilder generated this class. Modifications in this class will be
59   * overwritten the next time is generated.
60   * </p>
61   *
62   * @author    Brian Wing Shun Chan
63   * @see       ResourceActionPersistence
64   * @see       ResourceActionUtil
65   * @generated
66   */
67  public class ResourceActionPersistenceImpl extends BasePersistenceImpl
68      implements ResourceActionPersistence {
69      public static final String FINDER_CLASS_NAME_ENTITY = ResourceActionImpl.class.getName();
70      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
71          ".List";
72      public static final FinderPath FINDER_PATH_FIND_BY_NAME = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
73              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
74              FINDER_CLASS_NAME_LIST, "findByName",
75              new String[] { String.class.getName() });
76      public static final FinderPath FINDER_PATH_FIND_BY_OBC_NAME = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
77              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
78              FINDER_CLASS_NAME_LIST, "findByName",
79              new String[] {
80                  String.class.getName(),
81                  
82              "java.lang.Integer", "java.lang.Integer",
83                  "com.liferay.portal.kernel.util.OrderByComparator"
84              });
85      public static final FinderPath FINDER_PATH_COUNT_BY_NAME = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
86              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
87              FINDER_CLASS_NAME_LIST, "countByName",
88              new String[] { String.class.getName() });
89      public static final FinderPath FINDER_PATH_FETCH_BY_N_A = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
90              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
91              FINDER_CLASS_NAME_ENTITY, "fetchByN_A",
92              new String[] { String.class.getName(), String.class.getName() });
93      public static final FinderPath FINDER_PATH_COUNT_BY_N_A = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
94              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
95              FINDER_CLASS_NAME_LIST, "countByN_A",
96              new String[] { String.class.getName(), String.class.getName() });
97      public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
98              ResourceActionModelImpl.FINDER_CACHE_ENABLED,
99              FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
100     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
101             ResourceActionModelImpl.FINDER_CACHE_ENABLED,
102             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
103 
104     public void cacheResult(ResourceAction resourceAction) {
105         EntityCacheUtil.putResult(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
106             ResourceActionImpl.class, resourceAction.getPrimaryKey(),
107             resourceAction);
108 
109         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_N_A,
110             new Object[] { resourceAction.getName(), resourceAction.getActionId() },
111             resourceAction);
112     }
113 
114     public void cacheResult(List<ResourceAction> resourceActions) {
115         for (ResourceAction resourceAction : resourceActions) {
116             if (EntityCacheUtil.getResult(
117                         ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
118                         ResourceActionImpl.class,
119                         resourceAction.getPrimaryKey(), this) == null) {
120                 cacheResult(resourceAction);
121             }
122         }
123     }
124 
125     public void clearCache() {
126         CacheRegistry.clear(ResourceActionImpl.class.getName());
127         EntityCacheUtil.clearCache(ResourceActionImpl.class.getName());
128         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
129         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
130     }
131 
132     public ResourceAction create(long resourceActionId) {
133         ResourceAction resourceAction = new ResourceActionImpl();
134 
135         resourceAction.setNew(true);
136         resourceAction.setPrimaryKey(resourceActionId);
137 
138         return resourceAction;
139     }
140 
141     public ResourceAction remove(long resourceActionId)
142         throws NoSuchResourceActionException, SystemException {
143         Session session = null;
144 
145         try {
146             session = openSession();
147 
148             ResourceAction resourceAction = (ResourceAction)session.get(ResourceActionImpl.class,
149                     new Long(resourceActionId));
150 
151             if (resourceAction == null) {
152                 if (_log.isWarnEnabled()) {
153                     _log.warn("No ResourceAction exists with the primary key " +
154                         resourceActionId);
155                 }
156 
157                 throw new NoSuchResourceActionException(
158                     "No ResourceAction exists with the primary key " +
159                     resourceActionId);
160             }
161 
162             return remove(resourceAction);
163         }
164         catch (NoSuchResourceActionException nsee) {
165             throw nsee;
166         }
167         catch (Exception e) {
168             throw processException(e);
169         }
170         finally {
171             closeSession(session);
172         }
173     }
174 
175     public ResourceAction remove(ResourceAction resourceAction)
176         throws SystemException {
177         for (ModelListener<ResourceAction> listener : listeners) {
178             listener.onBeforeRemove(resourceAction);
179         }
180 
181         resourceAction = removeImpl(resourceAction);
182 
183         for (ModelListener<ResourceAction> listener : listeners) {
184             listener.onAfterRemove(resourceAction);
185         }
186 
187         return resourceAction;
188     }
189 
190     protected ResourceAction removeImpl(ResourceAction resourceAction)
191         throws SystemException {
192         resourceAction = toUnwrappedModel(resourceAction);
193 
194         Session session = null;
195 
196         try {
197             session = openSession();
198 
199             if (resourceAction.isCachedModel() || BatchSessionUtil.isEnabled()) {
200                 Object staleObject = session.get(ResourceActionImpl.class,
201                         resourceAction.getPrimaryKeyObj());
202 
203                 if (staleObject != null) {
204                     session.evict(staleObject);
205                 }
206             }
207 
208             session.delete(resourceAction);
209 
210             session.flush();
211         }
212         catch (Exception e) {
213             throw processException(e);
214         }
215         finally {
216             closeSession(session);
217         }
218 
219         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
220 
221         ResourceActionModelImpl resourceActionModelImpl = (ResourceActionModelImpl)resourceAction;
222 
223         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_N_A,
224             new Object[] {
225                 resourceActionModelImpl.getOriginalName(),
226                 
227             resourceActionModelImpl.getOriginalActionId()
228             });
229 
230         EntityCacheUtil.removeResult(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
231             ResourceActionImpl.class, resourceAction.getPrimaryKey());
232 
233         return resourceAction;
234     }
235 
236     /**
237      * @deprecated Use {@link #update(ResourceAction, boolean merge)}.
238      */
239     public ResourceAction update(ResourceAction resourceAction)
240         throws SystemException {
241         if (_log.isWarnEnabled()) {
242             _log.warn(
243                 "Using the deprecated update(ResourceAction resourceAction) method. Use update(ResourceAction resourceAction, boolean merge) instead.");
244         }
245 
246         return update(resourceAction, false);
247     }
248 
249     /**
250      * Add, update, or merge, the entity. This method also calls the model
251      * listeners to trigger the proper events associated with adding, deleting,
252      * or updating an entity.
253      *
254      * @param  resourceAction the entity to add, update, or merge
255      * @param  merge boolean value for whether to merge the entity. The default
256      *         value is false. Setting merge to true is more expensive and
257      *         should only be true when resourceAction is transient. See
258      *         LEP-5473 for a detailed discussion of this method.
259      * @return the entity that was added, updated, or merged
260      */
261     public ResourceAction update(ResourceAction resourceAction, boolean merge)
262         throws SystemException {
263         boolean isNew = resourceAction.isNew();
264 
265         for (ModelListener<ResourceAction> listener : listeners) {
266             if (isNew) {
267                 listener.onBeforeCreate(resourceAction);
268             }
269             else {
270                 listener.onBeforeUpdate(resourceAction);
271             }
272         }
273 
274         resourceAction = updateImpl(resourceAction, merge);
275 
276         for (ModelListener<ResourceAction> listener : listeners) {
277             if (isNew) {
278                 listener.onAfterCreate(resourceAction);
279             }
280             else {
281                 listener.onAfterUpdate(resourceAction);
282             }
283         }
284 
285         return resourceAction;
286     }
287 
288     public ResourceAction updateImpl(
289         com.liferay.portal.model.ResourceAction resourceAction, boolean merge)
290         throws SystemException {
291         resourceAction = toUnwrappedModel(resourceAction);
292 
293         boolean isNew = resourceAction.isNew();
294 
295         ResourceActionModelImpl resourceActionModelImpl = (ResourceActionModelImpl)resourceAction;
296 
297         Session session = null;
298 
299         try {
300             session = openSession();
301 
302             BatchSessionUtil.update(session, resourceAction, merge);
303 
304             resourceAction.setNew(false);
305         }
306         catch (Exception e) {
307             throw processException(e);
308         }
309         finally {
310             closeSession(session);
311         }
312 
313         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
314 
315         EntityCacheUtil.putResult(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
316             ResourceActionImpl.class, resourceAction.getPrimaryKey(),
317             resourceAction);
318 
319         if (!isNew &&
320                 (!Validator.equals(resourceAction.getName(),
321                     resourceActionModelImpl.getOriginalName()) ||
322                 !Validator.equals(resourceAction.getActionId(),
323                     resourceActionModelImpl.getOriginalActionId()))) {
324             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_N_A,
325                 new Object[] {
326                     resourceActionModelImpl.getOriginalName(),
327                     
328                 resourceActionModelImpl.getOriginalActionId()
329                 });
330         }
331 
332         if (isNew ||
333                 (!Validator.equals(resourceAction.getName(),
334                     resourceActionModelImpl.getOriginalName()) ||
335                 !Validator.equals(resourceAction.getActionId(),
336                     resourceActionModelImpl.getOriginalActionId()))) {
337             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_N_A,
338                 new Object[] {
339                     resourceAction.getName(),
340                     
341                 resourceAction.getActionId()
342                 }, resourceAction);
343         }
344 
345         return resourceAction;
346     }
347 
348     protected ResourceAction toUnwrappedModel(ResourceAction resourceAction) {
349         if (resourceAction instanceof ResourceActionImpl) {
350             return resourceAction;
351         }
352 
353         ResourceActionImpl resourceActionImpl = new ResourceActionImpl();
354 
355         resourceActionImpl.setNew(resourceAction.isNew());
356         resourceActionImpl.setPrimaryKey(resourceAction.getPrimaryKey());
357 
358         resourceActionImpl.setResourceActionId(resourceAction.getResourceActionId());
359         resourceActionImpl.setName(resourceAction.getName());
360         resourceActionImpl.setActionId(resourceAction.getActionId());
361         resourceActionImpl.setBitwiseValue(resourceAction.getBitwiseValue());
362 
363         return resourceActionImpl;
364     }
365 
366     public ResourceAction findByPrimaryKey(long resourceActionId)
367         throws NoSuchResourceActionException, SystemException {
368         ResourceAction resourceAction = fetchByPrimaryKey(resourceActionId);
369 
370         if (resourceAction == null) {
371             if (_log.isWarnEnabled()) {
372                 _log.warn("No ResourceAction exists with the primary key " +
373                     resourceActionId);
374             }
375 
376             throw new NoSuchResourceActionException(
377                 "No ResourceAction exists with the primary key " +
378                 resourceActionId);
379         }
380 
381         return resourceAction;
382     }
383 
384     public ResourceAction fetchByPrimaryKey(long resourceActionId)
385         throws SystemException {
386         ResourceAction resourceAction = (ResourceAction)EntityCacheUtil.getResult(ResourceActionModelImpl.ENTITY_CACHE_ENABLED,
387                 ResourceActionImpl.class, resourceActionId, this);
388 
389         if (resourceAction == null) {
390             Session session = null;
391 
392             try {
393                 session = openSession();
394 
395                 resourceAction = (ResourceAction)session.get(ResourceActionImpl.class,
396                         new Long(resourceActionId));
397             }
398             catch (Exception e) {
399                 throw processException(e);
400             }
401             finally {
402                 if (resourceAction != null) {
403                     cacheResult(resourceAction);
404                 }
405 
406                 closeSession(session);
407             }
408         }
409 
410         return resourceAction;
411     }
412 
413     public List<ResourceAction> findByName(String name)
414         throws SystemException {
415         Object[] finderArgs = new Object[] { name };
416 
417         List<ResourceAction> list = (List<ResourceAction>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_NAME,
418                 finderArgs, this);
419 
420         if (list == null) {
421             Session session = null;
422 
423             try {
424                 session = openSession();
425 
426                 StringBuilder query = new StringBuilder();
427 
428                 query.append(
429                     "SELECT resourceAction FROM ResourceAction resourceAction WHERE ");
430 
431                 if (name == null) {
432                     query.append("resourceAction.name IS NULL");
433                 }
434                 else {
435                     query.append("resourceAction.name = ?");
436                 }
437 
438                 query.append(" ");
439 
440                 query.append("ORDER BY ");
441 
442                 query.append("resourceAction.name ASC, ");
443                 query.append("resourceAction.bitwiseValue ASC");
444 
445                 Query q = session.createQuery(query.toString());
446 
447                 QueryPos qPos = QueryPos.getInstance(q);
448 
449                 if (name != null) {
450                     qPos.add(name);
451                 }
452 
453                 list = q.list();
454             }
455             catch (Exception e) {
456                 throw processException(e);
457             }
458             finally {
459                 if (list == null) {
460                     list = new ArrayList<ResourceAction>();
461                 }
462 
463                 cacheResult(list);
464 
465                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_NAME, finderArgs,
466                     list);
467 
468                 closeSession(session);
469             }
470         }
471 
472         return list;
473     }
474 
475     public List<ResourceAction> findByName(String name, int start, int end)
476         throws SystemException {
477         return findByName(name, start, end, null);
478     }
479 
480     public List<ResourceAction> findByName(String name, int start, int end,
481         OrderByComparator obc) throws SystemException {
482         Object[] finderArgs = new Object[] {
483                 name,
484                 
485                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
486             };
487 
488         List<ResourceAction> list = (List<ResourceAction>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_NAME,
489                 finderArgs, this);
490 
491         if (list == null) {
492             Session session = null;
493 
494             try {
495                 session = openSession();
496 
497                 StringBuilder query = new StringBuilder();
498 
499                 query.append(
500                     "SELECT resourceAction FROM ResourceAction resourceAction WHERE ");
501 
502                 if (name == null) {
503                     query.append("resourceAction.name IS NULL");
504                 }
505                 else {
506                     query.append("resourceAction.name = ?");
507                 }
508 
509                 query.append(" ");
510 
511                 if (obc != null) {
512                     query.append("ORDER BY ");
513 
514                     String[] orderByFields = obc.getOrderByFields();
515 
516                     for (int i = 0; i < orderByFields.length; i++) {
517                         query.append("resourceAction.");
518                         query.append(orderByFields[i]);
519 
520                         if (obc.isAscending()) {
521                             query.append(" ASC");
522                         }
523                         else {
524                             query.append(" DESC");
525                         }
526 
527                         if ((i + 1) < orderByFields.length) {
528                             query.append(", ");
529                         }
530                     }
531                 }
532 
533                 else {
534                     query.append("ORDER BY ");
535 
536                     query.append("resourceAction.name ASC, ");
537                     query.append("resourceAction.bitwiseValue ASC");
538                 }
539 
540                 Query q = session.createQuery(query.toString());
541 
542                 QueryPos qPos = QueryPos.getInstance(q);
543 
544                 if (name != null) {
545                     qPos.add(name);
546                 }
547 
548                 list = (List<ResourceAction>)QueryUtil.list(q, getDialect(),
549                         start, end);
550             }
551             catch (Exception e) {
552                 throw processException(e);
553             }
554             finally {
555                 if (list == null) {
556                     list = new ArrayList<ResourceAction>();
557                 }
558 
559                 cacheResult(list);
560 
561                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_NAME,
562                     finderArgs, list);
563 
564                 closeSession(session);
565             }
566         }
567 
568         return list;
569     }
570 
571     public ResourceAction findByName_First(String name, OrderByComparator obc)
572         throws NoSuchResourceActionException, SystemException {
573         List<ResourceAction> list = findByName(name, 0, 1, obc);
574 
575         if (list.isEmpty()) {
576             StringBuilder msg = new StringBuilder();
577 
578             msg.append("No ResourceAction exists with the key {");
579 
580             msg.append("name=" + name);
581 
582             msg.append(StringPool.CLOSE_CURLY_BRACE);
583 
584             throw new NoSuchResourceActionException(msg.toString());
585         }
586         else {
587             return list.get(0);
588         }
589     }
590 
591     public ResourceAction findByName_Last(String name, OrderByComparator obc)
592         throws NoSuchResourceActionException, SystemException {
593         int count = countByName(name);
594 
595         List<ResourceAction> list = findByName(name, count - 1, count, obc);
596 
597         if (list.isEmpty()) {
598             StringBuilder msg = new StringBuilder();
599 
600             msg.append("No ResourceAction exists with the key {");
601 
602             msg.append("name=" + name);
603 
604             msg.append(StringPool.CLOSE_CURLY_BRACE);
605 
606             throw new NoSuchResourceActionException(msg.toString());
607         }
608         else {
609             return list.get(0);
610         }
611     }
612 
613     public ResourceAction[] findByName_PrevAndNext(long resourceActionId,
614         String name, OrderByComparator obc)
615         throws NoSuchResourceActionException, SystemException {
616         ResourceAction resourceAction = findByPrimaryKey(resourceActionId);
617 
618         int count = countByName(name);
619 
620         Session session = null;
621 
622         try {
623             session = openSession();
624 
625             StringBuilder query = new StringBuilder();
626 
627             query.append(
628                 "SELECT resourceAction FROM ResourceAction resourceAction WHERE ");
629 
630             if (name == null) {
631                 query.append("resourceAction.name IS NULL");
632             }
633             else {
634                 query.append("resourceAction.name = ?");
635             }
636 
637             query.append(" ");
638 
639             if (obc != null) {
640                 query.append("ORDER BY ");
641 
642                 String[] orderByFields = obc.getOrderByFields();
643 
644                 for (int i = 0; i < orderByFields.length; i++) {
645                     query.append("resourceAction.");
646                     query.append(orderByFields[i]);
647 
648                     if (obc.isAscending()) {
649                         query.append(" ASC");
650                     }
651                     else {
652                         query.append(" DESC");
653                     }
654 
655                     if ((i + 1) < orderByFields.length) {
656                         query.append(", ");
657                     }
658                 }
659             }
660 
661             else {
662                 query.append("ORDER BY ");
663 
664                 query.append("resourceAction.name ASC, ");
665                 query.append("resourceAction.bitwiseValue ASC");
666             }
667 
668             Query q = session.createQuery(query.toString());
669 
670             QueryPos qPos = QueryPos.getInstance(q);
671 
672             if (name != null) {
673                 qPos.add(name);
674             }
675 
676             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
677                     resourceAction);
678 
679             ResourceAction[] array = new ResourceActionImpl[3];
680 
681             array[0] = (ResourceAction)objArray[0];
682             array[1] = (ResourceAction)objArray[1];
683             array[2] = (ResourceAction)objArray[2];
684 
685             return array;
686         }
687         catch (Exception e) {
688             throw processException(e);
689         }
690         finally {
691             closeSession(session);
692         }
693     }
694 
695     public ResourceAction findByN_A(String name, String actionId)
696         throws NoSuchResourceActionException, SystemException {
697         ResourceAction resourceAction = fetchByN_A(name, actionId);
698 
699         if (resourceAction == null) {
700             StringBuilder msg = new StringBuilder();
701 
702             msg.append("No ResourceAction exists with the key {");
703 
704             msg.append("name=" + name);
705 
706             msg.append(", ");
707             msg.append("actionId=" + actionId);
708 
709             msg.append(StringPool.CLOSE_CURLY_BRACE);
710 
711             if (_log.isWarnEnabled()) {
712                 _log.warn(msg.toString());
713             }
714 
715             throw new NoSuchResourceActionException(msg.toString());
716         }
717 
718         return resourceAction;
719     }
720 
721     public ResourceAction fetchByN_A(String name, String actionId)
722         throws SystemException {
723         return fetchByN_A(name, actionId, true);
724     }
725 
726     public ResourceAction fetchByN_A(String name, String actionId,
727         boolean retrieveFromCache) throws SystemException {
728         Object[] finderArgs = new Object[] { name, actionId };
729 
730         Object result = null;
731 
732         if (retrieveFromCache) {
733             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_N_A,
734                     finderArgs, this);
735         }
736 
737         if (result == null) {
738             Session session = null;
739 
740             try {
741                 session = openSession();
742 
743                 StringBuilder query = new StringBuilder();
744 
745                 query.append(
746                     "SELECT resourceAction FROM ResourceAction resourceAction WHERE ");
747 
748                 if (name == null) {
749                     query.append("resourceAction.name IS NULL");
750                 }
751                 else {
752                     query.append("resourceAction.name = ?");
753                 }
754 
755                 query.append(" AND ");
756 
757                 if (actionId == null) {
758                     query.append("resourceAction.actionId IS NULL");
759                 }
760                 else {
761                     query.append("resourceAction.actionId = ?");
762                 }
763 
764                 query.append(" ");
765 
766                 query.append("ORDER BY ");
767 
768                 query.append("resourceAction.name ASC, ");
769                 query.append("resourceAction.bitwiseValue ASC");
770 
771                 Query q = session.createQuery(query.toString());
772 
773                 QueryPos qPos = QueryPos.getInstance(q);
774 
775                 if (name != null) {
776                     qPos.add(name);
777                 }
778 
779                 if (actionId != null) {
780                     qPos.add(actionId);
781                 }
782 
783                 List<ResourceAction> list = q.list();
784 
785                 result = list;
786 
787                 ResourceAction resourceAction = null;
788 
789                 if (list.isEmpty()) {
790                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_N_A,
791                         finderArgs, list);
792                 }
793                 else {
794                     resourceAction = list.get(0);
795 
796                     cacheResult(resourceAction);
797 
798                     if ((resourceAction.getName() == null) ||
799                             !resourceAction.getName().equals(name) ||
800                             (resourceAction.getActionId() == null) ||
801                             !resourceAction.getActionId().equals(actionId)) {
802                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_N_A,
803                             finderArgs, resourceAction);
804                     }
805                 }
806 
807                 return resourceAction;
808             }
809             catch (Exception e) {
810                 throw processException(e);
811             }
812             finally {
813                 if (result == null) {
814                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_N_A,
815                         finderArgs, new ArrayList<ResourceAction>());
816                 }
817 
818                 closeSession(session);
819             }
820         }
821         else {
822             if (result instanceof List<?>) {
823                 return null;
824             }
825             else {
826                 return (ResourceAction)result;
827             }
828         }
829     }
830 
831     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
832         throws SystemException {
833         Session session = null;
834 
835         try {
836             session = openSession();
837 
838             dynamicQuery.compile(session);
839 
840             return dynamicQuery.list();
841         }
842         catch (Exception e) {
843             throw processException(e);
844         }
845         finally {
846             closeSession(session);
847         }
848     }
849 
850     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
851         int start, int end) throws SystemException {
852         Session session = null;
853 
854         try {
855             session = openSession();
856 
857             dynamicQuery.setLimit(start, end);
858 
859             dynamicQuery.compile(session);
860 
861             return dynamicQuery.list();
862         }
863         catch (Exception e) {
864             throw processException(e);
865         }
866         finally {
867             closeSession(session);
868         }
869     }
870 
871     public List<ResourceAction> findAll() throws SystemException {
872         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
873     }
874 
875     public List<ResourceAction> findAll(int start, int end)
876         throws SystemException {
877         return findAll(start, end, null);
878     }
879 
880     public List<ResourceAction> findAll(int start, int end,
881         OrderByComparator obc) throws SystemException {
882         Object[] finderArgs = new Object[] {
883                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
884             };
885 
886         List<ResourceAction> list = (List<ResourceAction>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
887                 finderArgs, this);
888 
889         if (list == null) {
890             Session session = null;
891 
892             try {
893                 session = openSession();
894 
895                 StringBuilder query = new StringBuilder();
896 
897                 query.append(
898                     "SELECT resourceAction FROM ResourceAction resourceAction ");
899 
900                 if (obc != null) {
901                     query.append("ORDER BY ");
902 
903                     String[] orderByFields = obc.getOrderByFields();
904 
905                     for (int i = 0; i < orderByFields.length; i++) {
906                         query.append("resourceAction.");
907                         query.append(orderByFields[i]);
908 
909                         if (obc.isAscending()) {
910                             query.append(" ASC");
911                         }
912                         else {
913                             query.append(" DESC");
914                         }
915 
916                         if ((i + 1) < orderByFields.length) {
917                             query.append(", ");
918                         }
919                     }
920                 }
921 
922                 else {
923                     query.append("ORDER BY ");
924 
925                     query.append("resourceAction.name ASC, ");
926                     query.append("resourceAction.bitwiseValue ASC");
927                 }
928 
929                 Query q = session.createQuery(query.toString());
930 
931                 if (obc == null) {
932                     list = (List<ResourceAction>)QueryUtil.list(q,
933                             getDialect(), start, end, false);
934 
935                     Collections.sort(list);
936                 }
937                 else {
938                     list = (List<ResourceAction>)QueryUtil.list(q,
939                             getDialect(), start, end);
940                 }
941             }
942             catch (Exception e) {
943                 throw processException(e);
944             }
945             finally {
946                 if (list == null) {
947                     list = new ArrayList<ResourceAction>();
948                 }
949 
950                 cacheResult(list);
951 
952                 FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
953 
954                 closeSession(session);
955             }
956         }
957 
958         return list;
959     }
960 
961     public void removeByName(String name) throws SystemException {
962         for (ResourceAction resourceAction : findByName(name)) {
963             remove(resourceAction);
964         }
965     }
966 
967     public void removeByN_A(String name, String actionId)
968         throws NoSuchResourceActionException, SystemException {
969         ResourceAction resourceAction = findByN_A(name, actionId);
970 
971         remove(resourceAction);
972     }
973 
974     public void removeAll() throws SystemException {
975         for (ResourceAction resourceAction : findAll()) {
976             remove(resourceAction);
977         }
978     }
979 
980     public int countByName(String name) throws SystemException {
981         Object[] finderArgs = new Object[] { name };
982 
983         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_NAME,
984                 finderArgs, this);
985 
986         if (count == null) {
987             Session session = null;
988 
989             try {
990                 session = openSession();
991 
992                 StringBuilder query = new StringBuilder();
993 
994                 query.append("SELECT COUNT(resourceAction) ");
995                 query.append("FROM ResourceAction resourceAction WHERE ");
996 
997                 if (name == null) {
998                     query.append("resourceAction.name IS NULL");
999                 }
1000                else {
1001                    query.append("resourceAction.name = ?");
1002                }
1003
1004                query.append(" ");
1005
1006                Query q = session.createQuery(query.toString());
1007
1008                QueryPos qPos = QueryPos.getInstance(q);
1009
1010                if (name != null) {
1011                    qPos.add(name);
1012                }
1013
1014                count = (Long)q.uniqueResult();
1015            }
1016            catch (Exception e) {
1017                throw processException(e);
1018            }
1019            finally {
1020                if (count == null) {
1021                    count = Long.valueOf(0);
1022                }
1023
1024                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_NAME,
1025                    finderArgs, count);
1026
1027                closeSession(session);
1028            }
1029        }
1030
1031        return count.intValue();
1032    }
1033
1034    public int countByN_A(String name, String actionId)
1035        throws SystemException {
1036        Object[] finderArgs = new Object[] { name, actionId };
1037
1038        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_N_A,
1039                finderArgs, this);
1040
1041        if (count == null) {
1042            Session session = null;
1043
1044            try {
1045                session = openSession();
1046
1047                StringBuilder query = new StringBuilder();
1048
1049                query.append("SELECT COUNT(resourceAction) ");
1050                query.append("FROM ResourceAction resourceAction WHERE ");
1051
1052                if (name == null) {
1053                    query.append("resourceAction.name IS NULL");
1054                }
1055                else {
1056                    query.append("resourceAction.name = ?");
1057                }
1058
1059                query.append(" AND ");
1060
1061                if (actionId == null) {
1062                    query.append("resourceAction.actionId IS NULL");
1063                }
1064                else {
1065                    query.append("resourceAction.actionId = ?");
1066                }
1067
1068                query.append(" ");
1069
1070                Query q = session.createQuery(query.toString());
1071
1072                QueryPos qPos = QueryPos.getInstance(q);
1073
1074                if (name != null) {
1075                    qPos.add(name);
1076                }
1077
1078                if (actionId != null) {
1079                    qPos.add(actionId);
1080                }
1081
1082                count = (Long)q.uniqueResult();
1083            }
1084            catch (Exception e) {
1085                throw processException(e);
1086            }
1087            finally {
1088                if (count == null) {
1089                    count = Long.valueOf(0);
1090                }
1091
1092                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_N_A, finderArgs,
1093                    count);
1094
1095                closeSession(session);
1096            }
1097        }
1098
1099        return count.intValue();
1100    }
1101
1102    public int countAll() throws SystemException {
1103        Object[] finderArgs = new Object[0];
1104
1105        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1106                finderArgs, this);
1107
1108        if (count == null) {
1109            Session session = null;
1110
1111            try {
1112                session = openSession();
1113
1114                Query q = session.createQuery(
1115                        "SELECT COUNT(resourceAction) FROM ResourceAction resourceAction");
1116
1117                count = (Long)q.uniqueResult();
1118            }
1119            catch (Exception e) {
1120                throw processException(e);
1121            }
1122            finally {
1123                if (count == null) {
1124                    count = Long.valueOf(0);
1125                }
1126
1127                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1128                    count);
1129
1130                closeSession(session);
1131            }
1132        }
1133
1134        return count.intValue();
1135    }
1136
1137    public void afterPropertiesSet() {
1138        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1139                    com.liferay.portal.util.PropsUtil.get(
1140                        "value.object.listener.com.liferay.portal.model.ResourceAction")));
1141
1142        if (listenerClassNames.length > 0) {
1143            try {
1144                List<ModelListener<ResourceAction>> listenersList = new ArrayList<ModelListener<ResourceAction>>();
1145
1146                for (String listenerClassName : listenerClassNames) {
1147                    listenersList.add((ModelListener<ResourceAction>)Class.forName(
1148                            listenerClassName).newInstance());
1149                }
1150
1151                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1152            }
1153            catch (Exception e) {
1154                _log.error(e);
1155            }
1156        }
1157    }
1158
1159    @BeanReference(name = "com.liferay.portal.service.persistence.AccountPersistence.impl")
1160    protected com.liferay.portal.service.persistence.AccountPersistence accountPersistence;
1161    @BeanReference(name = "com.liferay.portal.service.persistence.AddressPersistence.impl")
1162    protected com.liferay.portal.service.persistence.AddressPersistence addressPersistence;
1163    @BeanReference(name = "com.liferay.portal.service.persistence.BrowserTrackerPersistence.impl")
1164    protected com.liferay.portal.service.persistence.BrowserTrackerPersistence browserTrackerPersistence;
1165    @BeanReference(name = "com.liferay.portal.service.persistence.ClassNamePersistence.impl")
1166    protected com.liferay.portal.service.persistence.ClassNamePersistence classNamePersistence;
1167    @BeanReference(name = "com.liferay.portal.service.persistence.CompanyPersistence.impl")
1168    protected com.liferay.portal.service.persistence.CompanyPersistence companyPersistence;
1169    @BeanReference(name = "com.liferay.portal.service.persistence.ContactPersistence.impl")
1170    protected com.liferay.portal.service.persistence.ContactPersistence contactPersistence;
1171    @BeanReference(name = "com.liferay.portal.service.persistence.CountryPersistence.impl")
1172    protected com.liferay.portal.service.persistence.CountryPersistence countryPersistence;
1173    @BeanReference(name = "com.liferay.portal.service.persistence.EmailAddressPersistence.impl")
1174    protected com.liferay.portal.service.persistence.EmailAddressPersistence emailAddressPersistence;
1175    @BeanReference(name = "com.liferay.portal.service.persistence.GroupPersistence.impl")
1176    protected com.liferay.portal.service.persistence.GroupPersistence groupPersistence;
1177    @BeanReference(name = "com.liferay.portal.service.persistence.ImagePersistence.impl")
1178    protected com.liferay.portal.service.persistence.ImagePersistence imagePersistence;
1179    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutPersistence.impl")
1180    protected com.liferay.portal.service.persistence.LayoutPersistence layoutPersistence;
1181    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutSetPersistence.impl")
1182    protected com.liferay.portal.service.persistence.LayoutSetPersistence layoutSetPersistence;
1183    @BeanReference(name = "com.liferay.portal.service.persistence.ListTypePersistence.impl")
1184    protected com.liferay.portal.service.persistence.ListTypePersistence listTypePersistence;
1185    @BeanReference(name = "com.liferay.portal.service.persistence.LockPersistence.impl")
1186    protected com.liferay.portal.service.persistence.LockPersistence lockPersistence;
1187    @BeanReference(name = "com.liferay.portal.service.persistence.MembershipRequestPersistence.impl")
1188    protected com.liferay.portal.service.persistence.MembershipRequestPersistence membershipRequestPersistence;
1189    @BeanReference(name = "com.liferay.portal.service.persistence.OrganizationPersistence.impl")
1190    protected com.liferay.portal.service.persistence.OrganizationPersistence organizationPersistence;
1191    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupPermissionPersistence.impl")
1192    protected com.liferay.portal.service.persistence.OrgGroupPermissionPersistence orgGroupPermissionPersistence;
1193    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupRolePersistence.impl")
1194    protected com.liferay.portal.service.persistence.OrgGroupRolePersistence orgGroupRolePersistence;
1195    @BeanReference(name = "com.liferay.portal.service.persistence.OrgLaborPersistence.impl")
1196    protected com.liferay.portal.service.persistence.OrgLaborPersistence orgLaborPersistence;
1197    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyPersistence.impl")
1198    protected com.liferay.portal.service.persistence.PasswordPolicyPersistence passwordPolicyPersistence;
1199    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyRelPersistence.impl")
1200    protected com.liferay.portal.service.persistence.PasswordPolicyRelPersistence passwordPolicyRelPersistence;
1201    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordTrackerPersistence.impl")
1202    protected com.liferay.portal.service.persistence.PasswordTrackerPersistence passwordTrackerPersistence;
1203    @BeanReference(name = "com.liferay.portal.service.persistence.PermissionPersistence.impl")
1204    protected com.liferay.portal.service.persistence.PermissionPersistence permissionPersistence;
1205    @BeanReference(name = "com.liferay.portal.service.persistence.PhonePersistence.impl")
1206    protected com.liferay.portal.service.persistence.PhonePersistence phonePersistence;
1207    @BeanReference(name = "com.liferay.portal.service.persistence.PluginSettingPersistence.impl")
1208    protected com.liferay.portal.service.persistence.PluginSettingPersistence pluginSettingPersistence;
1209    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPersistence.impl")
1210    protected com.liferay.portal.service.persistence.PortletPersistence portletPersistence;
1211    @BeanReference(name = "com.liferay.portal.service.persistence.PortletItemPersistence.impl")
1212    protected com.liferay.portal.service.persistence.PortletItemPersistence portletItemPersistence;
1213    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPreferencesPersistence.impl")
1214    protected com.liferay.portal.service.persistence.PortletPreferencesPersistence portletPreferencesPersistence;
1215    @BeanReference(name = "com.liferay.portal.service.persistence.RegionPersistence.impl")
1216    protected com.liferay.portal.service.persistence.RegionPersistence regionPersistence;
1217    @BeanReference(name = "com.liferay.portal.service.persistence.ReleasePersistence.impl")
1218    protected com.liferay.portal.service.persistence.ReleasePersistence releasePersistence;
1219    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
1220    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1221    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceActionPersistence.impl")
1222    protected com.liferay.portal.service.persistence.ResourceActionPersistence resourceActionPersistence;
1223    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceCodePersistence.impl")
1224    protected com.liferay.portal.service.persistence.ResourceCodePersistence resourceCodePersistence;
1225    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePermissionPersistence.impl")
1226    protected com.liferay.portal.service.persistence.ResourcePermissionPersistence resourcePermissionPersistence;
1227    @BeanReference(name = "com.liferay.portal.service.persistence.RolePersistence.impl")
1228    protected com.liferay.portal.service.persistence.RolePersistence rolePersistence;
1229    @BeanReference(name = "com.liferay.portal.service.persistence.ServiceComponentPersistence.impl")
1230    protected com.liferay.portal.service.persistence.ServiceComponentPersistence serviceComponentPersistence;
1231    @BeanReference(name = "com.liferay.portal.service.persistence.ShardPersistence.impl")
1232    protected com.liferay.portal.service.persistence.ShardPersistence shardPersistence;
1233    @BeanReference(name = "com.liferay.portal.service.persistence.SubscriptionPersistence.impl")
1234    protected com.liferay.portal.service.persistence.SubscriptionPersistence subscriptionPersistence;
1235    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
1236    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1237    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupPersistence.impl")
1238    protected com.liferay.portal.service.persistence.UserGroupPersistence userGroupPersistence;
1239    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupGroupRolePersistence.impl")
1240    protected com.liferay.portal.service.persistence.UserGroupGroupRolePersistence userGroupGroupRolePersistence;
1241    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupRolePersistence.impl")
1242    protected com.liferay.portal.service.persistence.UserGroupRolePersistence userGroupRolePersistence;
1243    @BeanReference(name = "com.liferay.portal.service.persistence.UserIdMapperPersistence.impl")
1244    protected com.liferay.portal.service.persistence.UserIdMapperPersistence userIdMapperPersistence;
1245    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPersistence.impl")
1246    protected com.liferay.portal.service.persistence.UserTrackerPersistence userTrackerPersistence;
1247    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPathPersistence.impl")
1248    protected com.liferay.portal.service.persistence.UserTrackerPathPersistence userTrackerPathPersistence;
1249    @BeanReference(name = "com.liferay.portal.service.persistence.WebDAVPropsPersistence.impl")
1250    protected com.liferay.portal.service.persistence.WebDAVPropsPersistence webDAVPropsPersistence;
1251    @BeanReference(name = "com.liferay.portal.service.persistence.WebsitePersistence.impl")
1252    protected com.liferay.portal.service.persistence.WebsitePersistence websitePersistence;
1253    private static Log _log = LogFactoryUtil.getLog(ResourceActionPersistenceImpl.class);
1254}