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.portal.service.persistence;
21  
22  import com.liferay.portal.NoSuchPasswordPolicyException;
23  import com.liferay.portal.SystemException;
24  import com.liferay.portal.kernel.annotation.BeanReference;
25  import com.liferay.portal.kernel.cache.CacheRegistry;
26  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
27  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
28  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
29  import com.liferay.portal.kernel.dao.orm.FinderPath;
30  import com.liferay.portal.kernel.dao.orm.Query;
31  import com.liferay.portal.kernel.dao.orm.QueryPos;
32  import com.liferay.portal.kernel.dao.orm.QueryUtil;
33  import com.liferay.portal.kernel.dao.orm.Session;
34  import com.liferay.portal.kernel.log.Log;
35  import com.liferay.portal.kernel.log.LogFactoryUtil;
36  import com.liferay.portal.kernel.util.GetterUtil;
37  import com.liferay.portal.kernel.util.OrderByComparator;
38  import com.liferay.portal.kernel.util.StringPool;
39  import com.liferay.portal.kernel.util.StringUtil;
40  import com.liferay.portal.kernel.util.Validator;
41  import com.liferay.portal.model.ModelListener;
42  import com.liferay.portal.model.PasswordPolicy;
43  import com.liferay.portal.model.impl.PasswordPolicyImpl;
44  import com.liferay.portal.model.impl.PasswordPolicyModelImpl;
45  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
46  
47  import java.util.ArrayList;
48  import java.util.Collections;
49  import java.util.List;
50  
51  /**
52   * <a href="PasswordPolicyPersistenceImpl.java.html"><b><i>View Source</i></b></a>
53   *
54   * @author Brian Wing Shun Chan
55   *
56   */
57  public class PasswordPolicyPersistenceImpl extends BasePersistenceImpl
58      implements PasswordPolicyPersistence {
59      public static final String FINDER_CLASS_NAME_ENTITY = PasswordPolicyImpl.class.getName();
60      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
61          ".List";
62      public static final FinderPath FINDER_PATH_FETCH_BY_C_DP = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
63              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
64              FINDER_CLASS_NAME_ENTITY, "fetchByC_DP",
65              new String[] { Long.class.getName(), Boolean.class.getName() });
66      public static final FinderPath FINDER_PATH_COUNT_BY_C_DP = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
67              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
68              FINDER_CLASS_NAME_LIST, "countByC_DP",
69              new String[] { Long.class.getName(), Boolean.class.getName() });
70      public static final FinderPath FINDER_PATH_FETCH_BY_C_N = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
71              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
72              FINDER_CLASS_NAME_ENTITY, "fetchByC_N",
73              new String[] { Long.class.getName(), String.class.getName() });
74      public static final FinderPath FINDER_PATH_COUNT_BY_C_N = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
75              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
76              FINDER_CLASS_NAME_LIST, "countByC_N",
77              new String[] { Long.class.getName(), String.class.getName() });
78      public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
79              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
80              FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
81      public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
82              PasswordPolicyModelImpl.FINDER_CACHE_ENABLED,
83              FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
84  
85      public void cacheResult(PasswordPolicy passwordPolicy) {
86          EntityCacheUtil.putResult(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
87              PasswordPolicyImpl.class, passwordPolicy.getPrimaryKey(),
88              passwordPolicy);
89  
90          FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_DP,
91              new Object[] {
92                  new Long(passwordPolicy.getCompanyId()),
93                  Boolean.valueOf(passwordPolicy.getDefaultPolicy())
94              }, passwordPolicy);
95  
96          FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
97              new Object[] {
98                  new Long(passwordPolicy.getCompanyId()),
99                  
100             passwordPolicy.getName()
101             }, passwordPolicy);
102     }
103 
104     public void cacheResult(List<PasswordPolicy> passwordPolicies) {
105         for (PasswordPolicy passwordPolicy : passwordPolicies) {
106             if (EntityCacheUtil.getResult(
107                         PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
108                         PasswordPolicyImpl.class,
109                         passwordPolicy.getPrimaryKey(), this) == null) {
110                 cacheResult(passwordPolicy);
111             }
112         }
113     }
114 
115     public void clearCache() {
116         CacheRegistry.clear(PasswordPolicyImpl.class.getName());
117         EntityCacheUtil.clearCache(PasswordPolicyImpl.class.getName());
118         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
119         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
120     }
121 
122     public PasswordPolicy create(long passwordPolicyId) {
123         PasswordPolicy passwordPolicy = new PasswordPolicyImpl();
124 
125         passwordPolicy.setNew(true);
126         passwordPolicy.setPrimaryKey(passwordPolicyId);
127 
128         return passwordPolicy;
129     }
130 
131     public PasswordPolicy remove(long passwordPolicyId)
132         throws NoSuchPasswordPolicyException, SystemException {
133         Session session = null;
134 
135         try {
136             session = openSession();
137 
138             PasswordPolicy passwordPolicy = (PasswordPolicy)session.get(PasswordPolicyImpl.class,
139                     new Long(passwordPolicyId));
140 
141             if (passwordPolicy == null) {
142                 if (_log.isWarnEnabled()) {
143                     _log.warn("No PasswordPolicy exists with the primary key " +
144                         passwordPolicyId);
145                 }
146 
147                 throw new NoSuchPasswordPolicyException(
148                     "No PasswordPolicy exists with the primary key " +
149                     passwordPolicyId);
150             }
151 
152             return remove(passwordPolicy);
153         }
154         catch (NoSuchPasswordPolicyException nsee) {
155             throw nsee;
156         }
157         catch (Exception e) {
158             throw processException(e);
159         }
160         finally {
161             closeSession(session);
162         }
163     }
164 
165     public PasswordPolicy remove(PasswordPolicy passwordPolicy)
166         throws SystemException {
167         for (ModelListener<PasswordPolicy> listener : listeners) {
168             listener.onBeforeRemove(passwordPolicy);
169         }
170 
171         passwordPolicy = removeImpl(passwordPolicy);
172 
173         for (ModelListener<PasswordPolicy> listener : listeners) {
174             listener.onAfterRemove(passwordPolicy);
175         }
176 
177         return passwordPolicy;
178     }
179 
180     protected PasswordPolicy removeImpl(PasswordPolicy passwordPolicy)
181         throws SystemException {
182         Session session = null;
183 
184         try {
185             session = openSession();
186 
187             if (passwordPolicy.isCachedModel() || BatchSessionUtil.isEnabled()) {
188                 Object staleObject = session.get(PasswordPolicyImpl.class,
189                         passwordPolicy.getPrimaryKeyObj());
190 
191                 if (staleObject != null) {
192                     session.evict(staleObject);
193                 }
194             }
195 
196             session.delete(passwordPolicy);
197 
198             session.flush();
199         }
200         catch (Exception e) {
201             throw processException(e);
202         }
203         finally {
204             closeSession(session);
205         }
206 
207         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
208 
209         PasswordPolicyModelImpl passwordPolicyModelImpl = (PasswordPolicyModelImpl)passwordPolicy;
210 
211         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_DP,
212             new Object[] {
213                 new Long(passwordPolicyModelImpl.getOriginalCompanyId()),
214                 Boolean.valueOf(
215                     passwordPolicyModelImpl.getOriginalDefaultPolicy())
216             });
217 
218         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_N,
219             new Object[] {
220                 new Long(passwordPolicyModelImpl.getOriginalCompanyId()),
221                 
222             passwordPolicyModelImpl.getOriginalName()
223             });
224 
225         EntityCacheUtil.removeResult(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
226             PasswordPolicyImpl.class, passwordPolicy.getPrimaryKey());
227 
228         return passwordPolicy;
229     }
230 
231     /**
232      * @deprecated Use <code>update(PasswordPolicy passwordPolicy, boolean merge)</code>.
233      */
234     public PasswordPolicy update(PasswordPolicy passwordPolicy)
235         throws SystemException {
236         if (_log.isWarnEnabled()) {
237             _log.warn(
238                 "Using the deprecated update(PasswordPolicy passwordPolicy) method. Use update(PasswordPolicy passwordPolicy, boolean merge) instead.");
239         }
240 
241         return update(passwordPolicy, false);
242     }
243 
244     /**
245      * Add, update, or merge, the entity. This method also calls the model
246      * listeners to trigger the proper events associated with adding, deleting,
247      * or updating an entity.
248      *
249      * @param        passwordPolicy the entity to add, update, or merge
250      * @param        merge boolean value for whether to merge the entity. The
251      *                default value is false. Setting merge to true is more
252      *                expensive and should only be true when passwordPolicy is
253      *                transient. See LEP-5473 for a detailed discussion of this
254      *                method.
255      * @return        true if the portlet can be displayed via Ajax
256      */
257     public PasswordPolicy update(PasswordPolicy passwordPolicy, boolean merge)
258         throws SystemException {
259         boolean isNew = passwordPolicy.isNew();
260 
261         for (ModelListener<PasswordPolicy> listener : listeners) {
262             if (isNew) {
263                 listener.onBeforeCreate(passwordPolicy);
264             }
265             else {
266                 listener.onBeforeUpdate(passwordPolicy);
267             }
268         }
269 
270         passwordPolicy = updateImpl(passwordPolicy, merge);
271 
272         for (ModelListener<PasswordPolicy> listener : listeners) {
273             if (isNew) {
274                 listener.onAfterCreate(passwordPolicy);
275             }
276             else {
277                 listener.onAfterUpdate(passwordPolicy);
278             }
279         }
280 
281         return passwordPolicy;
282     }
283 
284     public PasswordPolicy updateImpl(
285         com.liferay.portal.model.PasswordPolicy passwordPolicy, boolean merge)
286         throws SystemException {
287         boolean isNew = passwordPolicy.isNew();
288 
289         PasswordPolicyModelImpl passwordPolicyModelImpl = (PasswordPolicyModelImpl)passwordPolicy;
290 
291         Session session = null;
292 
293         try {
294             session = openSession();
295 
296             BatchSessionUtil.update(session, passwordPolicy, merge);
297 
298             passwordPolicy.setNew(false);
299         }
300         catch (Exception e) {
301             throw processException(e);
302         }
303         finally {
304             closeSession(session);
305         }
306 
307         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
308 
309         EntityCacheUtil.putResult(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
310             PasswordPolicyImpl.class, passwordPolicy.getPrimaryKey(),
311             passwordPolicy);
312 
313         if (!isNew &&
314                 ((passwordPolicy.getCompanyId() != passwordPolicyModelImpl.getOriginalCompanyId()) ||
315                 (passwordPolicy.getDefaultPolicy() != passwordPolicyModelImpl.getOriginalDefaultPolicy()))) {
316             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_DP,
317                 new Object[] {
318                     new Long(passwordPolicyModelImpl.getOriginalCompanyId()),
319                     Boolean.valueOf(
320                         passwordPolicyModelImpl.getOriginalDefaultPolicy())
321                 });
322         }
323 
324         if (isNew ||
325                 ((passwordPolicy.getCompanyId() != passwordPolicyModelImpl.getOriginalCompanyId()) ||
326                 (passwordPolicy.getDefaultPolicy() != passwordPolicyModelImpl.getOriginalDefaultPolicy()))) {
327             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_DP,
328                 new Object[] {
329                     new Long(passwordPolicy.getCompanyId()),
330                     Boolean.valueOf(passwordPolicy.getDefaultPolicy())
331                 }, passwordPolicy);
332         }
333 
334         if (!isNew &&
335                 ((passwordPolicy.getCompanyId() != passwordPolicyModelImpl.getOriginalCompanyId()) ||
336                 !Validator.equals(passwordPolicy.getName(),
337                     passwordPolicyModelImpl.getOriginalName()))) {
338             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_N,
339                 new Object[] {
340                     new Long(passwordPolicyModelImpl.getOriginalCompanyId()),
341                     
342                 passwordPolicyModelImpl.getOriginalName()
343                 });
344         }
345 
346         if (isNew ||
347                 ((passwordPolicy.getCompanyId() != passwordPolicyModelImpl.getOriginalCompanyId()) ||
348                 !Validator.equals(passwordPolicy.getName(),
349                     passwordPolicyModelImpl.getOriginalName()))) {
350             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
351                 new Object[] {
352                     new Long(passwordPolicy.getCompanyId()),
353                     
354                 passwordPolicy.getName()
355                 }, passwordPolicy);
356         }
357 
358         return passwordPolicy;
359     }
360 
361     public PasswordPolicy findByPrimaryKey(long passwordPolicyId)
362         throws NoSuchPasswordPolicyException, SystemException {
363         PasswordPolicy passwordPolicy = fetchByPrimaryKey(passwordPolicyId);
364 
365         if (passwordPolicy == null) {
366             if (_log.isWarnEnabled()) {
367                 _log.warn("No PasswordPolicy exists with the primary key " +
368                     passwordPolicyId);
369             }
370 
371             throw new NoSuchPasswordPolicyException(
372                 "No PasswordPolicy exists with the primary key " +
373                 passwordPolicyId);
374         }
375 
376         return passwordPolicy;
377     }
378 
379     public PasswordPolicy fetchByPrimaryKey(long passwordPolicyId)
380         throws SystemException {
381         PasswordPolicy passwordPolicy = (PasswordPolicy)EntityCacheUtil.getResult(PasswordPolicyModelImpl.ENTITY_CACHE_ENABLED,
382                 PasswordPolicyImpl.class, passwordPolicyId, this);
383 
384         if (passwordPolicy == null) {
385             Session session = null;
386 
387             try {
388                 session = openSession();
389 
390                 passwordPolicy = (PasswordPolicy)session.get(PasswordPolicyImpl.class,
391                         new Long(passwordPolicyId));
392             }
393             catch (Exception e) {
394                 throw processException(e);
395             }
396             finally {
397                 if (passwordPolicy != null) {
398                     cacheResult(passwordPolicy);
399                 }
400 
401                 closeSession(session);
402             }
403         }
404 
405         return passwordPolicy;
406     }
407 
408     public PasswordPolicy findByC_DP(long companyId, boolean defaultPolicy)
409         throws NoSuchPasswordPolicyException, SystemException {
410         PasswordPolicy passwordPolicy = fetchByC_DP(companyId, defaultPolicy);
411 
412         if (passwordPolicy == null) {
413             StringBuilder msg = new StringBuilder();
414 
415             msg.append("No PasswordPolicy exists with the key {");
416 
417             msg.append("companyId=" + companyId);
418 
419             msg.append(", ");
420             msg.append("defaultPolicy=" + defaultPolicy);
421 
422             msg.append(StringPool.CLOSE_CURLY_BRACE);
423 
424             if (_log.isWarnEnabled()) {
425                 _log.warn(msg.toString());
426             }
427 
428             throw new NoSuchPasswordPolicyException(msg.toString());
429         }
430 
431         return passwordPolicy;
432     }
433 
434     public PasswordPolicy fetchByC_DP(long companyId, boolean defaultPolicy)
435         throws SystemException {
436         return fetchByC_DP(companyId, defaultPolicy, true);
437     }
438 
439     public PasswordPolicy fetchByC_DP(long companyId, boolean defaultPolicy,
440         boolean retrieveFromCache) throws SystemException {
441         Object[] finderArgs = new Object[] {
442                 new Long(companyId), Boolean.valueOf(defaultPolicy)
443             };
444 
445         Object result = null;
446 
447         if (retrieveFromCache) {
448             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_C_DP,
449                     finderArgs, this);
450         }
451 
452         if (result == null) {
453             Session session = null;
454 
455             try {
456                 session = openSession();
457 
458                 StringBuilder query = new StringBuilder();
459 
460                 query.append(
461                     "SELECT passwordPolicy FROM PasswordPolicy passwordPolicy WHERE ");
462 
463                 query.append("passwordPolicy.companyId = ?");
464 
465                 query.append(" AND ");
466 
467                 query.append("passwordPolicy.defaultPolicy = ?");
468 
469                 query.append(" ");
470 
471                 Query q = session.createQuery(query.toString());
472 
473                 QueryPos qPos = QueryPos.getInstance(q);
474 
475                 qPos.add(companyId);
476 
477                 qPos.add(defaultPolicy);
478 
479                 List<PasswordPolicy> list = q.list();
480 
481                 result = list;
482 
483                 PasswordPolicy passwordPolicy = null;
484 
485                 if (list.isEmpty()) {
486                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_DP,
487                         finderArgs, list);
488                 }
489                 else {
490                     passwordPolicy = list.get(0);
491 
492                     cacheResult(passwordPolicy);
493 
494                     if ((passwordPolicy.getCompanyId() != companyId) ||
495                             (passwordPolicy.getDefaultPolicy() != defaultPolicy)) {
496                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_DP,
497                             finderArgs, passwordPolicy);
498                     }
499                 }
500 
501                 return passwordPolicy;
502             }
503             catch (Exception e) {
504                 throw processException(e);
505             }
506             finally {
507                 if (result == null) {
508                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_DP,
509                         finderArgs, new ArrayList<PasswordPolicy>());
510                 }
511 
512                 closeSession(session);
513             }
514         }
515         else {
516             if (result instanceof List) {
517                 return null;
518             }
519             else {
520                 return (PasswordPolicy)result;
521             }
522         }
523     }
524 
525     public PasswordPolicy findByC_N(long companyId, String name)
526         throws NoSuchPasswordPolicyException, SystemException {
527         PasswordPolicy passwordPolicy = fetchByC_N(companyId, name);
528 
529         if (passwordPolicy == null) {
530             StringBuilder msg = new StringBuilder();
531 
532             msg.append("No PasswordPolicy exists with the key {");
533 
534             msg.append("companyId=" + companyId);
535 
536             msg.append(", ");
537             msg.append("name=" + name);
538 
539             msg.append(StringPool.CLOSE_CURLY_BRACE);
540 
541             if (_log.isWarnEnabled()) {
542                 _log.warn(msg.toString());
543             }
544 
545             throw new NoSuchPasswordPolicyException(msg.toString());
546         }
547 
548         return passwordPolicy;
549     }
550 
551     public PasswordPolicy fetchByC_N(long companyId, String name)
552         throws SystemException {
553         return fetchByC_N(companyId, name, true);
554     }
555 
556     public PasswordPolicy fetchByC_N(long companyId, String name,
557         boolean retrieveFromCache) throws SystemException {
558         Object[] finderArgs = new Object[] { new Long(companyId), name };
559 
560         Object result = null;
561 
562         if (retrieveFromCache) {
563             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_C_N,
564                     finderArgs, this);
565         }
566 
567         if (result == null) {
568             Session session = null;
569 
570             try {
571                 session = openSession();
572 
573                 StringBuilder query = new StringBuilder();
574 
575                 query.append(
576                     "SELECT passwordPolicy FROM PasswordPolicy passwordPolicy WHERE ");
577 
578                 query.append("passwordPolicy.companyId = ?");
579 
580                 query.append(" AND ");
581 
582                 if (name == null) {
583                     query.append("passwordPolicy.name IS NULL");
584                 }
585                 else {
586                     query.append("passwordPolicy.name = ?");
587                 }
588 
589                 query.append(" ");
590 
591                 Query q = session.createQuery(query.toString());
592 
593                 QueryPos qPos = QueryPos.getInstance(q);
594 
595                 qPos.add(companyId);
596 
597                 if (name != null) {
598                     qPos.add(name);
599                 }
600 
601                 List<PasswordPolicy> list = q.list();
602 
603                 result = list;
604 
605                 PasswordPolicy passwordPolicy = null;
606 
607                 if (list.isEmpty()) {
608                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
609                         finderArgs, list);
610                 }
611                 else {
612                     passwordPolicy = list.get(0);
613 
614                     cacheResult(passwordPolicy);
615 
616                     if ((passwordPolicy.getCompanyId() != companyId) ||
617                             (passwordPolicy.getName() == null) ||
618                             !passwordPolicy.getName().equals(name)) {
619                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
620                             finderArgs, passwordPolicy);
621                     }
622                 }
623 
624                 return passwordPolicy;
625             }
626             catch (Exception e) {
627                 throw processException(e);
628             }
629             finally {
630                 if (result == null) {
631                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
632                         finderArgs, new ArrayList<PasswordPolicy>());
633                 }
634 
635                 closeSession(session);
636             }
637         }
638         else {
639             if (result instanceof List) {
640                 return null;
641             }
642             else {
643                 return (PasswordPolicy)result;
644             }
645         }
646     }
647 
648     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
649         throws SystemException {
650         Session session = null;
651 
652         try {
653             session = openSession();
654 
655             dynamicQuery.compile(session);
656 
657             return dynamicQuery.list();
658         }
659         catch (Exception e) {
660             throw processException(e);
661         }
662         finally {
663             closeSession(session);
664         }
665     }
666 
667     public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
668         int start, int end) throws SystemException {
669         Session session = null;
670 
671         try {
672             session = openSession();
673 
674             dynamicQuery.setLimit(start, end);
675 
676             dynamicQuery.compile(session);
677 
678             return dynamicQuery.list();
679         }
680         catch (Exception e) {
681             throw processException(e);
682         }
683         finally {
684             closeSession(session);
685         }
686     }
687 
688     public List<PasswordPolicy> findAll() throws SystemException {
689         return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
690     }
691 
692     public List<PasswordPolicy> findAll(int start, int end)
693         throws SystemException {
694         return findAll(start, end, null);
695     }
696 
697     public List<PasswordPolicy> findAll(int start, int end,
698         OrderByComparator obc) throws SystemException {
699         Object[] finderArgs = new Object[] {
700                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
701             };
702 
703         List<PasswordPolicy> list = (List<PasswordPolicy>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
704                 finderArgs, this);
705 
706         if (list == null) {
707             Session session = null;
708 
709             try {
710                 session = openSession();
711 
712                 StringBuilder query = new StringBuilder();
713 
714                 query.append(
715                     "SELECT passwordPolicy FROM PasswordPolicy passwordPolicy ");
716 
717                 if (obc != null) {
718                     query.append("ORDER BY ");
719 
720                     String[] orderByFields = obc.getOrderByFields();
721 
722                     for (int i = 0; i < orderByFields.length; i++) {
723                         query.append("passwordPolicy.");
724                         query.append(orderByFields[i]);
725 
726                         if (obc.isAscending()) {
727                             query.append(" ASC");
728                         }
729                         else {
730                             query.append(" DESC");
731                         }
732 
733                         if ((i + 1) < orderByFields.length) {
734                             query.append(", ");
735                         }
736                     }
737                 }
738 
739                 Query q = session.createQuery(query.toString());
740 
741                 if (obc == null) {
742                     list = (List<PasswordPolicy>)QueryUtil.list(q,
743                             getDialect(), start, end, false);
744 
745                     Collections.sort(list);
746                 }
747                 else {
748                     list = (List<PasswordPolicy>)QueryUtil.list(q,
749                             getDialect(), start, end);
750                 }
751             }
752             catch (Exception e) {
753                 throw processException(e);
754             }
755             finally {
756                 if (list == null) {
757                     list = new ArrayList<PasswordPolicy>();
758                 }
759 
760                 cacheResult(list);
761 
762                 FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
763 
764                 closeSession(session);
765             }
766         }
767 
768         return list;
769     }
770 
771     public void removeByC_DP(long companyId, boolean defaultPolicy)
772         throws NoSuchPasswordPolicyException, SystemException {
773         PasswordPolicy passwordPolicy = findByC_DP(companyId, defaultPolicy);
774 
775         remove(passwordPolicy);
776     }
777 
778     public void removeByC_N(long companyId, String name)
779         throws NoSuchPasswordPolicyException, SystemException {
780         PasswordPolicy passwordPolicy = findByC_N(companyId, name);
781 
782         remove(passwordPolicy);
783     }
784 
785     public void removeAll() throws SystemException {
786         for (PasswordPolicy passwordPolicy : findAll()) {
787             remove(passwordPolicy);
788         }
789     }
790 
791     public int countByC_DP(long companyId, boolean defaultPolicy)
792         throws SystemException {
793         Object[] finderArgs = new Object[] {
794                 new Long(companyId), Boolean.valueOf(defaultPolicy)
795             };
796 
797         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_DP,
798                 finderArgs, this);
799 
800         if (count == null) {
801             Session session = null;
802 
803             try {
804                 session = openSession();
805 
806                 StringBuilder query = new StringBuilder();
807 
808                 query.append("SELECT COUNT(passwordPolicy) ");
809                 query.append("FROM PasswordPolicy passwordPolicy WHERE ");
810 
811                 query.append("passwordPolicy.companyId = ?");
812 
813                 query.append(" AND ");
814 
815                 query.append("passwordPolicy.defaultPolicy = ?");
816 
817                 query.append(" ");
818 
819                 Query q = session.createQuery(query.toString());
820 
821                 QueryPos qPos = QueryPos.getInstance(q);
822 
823                 qPos.add(companyId);
824 
825                 qPos.add(defaultPolicy);
826 
827                 count = (Long)q.uniqueResult();
828             }
829             catch (Exception e) {
830                 throw processException(e);
831             }
832             finally {
833                 if (count == null) {
834                     count = Long.valueOf(0);
835                 }
836 
837                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_DP,
838                     finderArgs, count);
839 
840                 closeSession(session);
841             }
842         }
843 
844         return count.intValue();
845     }
846 
847     public int countByC_N(long companyId, String name)
848         throws SystemException {
849         Object[] finderArgs = new Object[] { new Long(companyId), name };
850 
851         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_N,
852                 finderArgs, this);
853 
854         if (count == null) {
855             Session session = null;
856 
857             try {
858                 session = openSession();
859 
860                 StringBuilder query = new StringBuilder();
861 
862                 query.append("SELECT COUNT(passwordPolicy) ");
863                 query.append("FROM PasswordPolicy passwordPolicy WHERE ");
864 
865                 query.append("passwordPolicy.companyId = ?");
866 
867                 query.append(" AND ");
868 
869                 if (name == null) {
870                     query.append("passwordPolicy.name IS NULL");
871                 }
872                 else {
873                     query.append("passwordPolicy.name = ?");
874                 }
875 
876                 query.append(" ");
877 
878                 Query q = session.createQuery(query.toString());
879 
880                 QueryPos qPos = QueryPos.getInstance(q);
881 
882                 qPos.add(companyId);
883 
884                 if (name != null) {
885                     qPos.add(name);
886                 }
887 
888                 count = (Long)q.uniqueResult();
889             }
890             catch (Exception e) {
891                 throw processException(e);
892             }
893             finally {
894                 if (count == null) {
895                     count = Long.valueOf(0);
896                 }
897 
898                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_N, finderArgs,
899                     count);
900 
901                 closeSession(session);
902             }
903         }
904 
905         return count.intValue();
906     }
907 
908     public int countAll() throws SystemException {
909         Object[] finderArgs = new Object[0];
910 
911         Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
912                 finderArgs, this);
913 
914         if (count == null) {
915             Session session = null;
916 
917             try {
918                 session = openSession();
919 
920                 Query q = session.createQuery(
921                         "SELECT COUNT(passwordPolicy) FROM PasswordPolicy passwordPolicy");
922 
923                 count = (Long)q.uniqueResult();
924             }
925             catch (Exception e) {
926                 throw processException(e);
927             }
928             finally {
929                 if (count == null) {
930                     count = Long.valueOf(0);
931                 }
932 
933                 FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
934                     count);
935 
936                 closeSession(session);
937             }
938         }
939 
940         return count.intValue();
941     }
942 
943     public void afterPropertiesSet() {
944         String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
945                     com.liferay.portal.util.PropsUtil.get(
946                         "value.object.listener.com.liferay.portal.model.PasswordPolicy")));
947 
948         if (listenerClassNames.length > 0) {
949             try {
950                 List<ModelListener<PasswordPolicy>> listenersList = new ArrayList<ModelListener<PasswordPolicy>>();
951 
952                 for (String listenerClassName : listenerClassNames) {
953                     listenersList.add((ModelListener<PasswordPolicy>)Class.forName(
954                             listenerClassName).newInstance());
955                 }
956 
957                 listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
958             }
959             catch (Exception e) {
960                 _log.error(e);
961             }
962         }
963     }
964 
965     @BeanReference(name = "com.liferay.portal.service.persistence.AccountPersistence.impl")
966     protected com.liferay.portal.service.persistence.AccountPersistence accountPersistence;
967     @BeanReference(name = "com.liferay.portal.service.persistence.AddressPersistence.impl")
968     protected com.liferay.portal.service.persistence.AddressPersistence addressPersistence;
969     @BeanReference(name = "com.liferay.portal.service.persistence.BrowserTrackerPersistence.impl")
970     protected com.liferay.portal.service.persistence.BrowserTrackerPersistence browserTrackerPersistence;
971     @BeanReference(name = "com.liferay.portal.service.persistence.ClassNamePersistence.impl")
972     protected com.liferay.portal.service.persistence.ClassNamePersistence classNamePersistence;
973     @BeanReference(name = "com.liferay.portal.service.persistence.CompanyPersistence.impl")
974     protected com.liferay.portal.service.persistence.CompanyPersistence companyPersistence;
975     @BeanReference(name = "com.liferay.portal.service.persistence.ContactPersistence.impl")
976     protected com.liferay.portal.service.persistence.ContactPersistence contactPersistence;
977     @BeanReference(name = "com.liferay.portal.service.persistence.CountryPersistence.impl")
978     protected com.liferay.portal.service.persistence.CountryPersistence countryPersistence;
979     @BeanReference(name = "com.liferay.portal.service.persistence.EmailAddressPersistence.impl")
980     protected com.liferay.portal.service.persistence.EmailAddressPersistence emailAddressPersistence;
981     @BeanReference(name = "com.liferay.portal.service.persistence.GroupPersistence.impl")
982     protected com.liferay.portal.service.persistence.GroupPersistence groupPersistence;
983     @BeanReference(name = "com.liferay.portal.service.persistence.ImagePersistence.impl")
984     protected com.liferay.portal.service.persistence.ImagePersistence imagePersistence;
985     @BeanReference(name = "com.liferay.portal.service.persistence.LayoutPersistence.impl")
986     protected com.liferay.portal.service.persistence.LayoutPersistence layoutPersistence;
987     @BeanReference(name = "com.liferay.portal.service.persistence.LayoutSetPersistence.impl")
988     protected com.liferay.portal.service.persistence.LayoutSetPersistence layoutSetPersistence;
989     @BeanReference(name = "com.liferay.portal.service.persistence.ListTypePersistence.impl")
990     protected com.liferay.portal.service.persistence.ListTypePersistence listTypePersistence;
991     @BeanReference(name = "com.liferay.portal.service.persistence.MembershipRequestPersistence.impl")
992     protected com.liferay.portal.service.persistence.MembershipRequestPersistence membershipRequestPersistence;
993     @BeanReference(name = "com.liferay.portal.service.persistence.OrganizationPersistence.impl")
994     protected com.liferay.portal.service.persistence.OrganizationPersistence organizationPersistence;
995     @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupPermissionPersistence.impl")
996     protected com.liferay.portal.service.persistence.OrgGroupPermissionPersistence orgGroupPermissionPersistence;
997     @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupRolePersistence.impl")
998     protected com.liferay.portal.service.persistence.OrgGroupRolePersistence orgGroupRolePersistence;
999     @BeanReference(name = "com.liferay.portal.service.persistence.OrgLaborPersistence.impl")
1000    protected com.liferay.portal.service.persistence.OrgLaborPersistence orgLaborPersistence;
1001    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyPersistence.impl")
1002    protected com.liferay.portal.service.persistence.PasswordPolicyPersistence passwordPolicyPersistence;
1003    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyRelPersistence.impl")
1004    protected com.liferay.portal.service.persistence.PasswordPolicyRelPersistence passwordPolicyRelPersistence;
1005    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordTrackerPersistence.impl")
1006    protected com.liferay.portal.service.persistence.PasswordTrackerPersistence passwordTrackerPersistence;
1007    @BeanReference(name = "com.liferay.portal.service.persistence.PermissionPersistence.impl")
1008    protected com.liferay.portal.service.persistence.PermissionPersistence permissionPersistence;
1009    @BeanReference(name = "com.liferay.portal.service.persistence.PhonePersistence.impl")
1010    protected com.liferay.portal.service.persistence.PhonePersistence phonePersistence;
1011    @BeanReference(name = "com.liferay.portal.service.persistence.PluginSettingPersistence.impl")
1012    protected com.liferay.portal.service.persistence.PluginSettingPersistence pluginSettingPersistence;
1013    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPersistence.impl")
1014    protected com.liferay.portal.service.persistence.PortletPersistence portletPersistence;
1015    @BeanReference(name = "com.liferay.portal.service.persistence.PortletItemPersistence.impl")
1016    protected com.liferay.portal.service.persistence.PortletItemPersistence portletItemPersistence;
1017    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPreferencesPersistence.impl")
1018    protected com.liferay.portal.service.persistence.PortletPreferencesPersistence portletPreferencesPersistence;
1019    @BeanReference(name = "com.liferay.portal.service.persistence.RegionPersistence.impl")
1020    protected com.liferay.portal.service.persistence.RegionPersistence regionPersistence;
1021    @BeanReference(name = "com.liferay.portal.service.persistence.ReleasePersistence.impl")
1022    protected com.liferay.portal.service.persistence.ReleasePersistence releasePersistence;
1023    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
1024    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
1025    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceActionPersistence.impl")
1026    protected com.liferay.portal.service.persistence.ResourceActionPersistence resourceActionPersistence;
1027    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceCodePersistence.impl")
1028    protected com.liferay.portal.service.persistence.ResourceCodePersistence resourceCodePersistence;
1029    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePermissionPersistence.impl")
1030    protected com.liferay.portal.service.persistence.ResourcePermissionPersistence resourcePermissionPersistence;
1031    @BeanReference(name = "com.liferay.portal.service.persistence.RolePersistence.impl")
1032    protected com.liferay.portal.service.persistence.RolePersistence rolePersistence;
1033    @BeanReference(name = "com.liferay.portal.service.persistence.ServiceComponentPersistence.impl")
1034    protected com.liferay.portal.service.persistence.ServiceComponentPersistence serviceComponentPersistence;
1035    @BeanReference(name = "com.liferay.portal.service.persistence.ShardPersistence.impl")
1036    protected com.liferay.portal.service.persistence.ShardPersistence shardPersistence;
1037    @BeanReference(name = "com.liferay.portal.service.persistence.SubscriptionPersistence.impl")
1038    protected com.liferay.portal.service.persistence.SubscriptionPersistence subscriptionPersistence;
1039    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
1040    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
1041    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupPersistence.impl")
1042    protected com.liferay.portal.service.persistence.UserGroupPersistence userGroupPersistence;
1043    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupRolePersistence.impl")
1044    protected com.liferay.portal.service.persistence.UserGroupRolePersistence userGroupRolePersistence;
1045    @BeanReference(name = "com.liferay.portal.service.persistence.UserIdMapperPersistence.impl")
1046    protected com.liferay.portal.service.persistence.UserIdMapperPersistence userIdMapperPersistence;
1047    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPersistence.impl")
1048    protected com.liferay.portal.service.persistence.UserTrackerPersistence userTrackerPersistence;
1049    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPathPersistence.impl")
1050    protected com.liferay.portal.service.persistence.UserTrackerPathPersistence userTrackerPathPersistence;
1051    @BeanReference(name = "com.liferay.portal.service.persistence.WebDAVPropsPersistence.impl")
1052    protected com.liferay.portal.service.persistence.WebDAVPropsPersistence webDAVPropsPersistence;
1053    @BeanReference(name = "com.liferay.portal.service.persistence.WebsitePersistence.impl")
1054    protected com.liferay.portal.service.persistence.WebsitePersistence websitePersistence;
1055    private static Log _log = LogFactoryUtil.getLog(PasswordPolicyPersistenceImpl.class);
1056}