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