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.NoSuchOrganizationException;
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.jdbc.MappingSqlQuery;
30  import com.liferay.portal.kernel.dao.jdbc.MappingSqlQueryFactoryUtil;
31  import com.liferay.portal.kernel.dao.jdbc.RowMapper;
32  import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
33  import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
34  import com.liferay.portal.kernel.dao.orm.DynamicQuery;
35  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
36  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
37  import com.liferay.portal.kernel.dao.orm.FinderPath;
38  import com.liferay.portal.kernel.dao.orm.Query;
39  import com.liferay.portal.kernel.dao.orm.QueryPos;
40  import com.liferay.portal.kernel.dao.orm.QueryUtil;
41  import com.liferay.portal.kernel.dao.orm.SQLQuery;
42  import com.liferay.portal.kernel.dao.orm.Session;
43  import com.liferay.portal.kernel.dao.orm.Type;
44  import com.liferay.portal.kernel.log.Log;
45  import com.liferay.portal.kernel.log.LogFactoryUtil;
46  import com.liferay.portal.kernel.util.GetterUtil;
47  import com.liferay.portal.kernel.util.OrderByComparator;
48  import com.liferay.portal.kernel.util.StringPool;
49  import com.liferay.portal.kernel.util.StringUtil;
50  import com.liferay.portal.model.ModelListener;
51  import com.liferay.portal.model.Organization;
52  import com.liferay.portal.model.impl.OrganizationImpl;
53  import com.liferay.portal.model.impl.OrganizationModelImpl;
54  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
55  
56  import java.sql.Types;
57  
58  import java.util.ArrayList;
59  import java.util.Collections;
60  import java.util.List;
61  
62  /**
63   * <a href="OrganizationPersistenceImpl.java.html"><b><i>View Source</i></b></a>
64   *
65   * @author Brian Wing Shun Chan
66   *
67   */
68  public class OrganizationPersistenceImpl extends BasePersistenceImpl
69      implements OrganizationPersistence {
70      public static final String FINDER_CLASS_NAME_ENTITY = OrganizationImpl.class.getName();
71      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
72          ".List";
73      public static final FinderPath FINDER_PATH_FIND_BY_COMPANYID = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
74              OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
75              "findByCompanyId", new String[] { Long.class.getName() });
76      public static final FinderPath FINDER_PATH_FIND_BY_OBC_COMPANYID = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
77              OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
78              "findByCompanyId",
79              new String[] {
80                  Long.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_COMPANYID = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
86              OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
87              "countByCompanyId", new String[] { Long.class.getName() });
88      public static final FinderPath FINDER_PATH_FIND_BY_LOCATIONS = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
89              OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
90              "findByLocations", new String[] { Long.class.getName() });
91      public static final FinderPath FINDER_PATH_FIND_BY_OBC_LOCATIONS = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
92              OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
93              "findByLocations",
94              new String[] {
95                  Long.class.getName(),
96                  
97              "java.lang.Integer", "java.lang.Integer",
98                  "com.liferay.portal.kernel.util.OrderByComparator"
99              });
100     public static final FinderPath FINDER_PATH_COUNT_BY_LOCATIONS = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
101             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
102             "countByLocations", new String[] { Long.class.getName() });
103     public static final FinderPath FINDER_PATH_FIND_BY_C_P = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
104             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
105             "findByC_P",
106             new String[] { Long.class.getName(), Long.class.getName() });
107     public static final FinderPath FINDER_PATH_FIND_BY_OBC_C_P = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
108             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
109             "findByC_P",
110             new String[] {
111                 Long.class.getName(), Long.class.getName(),
112                 
113             "java.lang.Integer", "java.lang.Integer",
114                 "com.liferay.portal.kernel.util.OrderByComparator"
115             });
116     public static final FinderPath FINDER_PATH_COUNT_BY_C_P = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
117             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
118             "countByC_P",
119             new String[] { Long.class.getName(), Long.class.getName() });
120     public static final FinderPath FINDER_PATH_FETCH_BY_C_N = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
121             OrganizationModelImpl.FINDER_CACHE_ENABLED,
122             FINDER_CLASS_NAME_ENTITY, "fetchByC_N",
123             new String[] { Long.class.getName(), String.class.getName() });
124     public static final FinderPath FINDER_PATH_COUNT_BY_C_N = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
125             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
126             "countByC_N",
127             new String[] { Long.class.getName(), String.class.getName() });
128     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
129             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
130             "findAll", new String[0]);
131     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
132             OrganizationModelImpl.FINDER_CACHE_ENABLED, FINDER_CLASS_NAME_LIST,
133             "countAll", new String[0]);
134 
135     public void cacheResult(Organization organization) {
136         EntityCacheUtil.putResult(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
137             OrganizationImpl.class, organization.getPrimaryKey(), organization);
138 
139         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
140             new Object[] {
141                 new Long(organization.getCompanyId()),
142                 
143             organization.getName()
144             }, organization);
145     }
146 
147     public void cacheResult(List<Organization> organizations) {
148         for (Organization organization : organizations) {
149             if (EntityCacheUtil.getResult(
150                         OrganizationModelImpl.ENTITY_CACHE_ENABLED,
151                         OrganizationImpl.class, organization.getPrimaryKey(),
152                         this) == null) {
153                 cacheResult(organization);
154             }
155         }
156     }
157 
158     public void clearCache() {
159         CacheRegistry.clear(OrganizationImpl.class.getName());
160         EntityCacheUtil.clearCache(OrganizationImpl.class.getName());
161         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
162         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
163     }
164 
165     public Organization create(long organizationId) {
166         Organization organization = new OrganizationImpl();
167 
168         organization.setNew(true);
169         organization.setPrimaryKey(organizationId);
170 
171         return organization;
172     }
173 
174     public Organization remove(long organizationId)
175         throws NoSuchOrganizationException, SystemException {
176         Session session = null;
177 
178         try {
179             session = openSession();
180 
181             Organization organization = (Organization)session.get(OrganizationImpl.class,
182                     new Long(organizationId));
183 
184             if (organization == null) {
185                 if (_log.isWarnEnabled()) {
186                     _log.warn("No Organization exists with the primary key " +
187                         organizationId);
188                 }
189 
190                 throw new NoSuchOrganizationException(
191                     "No Organization exists with the primary key " +
192                     organizationId);
193             }
194 
195             return remove(organization);
196         }
197         catch (NoSuchOrganizationException nsee) {
198             throw nsee;
199         }
200         catch (Exception e) {
201             throw processException(e);
202         }
203         finally {
204             closeSession(session);
205         }
206     }
207 
208     public Organization remove(Organization organization)
209         throws SystemException {
210         for (ModelListener<Organization> listener : listeners) {
211             listener.onBeforeRemove(organization);
212         }
213 
214         organization = removeImpl(organization);
215 
216         for (ModelListener<Organization> listener : listeners) {
217             listener.onAfterRemove(organization);
218         }
219 
220         return organization;
221     }
222 
223     protected Organization removeImpl(Organization organization)
224         throws SystemException {
225         try {
226             clearGroups.clear(organization.getPrimaryKey());
227         }
228         catch (Exception e) {
229             throw processException(e);
230         }
231         finally {
232             FinderCacheUtil.clearCache("Groups_Orgs");
233         }
234 
235         try {
236             clearUsers.clear(organization.getPrimaryKey());
237         }
238         catch (Exception e) {
239             throw processException(e);
240         }
241         finally {
242             FinderCacheUtil.clearCache("Users_Orgs");
243         }
244 
245         shrinkTree(organization);
246 
247         Session session = null;
248 
249         try {
250             session = openSession();
251 
252             if (organization.isCachedModel() || BatchSessionUtil.isEnabled()) {
253                 Object staleObject = session.get(OrganizationImpl.class,
254                         organization.getPrimaryKeyObj());
255 
256                 if (staleObject != null) {
257                     session.evict(staleObject);
258                 }
259             }
260 
261             session.delete(organization);
262 
263             session.flush();
264         }
265         catch (Exception e) {
266             throw processException(e);
267         }
268         finally {
269             closeSession(session);
270         }
271 
272         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
273 
274         OrganizationModelImpl organizationModelImpl = (OrganizationModelImpl)organization;
275 
276         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_N,
277             new Object[] {
278                 new Long(organizationModelImpl.getOriginalCompanyId()),
279                 
280             organizationModelImpl.getOriginalName()
281             });
282 
283         EntityCacheUtil.removeResult(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
284             OrganizationImpl.class, organization.getPrimaryKey());
285 
286         return organization;
287     }
288 
289     /**
290      * @deprecated Use <code>update(Organization organization, boolean merge)</code>.
291      */
292     public Organization update(Organization organization)
293         throws SystemException {
294         if (_log.isWarnEnabled()) {
295             _log.warn(
296                 "Using the deprecated update(Organization organization) method. Use update(Organization organization, boolean merge) instead.");
297         }
298 
299         return update(organization, false);
300     }
301 
302     /**
303      * Add, update, or merge, the entity. This method also calls the model
304      * listeners to trigger the proper events associated with adding, deleting,
305      * or updating an entity.
306      *
307      * @param        organization the entity to add, update, or merge
308      * @param        merge boolean value for whether to merge the entity. The
309      *                default value is false. Setting merge to true is more
310      *                expensive and should only be true when organization is
311      *                transient. See LEP-5473 for a detailed discussion of this
312      *                method.
313      * @return        true if the portlet can be displayed via Ajax
314      */
315     public Organization update(Organization organization, boolean merge)
316         throws SystemException {
317         boolean isNew = organization.isNew();
318 
319         for (ModelListener<Organization> listener : listeners) {
320             if (isNew) {
321                 listener.onBeforeCreate(organization);
322             }
323             else {
324                 listener.onBeforeUpdate(organization);
325             }
326         }
327 
328         organization = updateImpl(organization, merge);
329 
330         for (ModelListener<Organization> listener : listeners) {
331             if (isNew) {
332                 listener.onAfterCreate(organization);
333             }
334             else {
335                 listener.onAfterUpdate(organization);
336             }
337         }
338 
339         return organization;
340     }
341 
342     public Organization updateImpl(
343         com.liferay.portal.model.Organization organization, boolean merge)
344         throws SystemException {
345         boolean isNew = organization.isNew();
346 
347         OrganizationModelImpl organizationModelImpl = (OrganizationModelImpl)organization;
348 
349         if (isNew) {
350             expandTree(organization);
351         }
352         else {
353             if (organization.getParentOrganizationId() != organizationModelImpl.getOriginalParentOrganizationId()) {
354                 shrinkTree(organization);
355                 expandTree(organization);
356             }
357         }
358 
359         Session session = null;
360 
361         try {
362             session = openSession();
363 
364             BatchSessionUtil.update(session, organization, merge);
365 
366             organization.setNew(false);
367         }
368         catch (Exception e) {
369             throw processException(e);
370         }
371         finally {
372             closeSession(session);
373         }
374 
375         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
376 
377         EntityCacheUtil.putResult(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
378             OrganizationImpl.class, organization.getPrimaryKey(), organization);
379 
380         if (!isNew &&
381                 ((organization.getCompanyId() != organizationModelImpl.getOriginalCompanyId()) ||
382                 !organization.getName()
383                                  .equals(organizationModelImpl.getOriginalName()))) {
384             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_C_N,
385                 new Object[] {
386                     new Long(organizationModelImpl.getOriginalCompanyId()),
387                     
388                 organizationModelImpl.getOriginalName()
389                 });
390         }
391 
392         if (isNew ||
393                 ((organization.getCompanyId() != organizationModelImpl.getOriginalCompanyId()) ||
394                 !organization.getName()
395                                  .equals(organizationModelImpl.getOriginalName()))) {
396             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
397                 new Object[] {
398                     new Long(organization.getCompanyId()),
399                     
400                 organization.getName()
401                 }, organization);
402         }
403 
404         return organization;
405     }
406 
407     public Organization findByPrimaryKey(long organizationId)
408         throws NoSuchOrganizationException, SystemException {
409         Organization organization = fetchByPrimaryKey(organizationId);
410 
411         if (organization == null) {
412             if (_log.isWarnEnabled()) {
413                 _log.warn("No Organization exists with the primary key " +
414                     organizationId);
415             }
416 
417             throw new NoSuchOrganizationException(
418                 "No Organization exists with the primary key " +
419                 organizationId);
420         }
421 
422         return organization;
423     }
424 
425     public Organization fetchByPrimaryKey(long organizationId)
426         throws SystemException {
427         Organization organization = (Organization)EntityCacheUtil.getResult(OrganizationModelImpl.ENTITY_CACHE_ENABLED,
428                 OrganizationImpl.class, organizationId, this);
429 
430         if (organization == null) {
431             Session session = null;
432 
433             try {
434                 session = openSession();
435 
436                 organization = (Organization)session.get(OrganizationImpl.class,
437                         new Long(organizationId));
438             }
439             catch (Exception e) {
440                 throw processException(e);
441             }
442             finally {
443                 if (organization != null) {
444                     cacheResult(organization);
445                 }
446 
447                 closeSession(session);
448             }
449         }
450 
451         return organization;
452     }
453 
454     public List<Organization> findByCompanyId(long companyId)
455         throws SystemException {
456         Object[] finderArgs = new Object[] { new Long(companyId) };
457 
458         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_COMPANYID,
459                 finderArgs, this);
460 
461         if (list == null) {
462             Session session = null;
463 
464             try {
465                 session = openSession();
466 
467                 StringBuilder query = new StringBuilder();
468 
469                 query.append(
470                     "FROM com.liferay.portal.model.Organization WHERE ");
471 
472                 query.append("companyId = ?");
473 
474                 query.append(" ");
475 
476                 query.append("ORDER BY ");
477 
478                 query.append("name ASC");
479 
480                 Query q = session.createQuery(query.toString());
481 
482                 QueryPos qPos = QueryPos.getInstance(q);
483 
484                 qPos.add(companyId);
485 
486                 list = q.list();
487             }
488             catch (Exception e) {
489                 throw processException(e);
490             }
491             finally {
492                 if (list == null) {
493                     list = new ArrayList<Organization>();
494                 }
495 
496                 cacheResult(list);
497 
498                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_COMPANYID,
499                     finderArgs, list);
500 
501                 closeSession(session);
502             }
503         }
504 
505         return list;
506     }
507 
508     public List<Organization> findByCompanyId(long companyId, int start, int end)
509         throws SystemException {
510         return findByCompanyId(companyId, start, end, null);
511     }
512 
513     public List<Organization> findByCompanyId(long companyId, int start,
514         int end, OrderByComparator obc) throws SystemException {
515         Object[] finderArgs = new Object[] {
516                 new Long(companyId),
517                 
518                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
519             };
520 
521         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
522                 finderArgs, this);
523 
524         if (list == null) {
525             Session session = null;
526 
527             try {
528                 session = openSession();
529 
530                 StringBuilder query = new StringBuilder();
531 
532                 query.append(
533                     "FROM com.liferay.portal.model.Organization WHERE ");
534 
535                 query.append("companyId = ?");
536 
537                 query.append(" ");
538 
539                 if (obc != null) {
540                     query.append("ORDER BY ");
541                     query.append(obc.getOrderBy());
542                 }
543 
544                 else {
545                     query.append("ORDER BY ");
546 
547                     query.append("name ASC");
548                 }
549 
550                 Query q = session.createQuery(query.toString());
551 
552                 QueryPos qPos = QueryPos.getInstance(q);
553 
554                 qPos.add(companyId);
555 
556                 list = (List<Organization>)QueryUtil.list(q, getDialect(),
557                         start, end);
558             }
559             catch (Exception e) {
560                 throw processException(e);
561             }
562             finally {
563                 if (list == null) {
564                     list = new ArrayList<Organization>();
565                 }
566 
567                 cacheResult(list);
568 
569                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_COMPANYID,
570                     finderArgs, list);
571 
572                 closeSession(session);
573             }
574         }
575 
576         return list;
577     }
578 
579     public Organization findByCompanyId_First(long companyId,
580         OrderByComparator obc)
581         throws NoSuchOrganizationException, SystemException {
582         List<Organization> list = findByCompanyId(companyId, 0, 1, obc);
583 
584         if (list.isEmpty()) {
585             StringBuilder msg = new StringBuilder();
586 
587             msg.append("No Organization exists with the key {");
588 
589             msg.append("companyId=" + companyId);
590 
591             msg.append(StringPool.CLOSE_CURLY_BRACE);
592 
593             throw new NoSuchOrganizationException(msg.toString());
594         }
595         else {
596             return list.get(0);
597         }
598     }
599 
600     public Organization findByCompanyId_Last(long companyId,
601         OrderByComparator obc)
602         throws NoSuchOrganizationException, SystemException {
603         int count = countByCompanyId(companyId);
604 
605         List<Organization> list = findByCompanyId(companyId, count - 1, count,
606                 obc);
607 
608         if (list.isEmpty()) {
609             StringBuilder msg = new StringBuilder();
610 
611             msg.append("No Organization exists with the key {");
612 
613             msg.append("companyId=" + companyId);
614 
615             msg.append(StringPool.CLOSE_CURLY_BRACE);
616 
617             throw new NoSuchOrganizationException(msg.toString());
618         }
619         else {
620             return list.get(0);
621         }
622     }
623 
624     public Organization[] findByCompanyId_PrevAndNext(long organizationId,
625         long companyId, OrderByComparator obc)
626         throws NoSuchOrganizationException, SystemException {
627         Organization organization = findByPrimaryKey(organizationId);
628 
629         int count = countByCompanyId(companyId);
630 
631         Session session = null;
632 
633         try {
634             session = openSession();
635 
636             StringBuilder query = new StringBuilder();
637 
638             query.append("FROM com.liferay.portal.model.Organization WHERE ");
639 
640             query.append("companyId = ?");
641 
642             query.append(" ");
643 
644             if (obc != null) {
645                 query.append("ORDER BY ");
646                 query.append(obc.getOrderBy());
647             }
648 
649             else {
650                 query.append("ORDER BY ");
651 
652                 query.append("name ASC");
653             }
654 
655             Query q = session.createQuery(query.toString());
656 
657             QueryPos qPos = QueryPos.getInstance(q);
658 
659             qPos.add(companyId);
660 
661             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
662                     organization);
663 
664             Organization[] array = new OrganizationImpl[3];
665 
666             array[0] = (Organization)objArray[0];
667             array[1] = (Organization)objArray[1];
668             array[2] = (Organization)objArray[2];
669 
670             return array;
671         }
672         catch (Exception e) {
673             throw processException(e);
674         }
675         finally {
676             closeSession(session);
677         }
678     }
679 
680     public List<Organization> findByLocations(long companyId)
681         throws SystemException {
682         Object[] finderArgs = new Object[] { new Long(companyId) };
683 
684         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_LOCATIONS,
685                 finderArgs, this);
686 
687         if (list == null) {
688             Session session = null;
689 
690             try {
691                 session = openSession();
692 
693                 StringBuilder query = new StringBuilder();
694 
695                 query.append(
696                     "FROM com.liferay.portal.model.Organization WHERE ");
697 
698                 query.append("companyId = ?");
699 
700                 query.append(" AND parentOrganizationId != 0 ");
701 
702                 query.append("ORDER BY ");
703 
704                 query.append("name ASC");
705 
706                 Query q = session.createQuery(query.toString());
707 
708                 QueryPos qPos = QueryPos.getInstance(q);
709 
710                 qPos.add(companyId);
711 
712                 list = q.list();
713             }
714             catch (Exception e) {
715                 throw processException(e);
716             }
717             finally {
718                 if (list == null) {
719                     list = new ArrayList<Organization>();
720                 }
721 
722                 cacheResult(list);
723 
724                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_LOCATIONS,
725                     finderArgs, list);
726 
727                 closeSession(session);
728             }
729         }
730 
731         return list;
732     }
733 
734     public List<Organization> findByLocations(long companyId, int start, int end)
735         throws SystemException {
736         return findByLocations(companyId, start, end, null);
737     }
738 
739     public List<Organization> findByLocations(long companyId, int start,
740         int end, OrderByComparator obc) throws SystemException {
741         Object[] finderArgs = new Object[] {
742                 new Long(companyId),
743                 
744                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
745             };
746 
747         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_LOCATIONS,
748                 finderArgs, this);
749 
750         if (list == null) {
751             Session session = null;
752 
753             try {
754                 session = openSession();
755 
756                 StringBuilder query = new StringBuilder();
757 
758                 query.append(
759                     "FROM com.liferay.portal.model.Organization WHERE ");
760 
761                 query.append("companyId = ?");
762 
763                 query.append(" AND parentOrganizationId != 0 ");
764 
765                 if (obc != null) {
766                     query.append("ORDER BY ");
767                     query.append(obc.getOrderBy());
768                 }
769 
770                 else {
771                     query.append("ORDER BY ");
772 
773                     query.append("name ASC");
774                 }
775 
776                 Query q = session.createQuery(query.toString());
777 
778                 QueryPos qPos = QueryPos.getInstance(q);
779 
780                 qPos.add(companyId);
781 
782                 list = (List<Organization>)QueryUtil.list(q, getDialect(),
783                         start, end);
784             }
785             catch (Exception e) {
786                 throw processException(e);
787             }
788             finally {
789                 if (list == null) {
790                     list = new ArrayList<Organization>();
791                 }
792 
793                 cacheResult(list);
794 
795                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_LOCATIONS,
796                     finderArgs, list);
797 
798                 closeSession(session);
799             }
800         }
801 
802         return list;
803     }
804 
805     public Organization findByLocations_First(long companyId,
806         OrderByComparator obc)
807         throws NoSuchOrganizationException, SystemException {
808         List<Organization> list = findByLocations(companyId, 0, 1, obc);
809 
810         if (list.isEmpty()) {
811             StringBuilder msg = new StringBuilder();
812 
813             msg.append("No Organization exists with the key {");
814 
815             msg.append("companyId=" + companyId);
816 
817             msg.append(StringPool.CLOSE_CURLY_BRACE);
818 
819             throw new NoSuchOrganizationException(msg.toString());
820         }
821         else {
822             return list.get(0);
823         }
824     }
825 
826     public Organization findByLocations_Last(long companyId,
827         OrderByComparator obc)
828         throws NoSuchOrganizationException, SystemException {
829         int count = countByLocations(companyId);
830 
831         List<Organization> list = findByLocations(companyId, count - 1, count,
832                 obc);
833 
834         if (list.isEmpty()) {
835             StringBuilder msg = new StringBuilder();
836 
837             msg.append("No Organization exists with the key {");
838 
839             msg.append("companyId=" + companyId);
840 
841             msg.append(StringPool.CLOSE_CURLY_BRACE);
842 
843             throw new NoSuchOrganizationException(msg.toString());
844         }
845         else {
846             return list.get(0);
847         }
848     }
849 
850     public Organization[] findByLocations_PrevAndNext(long organizationId,
851         long companyId, OrderByComparator obc)
852         throws NoSuchOrganizationException, SystemException {
853         Organization organization = findByPrimaryKey(organizationId);
854 
855         int count = countByLocations(companyId);
856 
857         Session session = null;
858 
859         try {
860             session = openSession();
861 
862             StringBuilder query = new StringBuilder();
863 
864             query.append("FROM com.liferay.portal.model.Organization WHERE ");
865 
866             query.append("companyId = ?");
867 
868             query.append(" AND parentOrganizationId != 0 ");
869 
870             if (obc != null) {
871                 query.append("ORDER BY ");
872                 query.append(obc.getOrderBy());
873             }
874 
875             else {
876                 query.append("ORDER BY ");
877 
878                 query.append("name ASC");
879             }
880 
881             Query q = session.createQuery(query.toString());
882 
883             QueryPos qPos = QueryPos.getInstance(q);
884 
885             qPos.add(companyId);
886 
887             Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
888                     organization);
889 
890             Organization[] array = new OrganizationImpl[3];
891 
892             array[0] = (Organization)objArray[0];
893             array[1] = (Organization)objArray[1];
894             array[2] = (Organization)objArray[2];
895 
896             return array;
897         }
898         catch (Exception e) {
899             throw processException(e);
900         }
901         finally {
902             closeSession(session);
903         }
904     }
905 
906     public List<Organization> findByC_P(long companyId,
907         long parentOrganizationId) throws SystemException {
908         Object[] finderArgs = new Object[] {
909                 new Long(companyId), new Long(parentOrganizationId)
910             };
911 
912         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_C_P,
913                 finderArgs, this);
914 
915         if (list == null) {
916             Session session = null;
917 
918             try {
919                 session = openSession();
920 
921                 StringBuilder query = new StringBuilder();
922 
923                 query.append(
924                     "FROM com.liferay.portal.model.Organization WHERE ");
925 
926                 query.append("companyId = ?");
927 
928                 query.append(" AND ");
929 
930                 query.append("parentOrganizationId = ?");
931 
932                 query.append(" ");
933 
934                 query.append("ORDER BY ");
935 
936                 query.append("name ASC");
937 
938                 Query q = session.createQuery(query.toString());
939 
940                 QueryPos qPos = QueryPos.getInstance(q);
941 
942                 qPos.add(companyId);
943 
944                 qPos.add(parentOrganizationId);
945 
946                 list = q.list();
947             }
948             catch (Exception e) {
949                 throw processException(e);
950             }
951             finally {
952                 if (list == null) {
953                     list = new ArrayList<Organization>();
954                 }
955 
956                 cacheResult(list);
957 
958                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_C_P, finderArgs,
959                     list);
960 
961                 closeSession(session);
962             }
963         }
964 
965         return list;
966     }
967 
968     public List<Organization> findByC_P(long companyId,
969         long parentOrganizationId, int start, int end)
970         throws SystemException {
971         return findByC_P(companyId, parentOrganizationId, start, end, null);
972     }
973 
974     public List<Organization> findByC_P(long companyId,
975         long parentOrganizationId, int start, int end, OrderByComparator obc)
976         throws SystemException {
977         Object[] finderArgs = new Object[] {
978                 new Long(companyId), new Long(parentOrganizationId),
979                 
980                 String.valueOf(start), String.valueOf(end), String.valueOf(obc)
981             };
982 
983         List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_OBC_C_P,
984                 finderArgs, this);
985 
986         if (list == null) {
987             Session session = null;
988 
989             try {
990                 session = openSession();
991 
992                 StringBuilder query = new StringBuilder();
993 
994                 query.append(
995                     "FROM com.liferay.portal.model.Organization WHERE ");
996 
997                 query.append("companyId = ?");
998 
999                 query.append(" AND ");
1000
1001                query.append("parentOrganizationId = ?");
1002
1003                query.append(" ");
1004
1005                if (obc != null) {
1006                    query.append("ORDER BY ");
1007                    query.append(obc.getOrderBy());
1008                }
1009
1010                else {
1011                    query.append("ORDER BY ");
1012
1013                    query.append("name ASC");
1014                }
1015
1016                Query q = session.createQuery(query.toString());
1017
1018                QueryPos qPos = QueryPos.getInstance(q);
1019
1020                qPos.add(companyId);
1021
1022                qPos.add(parentOrganizationId);
1023
1024                list = (List<Organization>)QueryUtil.list(q, getDialect(),
1025                        start, end);
1026            }
1027            catch (Exception e) {
1028                throw processException(e);
1029            }
1030            finally {
1031                if (list == null) {
1032                    list = new ArrayList<Organization>();
1033                }
1034
1035                cacheResult(list);
1036
1037                FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_OBC_C_P,
1038                    finderArgs, list);
1039
1040                closeSession(session);
1041            }
1042        }
1043
1044        return list;
1045    }
1046
1047    public Organization findByC_P_First(long companyId,
1048        long parentOrganizationId, OrderByComparator obc)
1049        throws NoSuchOrganizationException, SystemException {
1050        List<Organization> list = findByC_P(companyId, parentOrganizationId, 0,
1051                1, obc);
1052
1053        if (list.isEmpty()) {
1054            StringBuilder msg = new StringBuilder();
1055
1056            msg.append("No Organization exists with the key {");
1057
1058            msg.append("companyId=" + companyId);
1059
1060            msg.append(", ");
1061            msg.append("parentOrganizationId=" + parentOrganizationId);
1062
1063            msg.append(StringPool.CLOSE_CURLY_BRACE);
1064
1065            throw new NoSuchOrganizationException(msg.toString());
1066        }
1067        else {
1068            return list.get(0);
1069        }
1070    }
1071
1072    public Organization findByC_P_Last(long companyId,
1073        long parentOrganizationId, OrderByComparator obc)
1074        throws NoSuchOrganizationException, SystemException {
1075        int count = countByC_P(companyId, parentOrganizationId);
1076
1077        List<Organization> list = findByC_P(companyId, parentOrganizationId,
1078                count - 1, count, obc);
1079
1080        if (list.isEmpty()) {
1081            StringBuilder msg = new StringBuilder();
1082
1083            msg.append("No Organization exists with the key {");
1084
1085            msg.append("companyId=" + companyId);
1086
1087            msg.append(", ");
1088            msg.append("parentOrganizationId=" + parentOrganizationId);
1089
1090            msg.append(StringPool.CLOSE_CURLY_BRACE);
1091
1092            throw new NoSuchOrganizationException(msg.toString());
1093        }
1094        else {
1095            return list.get(0);
1096        }
1097    }
1098
1099    public Organization[] findByC_P_PrevAndNext(long organizationId,
1100        long companyId, long parentOrganizationId, OrderByComparator obc)
1101        throws NoSuchOrganizationException, SystemException {
1102        Organization organization = findByPrimaryKey(organizationId);
1103
1104        int count = countByC_P(companyId, parentOrganizationId);
1105
1106        Session session = null;
1107
1108        try {
1109            session = openSession();
1110
1111            StringBuilder query = new StringBuilder();
1112
1113            query.append("FROM com.liferay.portal.model.Organization WHERE ");
1114
1115            query.append("companyId = ?");
1116
1117            query.append(" AND ");
1118
1119            query.append("parentOrganizationId = ?");
1120
1121            query.append(" ");
1122
1123            if (obc != null) {
1124                query.append("ORDER BY ");
1125                query.append(obc.getOrderBy());
1126            }
1127
1128            else {
1129                query.append("ORDER BY ");
1130
1131                query.append("name ASC");
1132            }
1133
1134            Query q = session.createQuery(query.toString());
1135
1136            QueryPos qPos = QueryPos.getInstance(q);
1137
1138            qPos.add(companyId);
1139
1140            qPos.add(parentOrganizationId);
1141
1142            Object[] objArray = QueryUtil.getPrevAndNext(q, count, obc,
1143                    organization);
1144
1145            Organization[] array = new OrganizationImpl[3];
1146
1147            array[0] = (Organization)objArray[0];
1148            array[1] = (Organization)objArray[1];
1149            array[2] = (Organization)objArray[2];
1150
1151            return array;
1152        }
1153        catch (Exception e) {
1154            throw processException(e);
1155        }
1156        finally {
1157            closeSession(session);
1158        }
1159    }
1160
1161    public Organization findByC_N(long companyId, String name)
1162        throws NoSuchOrganizationException, SystemException {
1163        Organization organization = fetchByC_N(companyId, name);
1164
1165        if (organization == null) {
1166            StringBuilder msg = new StringBuilder();
1167
1168            msg.append("No Organization exists with the key {");
1169
1170            msg.append("companyId=" + companyId);
1171
1172            msg.append(", ");
1173            msg.append("name=" + name);
1174
1175            msg.append(StringPool.CLOSE_CURLY_BRACE);
1176
1177            if (_log.isWarnEnabled()) {
1178                _log.warn(msg.toString());
1179            }
1180
1181            throw new NoSuchOrganizationException(msg.toString());
1182        }
1183
1184        return organization;
1185    }
1186
1187    public Organization fetchByC_N(long companyId, String name)
1188        throws SystemException {
1189        return fetchByC_N(companyId, name, true);
1190    }
1191
1192    public Organization fetchByC_N(long companyId, String name,
1193        boolean retrieveFromCache) throws SystemException {
1194        Object[] finderArgs = new Object[] { new Long(companyId), name };
1195
1196        Object result = null;
1197
1198        if (retrieveFromCache) {
1199            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_C_N,
1200                    finderArgs, this);
1201        }
1202
1203        if (result == null) {
1204            Session session = null;
1205
1206            try {
1207                session = openSession();
1208
1209                StringBuilder query = new StringBuilder();
1210
1211                query.append(
1212                    "FROM com.liferay.portal.model.Organization WHERE ");
1213
1214                query.append("companyId = ?");
1215
1216                query.append(" AND ");
1217
1218                if (name == null) {
1219                    query.append("name IS NULL");
1220                }
1221                else {
1222                    query.append("name = ?");
1223                }
1224
1225                query.append(" ");
1226
1227                query.append("ORDER BY ");
1228
1229                query.append("name ASC");
1230
1231                Query q = session.createQuery(query.toString());
1232
1233                QueryPos qPos = QueryPos.getInstance(q);
1234
1235                qPos.add(companyId);
1236
1237                if (name != null) {
1238                    qPos.add(name);
1239                }
1240
1241                List<Organization> list = q.list();
1242
1243                result = list;
1244
1245                Organization organization = null;
1246
1247                if (list.isEmpty()) {
1248                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
1249                        finderArgs, list);
1250                }
1251                else {
1252                    organization = list.get(0);
1253
1254                    cacheResult(organization);
1255
1256                    if ((organization.getCompanyId() != companyId) ||
1257                            (organization.getName() == null) ||
1258                            !organization.getName().equals(name)) {
1259                        FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
1260                            finderArgs, list);
1261                    }
1262                }
1263
1264                return organization;
1265            }
1266            catch (Exception e) {
1267                throw processException(e);
1268            }
1269            finally {
1270                if (result == null) {
1271                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_C_N,
1272                        finderArgs, new ArrayList<Organization>());
1273                }
1274
1275                closeSession(session);
1276            }
1277        }
1278        else {
1279            if (result instanceof List) {
1280                return null;
1281            }
1282            else {
1283                return (Organization)result;
1284            }
1285        }
1286    }
1287
1288    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery)
1289        throws SystemException {
1290        Session session = null;
1291
1292        try {
1293            session = openSession();
1294
1295            dynamicQuery.compile(session);
1296
1297            return dynamicQuery.list();
1298        }
1299        catch (Exception e) {
1300            throw processException(e);
1301        }
1302        finally {
1303            closeSession(session);
1304        }
1305    }
1306
1307    public List<Object> findWithDynamicQuery(DynamicQuery dynamicQuery,
1308        int start, int end) throws SystemException {
1309        Session session = null;
1310
1311        try {
1312            session = openSession();
1313
1314            dynamicQuery.setLimit(start, end);
1315
1316            dynamicQuery.compile(session);
1317
1318            return dynamicQuery.list();
1319        }
1320        catch (Exception e) {
1321            throw processException(e);
1322        }
1323        finally {
1324            closeSession(session);
1325        }
1326    }
1327
1328    public List<Organization> findAll() throws SystemException {
1329        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
1330    }
1331
1332    public List<Organization> findAll(int start, int end)
1333        throws SystemException {
1334        return findAll(start, end, null);
1335    }
1336
1337    public List<Organization> findAll(int start, int end, OrderByComparator obc)
1338        throws SystemException {
1339        Object[] finderArgs = new Object[] {
1340                String.valueOf(start), String.valueOf(end), String.valueOf(obc)
1341            };
1342
1343        List<Organization> list = (List<Organization>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
1344                finderArgs, this);
1345
1346        if (list == null) {
1347            Session session = null;
1348
1349            try {
1350                session = openSession();
1351
1352                StringBuilder query = new StringBuilder();
1353
1354                query.append("FROM com.liferay.portal.model.Organization ");
1355
1356                if (obc != null) {
1357                    query.append("ORDER BY ");
1358                    query.append(obc.getOrderBy());
1359                }
1360
1361                else {
1362                    query.append("ORDER BY ");
1363
1364                    query.append("name ASC");
1365                }
1366
1367                Query q = session.createQuery(query.toString());
1368
1369                if (obc == null) {
1370                    list = (List<Organization>)QueryUtil.list(q, getDialect(),
1371                            start, end, false);
1372
1373                    Collections.sort(list);
1374                }
1375                else {
1376                    list = (List<Organization>)QueryUtil.list(q, getDialect(),
1377                            start, end);
1378                }
1379            }
1380            catch (Exception e) {
1381                throw processException(e);
1382            }
1383            finally {
1384                if (list == null) {
1385                    list = new ArrayList<Organization>();
1386                }
1387
1388                cacheResult(list);
1389
1390                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
1391
1392                closeSession(session);
1393            }
1394        }
1395
1396        return list;
1397    }
1398
1399    public void removeByCompanyId(long companyId) throws SystemException {
1400        for (Organization organization : findByCompanyId(companyId)) {
1401            remove(organization);
1402        }
1403    }
1404
1405    public void removeByLocations(long companyId) throws SystemException {
1406        for (Organization organization : findByLocations(companyId)) {
1407            remove(organization);
1408        }
1409    }
1410
1411    public void removeByC_P(long companyId, long parentOrganizationId)
1412        throws SystemException {
1413        for (Organization organization : findByC_P(companyId,
1414                parentOrganizationId)) {
1415            remove(organization);
1416        }
1417    }
1418
1419    public void removeByC_N(long companyId, String name)
1420        throws NoSuchOrganizationException, SystemException {
1421        Organization organization = findByC_N(companyId, name);
1422
1423        remove(organization);
1424    }
1425
1426    public void removeAll() throws SystemException {
1427        for (Organization organization : findAll()) {
1428            remove(organization);
1429        }
1430    }
1431
1432    public int countByCompanyId(long companyId) throws SystemException {
1433        Object[] finderArgs = new Object[] { new Long(companyId) };
1434
1435        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_COMPANYID,
1436                finderArgs, this);
1437
1438        if (count == null) {
1439            Session session = null;
1440
1441            try {
1442                session = openSession();
1443
1444                StringBuilder query = new StringBuilder();
1445
1446                query.append("SELECT COUNT(*) ");
1447                query.append(
1448                    "FROM com.liferay.portal.model.Organization WHERE ");
1449
1450                query.append("companyId = ?");
1451
1452                query.append(" ");
1453
1454                Query q = session.createQuery(query.toString());
1455
1456                QueryPos qPos = QueryPos.getInstance(q);
1457
1458                qPos.add(companyId);
1459
1460                count = (Long)q.uniqueResult();
1461            }
1462            catch (Exception e) {
1463                throw processException(e);
1464            }
1465            finally {
1466                if (count == null) {
1467                    count = Long.valueOf(0);
1468                }
1469
1470                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_COMPANYID,
1471                    finderArgs, count);
1472
1473                closeSession(session);
1474            }
1475        }
1476
1477        return count.intValue();
1478    }
1479
1480    public int countByLocations(long companyId) throws SystemException {
1481        Object[] finderArgs = new Object[] { new Long(companyId) };
1482
1483        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_LOCATIONS,
1484                finderArgs, this);
1485
1486        if (count == null) {
1487            Session session = null;
1488
1489            try {
1490                session = openSession();
1491
1492                StringBuilder query = new StringBuilder();
1493
1494                query.append("SELECT COUNT(*) ");
1495                query.append(
1496                    "FROM com.liferay.portal.model.Organization WHERE ");
1497
1498                query.append("companyId = ?");
1499
1500                query.append(" AND parentOrganizationId != 0 ");
1501
1502                Query q = session.createQuery(query.toString());
1503
1504                QueryPos qPos = QueryPos.getInstance(q);
1505
1506                qPos.add(companyId);
1507
1508                count = (Long)q.uniqueResult();
1509            }
1510            catch (Exception e) {
1511                throw processException(e);
1512            }
1513            finally {
1514                if (count == null) {
1515                    count = Long.valueOf(0);
1516                }
1517
1518                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_LOCATIONS,
1519                    finderArgs, count);
1520
1521                closeSession(session);
1522            }
1523        }
1524
1525        return count.intValue();
1526    }
1527
1528    public int countByC_P(long companyId, long parentOrganizationId)
1529        throws SystemException {
1530        Object[] finderArgs = new Object[] {
1531                new Long(companyId), new Long(parentOrganizationId)
1532            };
1533
1534        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_P,
1535                finderArgs, this);
1536
1537        if (count == null) {
1538            Session session = null;
1539
1540            try {
1541                session = openSession();
1542
1543                StringBuilder query = new StringBuilder();
1544
1545                query.append("SELECT COUNT(*) ");
1546                query.append(
1547                    "FROM com.liferay.portal.model.Organization WHERE ");
1548
1549                query.append("companyId = ?");
1550
1551                query.append(" AND ");
1552
1553                query.append("parentOrganizationId = ?");
1554
1555                query.append(" ");
1556
1557                Query q = session.createQuery(query.toString());
1558
1559                QueryPos qPos = QueryPos.getInstance(q);
1560
1561                qPos.add(companyId);
1562
1563                qPos.add(parentOrganizationId);
1564
1565                count = (Long)q.uniqueResult();
1566            }
1567            catch (Exception e) {
1568                throw processException(e);
1569            }
1570            finally {
1571                if (count == null) {
1572                    count = Long.valueOf(0);
1573                }
1574
1575                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_P, finderArgs,
1576                    count);
1577
1578                closeSession(session);
1579            }
1580        }
1581
1582        return count.intValue();
1583    }
1584
1585    public int countByC_N(long companyId, String name)
1586        throws SystemException {
1587        Object[] finderArgs = new Object[] { new Long(companyId), name };
1588
1589        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_N,
1590                finderArgs, this);
1591
1592        if (count == null) {
1593            Session session = null;
1594
1595            try {
1596                session = openSession();
1597
1598                StringBuilder query = new StringBuilder();
1599
1600                query.append("SELECT COUNT(*) ");
1601                query.append(
1602                    "FROM com.liferay.portal.model.Organization WHERE ");
1603
1604                query.append("companyId = ?");
1605
1606                query.append(" AND ");
1607
1608                if (name == null) {
1609                    query.append("name IS NULL");
1610                }
1611                else {
1612                    query.append("name = ?");
1613                }
1614
1615                query.append(" ");
1616
1617                Query q = session.createQuery(query.toString());
1618
1619                QueryPos qPos = QueryPos.getInstance(q);
1620
1621                qPos.add(companyId);
1622
1623                if (name != null) {
1624                    qPos.add(name);
1625                }
1626
1627                count = (Long)q.uniqueResult();
1628            }
1629            catch (Exception e) {
1630                throw processException(e);
1631            }
1632            finally {
1633                if (count == null) {
1634                    count = Long.valueOf(0);
1635                }
1636
1637                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_N, finderArgs,
1638                    count);
1639
1640                closeSession(session);
1641            }
1642        }
1643
1644        return count.intValue();
1645    }
1646
1647    public int countAll() throws SystemException {
1648        Object[] finderArgs = new Object[0];
1649
1650        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1651                finderArgs, this);
1652
1653        if (count == null) {
1654            Session session = null;
1655
1656            try {
1657                session = openSession();
1658
1659                Query q = session.createQuery(
1660                        "SELECT COUNT(*) FROM com.liferay.portal.model.Organization");
1661
1662                count = (Long)q.uniqueResult();
1663            }
1664            catch (Exception e) {
1665                throw processException(e);
1666            }
1667            finally {
1668                if (count == null) {
1669                    count = Long.valueOf(0);
1670                }
1671
1672                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1673                    count);
1674
1675                closeSession(session);
1676            }
1677        }
1678
1679        return count.intValue();
1680    }
1681
1682    public List<com.liferay.portal.model.Group> getGroups(long pk)
1683        throws SystemException {
1684        return getGroups(pk, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
1685    }
1686
1687    public List<com.liferay.portal.model.Group> getGroups(long pk, int start,
1688        int end) throws SystemException {
1689        return getGroups(pk, start, end, null);
1690    }
1691
1692    public static final FinderPath FINDER_PATH_GET_GROUPS = new FinderPath(com.liferay.portal.model.impl.GroupModelImpl.ENTITY_CACHE_ENABLED,
1693            OrganizationModelImpl.FINDER_CACHE_ENABLED_GROUPS_ORGS,
1694            "Groups_Orgs", "getGroups",
1695            new String[] {
1696                Long.class.getName(), "java.lang.Integer", "java.lang.Integer",
1697                "com.liferay.portal.kernel.util.OrderByComparator"
1698            });
1699
1700    public List<com.liferay.portal.model.Group> getGroups(long pk, int start,
1701        int end, OrderByComparator obc) throws SystemException {
1702        Object[] finderArgs = new Object[] {
1703                new Long(pk), String.valueOf(start), String.valueOf(end),
1704                String.valueOf(obc)
1705            };
1706
1707        List<com.liferay.portal.model.Group> list = (List<com.liferay.portal.model.Group>)FinderCacheUtil.getResult(FINDER_PATH_GET_GROUPS,
1708                finderArgs, this);
1709
1710        if (list == null) {
1711            Session session = null;
1712
1713            try {
1714                session = openSession();
1715
1716                StringBuilder sb = new StringBuilder();
1717
1718                sb.append(_SQL_GETGROUPS);
1719
1720                if (obc != null) {
1721                    sb.append("ORDER BY ");
1722                    sb.append(obc.getOrderBy());
1723                }
1724
1725                else {
1726                    sb.append("ORDER BY ");
1727
1728                    sb.append("Group_.name ASC");
1729                }
1730
1731                String sql = sb.toString();
1732
1733                SQLQuery q = session.createSQLQuery(sql);
1734
1735                q.addEntity("Group_",
1736                    com.liferay.portal.model.impl.GroupImpl.class);
1737
1738                QueryPos qPos = QueryPos.getInstance(q);
1739
1740                qPos.add(pk);
1741
1742                list = (List<com.liferay.portal.model.Group>)QueryUtil.list(q,
1743                        getDialect(), start, end);
1744            }
1745            catch (Exception e) {
1746                throw processException(e);
1747            }
1748            finally {
1749                if (list == null) {
1750                    list = new ArrayList<com.liferay.portal.model.Group>();
1751                }
1752
1753                groupPersistence.cacheResult(list);
1754
1755                FinderCacheUtil.putResult(FINDER_PATH_GET_GROUPS, finderArgs,
1756                    list);
1757
1758                closeSession(session);
1759            }
1760        }
1761
1762        return list;
1763    }
1764
1765    public static final FinderPath FINDER_PATH_GET_GROUPS_SIZE = new FinderPath(com.liferay.portal.model.impl.GroupModelImpl.ENTITY_CACHE_ENABLED,
1766            OrganizationModelImpl.FINDER_CACHE_ENABLED_GROUPS_ORGS,
1767            "Groups_Orgs", "getGroupsSize",
1768            new String[] { Long.class.getName() });
1769
1770    public int getGroupsSize(long pk) throws SystemException {
1771        Object[] finderArgs = new Object[] { new Long(pk) };
1772
1773        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_GET_GROUPS_SIZE,
1774                finderArgs, this);
1775
1776        if (count == null) {
1777            Session session = null;
1778
1779            try {
1780                session = openSession();
1781
1782                SQLQuery q = session.createSQLQuery(_SQL_GETGROUPSSIZE);
1783
1784                q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
1785
1786                QueryPos qPos = QueryPos.getInstance(q);
1787
1788                qPos.add(pk);
1789
1790                count = (Long)q.uniqueResult();
1791            }
1792            catch (Exception e) {
1793                throw processException(e);
1794            }
1795            finally {
1796                if (count == null) {
1797                    count = Long.valueOf(0);
1798                }
1799
1800                FinderCacheUtil.putResult(FINDER_PATH_GET_GROUPS_SIZE,
1801                    finderArgs, count);
1802
1803                closeSession(session);
1804            }
1805        }
1806
1807        return count.intValue();
1808    }
1809
1810    public static final FinderPath FINDER_PATH_CONTAINS_GROUP = new FinderPath(com.liferay.portal.model.impl.GroupModelImpl.ENTITY_CACHE_ENABLED,
1811            OrganizationModelImpl.FINDER_CACHE_ENABLED_GROUPS_ORGS,
1812            "Groups_Orgs", "containsGroup",
1813            new String[] { Long.class.getName(), Long.class.getName() });
1814
1815    public boolean containsGroup(long pk, long groupPK)
1816        throws SystemException {
1817        Object[] finderArgs = new Object[] { new Long(pk), new Long(groupPK) };
1818
1819        Boolean value = (Boolean)FinderCacheUtil.getResult(FINDER_PATH_CONTAINS_GROUP,
1820                finderArgs, this);
1821
1822        if (value == null) {
1823            try {
1824                value = Boolean.valueOf(containsGroup.contains(pk, groupPK));
1825            }
1826            catch (Exception e) {
1827                throw processException(e);
1828            }
1829            finally {
1830                if (value == null) {
1831                    value = Boolean.FALSE;
1832                }
1833
1834                FinderCacheUtil.putResult(FINDER_PATH_CONTAINS_GROUP,
1835                    finderArgs, value);
1836            }
1837        }
1838
1839        return value.booleanValue();
1840    }
1841
1842    public boolean containsGroups(long pk) throws SystemException {
1843        if (getGroupsSize(pk) > 0) {
1844            return true;
1845        }
1846        else {
1847            return false;
1848        }
1849    }
1850
1851    public void addGroup(long pk, long groupPK) throws SystemException {
1852        try {
1853            addGroup.add(pk, groupPK);
1854        }
1855        catch (Exception e) {
1856            throw processException(e);
1857        }
1858        finally {
1859            FinderCacheUtil.clearCache("Groups_Orgs");
1860        }
1861    }
1862
1863    public void addGroup(long pk, com.liferay.portal.model.Group group)
1864        throws SystemException {
1865        try {
1866            addGroup.add(pk, group.getPrimaryKey());
1867        }
1868        catch (Exception e) {
1869            throw processException(e);
1870        }
1871        finally {
1872            FinderCacheUtil.clearCache("Groups_Orgs");
1873        }
1874    }
1875
1876    public void addGroups(long pk, long[] groupPKs) throws SystemException {
1877        try {
1878            for (long groupPK : groupPKs) {
1879                addGroup.add(pk, groupPK);
1880            }
1881        }
1882        catch (Exception e) {
1883            throw processException(e);
1884        }
1885        finally {
1886            FinderCacheUtil.clearCache("Groups_Orgs");
1887        }
1888    }
1889
1890    public void addGroups(long pk, List<com.liferay.portal.model.Group> groups)
1891        throws SystemException {
1892        try {
1893            for (com.liferay.portal.model.Group group : groups) {
1894                addGroup.add(pk, group.getPrimaryKey());
1895            }
1896        }
1897        catch (Exception e) {
1898            throw processException(e);
1899        }
1900        finally {
1901            FinderCacheUtil.clearCache("Groups_Orgs");
1902        }
1903    }
1904
1905    public void clearGroups(long pk) throws SystemException {
1906        try {
1907            clearGroups.clear(pk);
1908        }
1909        catch (Exception e) {
1910            throw processException(e);
1911        }
1912        finally {
1913            FinderCacheUtil.clearCache("Groups_Orgs");
1914        }
1915    }
1916
1917    public void removeGroup(long pk, long groupPK) throws SystemException {
1918        try {
1919            removeGroup.remove(pk, groupPK);
1920        }
1921        catch (Exception e) {
1922            throw processException(e);
1923        }
1924        finally {
1925            FinderCacheUtil.clearCache("Groups_Orgs");
1926        }
1927    }
1928
1929    public void removeGroup(long pk, com.liferay.portal.model.Group group)
1930        throws SystemException {
1931        try {
1932            removeGroup.remove(pk, group.getPrimaryKey());
1933        }
1934        catch (Exception e) {
1935            throw processException(e);
1936        }
1937        finally {
1938            FinderCacheUtil.clearCache("Groups_Orgs");
1939        }
1940    }
1941
1942    public void removeGroups(long pk, long[] groupPKs)
1943        throws SystemException {
1944        try {
1945            for (long groupPK : groupPKs) {
1946                removeGroup.remove(pk, groupPK);
1947            }
1948        }
1949        catch (Exception e) {
1950            throw processException(e);
1951        }
1952        finally {
1953            FinderCacheUtil.clearCache("Groups_Orgs");
1954        }
1955    }
1956
1957    public void removeGroups(long pk,
1958        List<com.liferay.portal.model.Group> groups) throws SystemException {
1959        try {
1960            for (com.liferay.portal.model.Group group : groups) {
1961                removeGroup.remove(pk, group.getPrimaryKey());
1962            }
1963        }
1964        catch (Exception e) {
1965            throw processException(e);
1966        }
1967        finally {
1968            FinderCacheUtil.clearCache("Groups_Orgs");
1969        }
1970    }
1971
1972    public void setGroups(long pk, long[] groupPKs) throws SystemException {
1973        try {
1974            clearGroups.clear(pk);
1975
1976            for (long groupPK : groupPKs) {
1977                addGroup.add(pk, groupPK);
1978            }
1979        }
1980        catch (Exception e) {
1981            throw processException(e);
1982        }
1983        finally {
1984            FinderCacheUtil.clearCache("Groups_Orgs");
1985        }
1986    }
1987
1988    public void setGroups(long pk, List<com.liferay.portal.model.Group> groups)
1989        throws SystemException {
1990        try {
1991            clearGroups.clear(pk);
1992
1993            for (com.liferay.portal.model.Group group : groups) {
1994                addGroup.add(pk, group.getPrimaryKey());
1995            }
1996        }
1997        catch (Exception e) {
1998            throw processException(e);
1999        }
2000        finally {
2001            FinderCacheUtil.clearCache("Groups_Orgs");
2002        }
2003    }
2004
2005    public List<com.liferay.portal.model.User> getUsers(long pk)
2006        throws SystemException {
2007        return getUsers(pk, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
2008    }
2009
2010    public List<com.liferay.portal.model.User> getUsers(long pk, int start,
2011        int end) throws SystemException {
2012        return getUsers(pk, start, end, null);
2013    }
2014
2015    public static final FinderPath FINDER_PATH_GET_USERS = new FinderPath(com.liferay.portal.model.impl.UserModelImpl.ENTITY_CACHE_ENABLED,
2016            OrganizationModelImpl.FINDER_CACHE_ENABLED_USERS_ORGS,
2017            "Users_Orgs", "getUsers",
2018            new String[] {
2019                Long.class.getName(), "java.lang.Integer", "java.lang.Integer",
2020                "com.liferay.portal.kernel.util.OrderByComparator"
2021            });
2022
2023    public List<com.liferay.portal.model.User> getUsers(long pk, int start,
2024        int end, OrderByComparator obc) throws SystemException {
2025        Object[] finderArgs = new Object[] {
2026                new Long(pk), String.valueOf(start), String.valueOf(end),
2027                String.valueOf(obc)
2028            };
2029
2030        List<com.liferay.portal.model.User> list = (List<com.liferay.portal.model.User>)FinderCacheUtil.getResult(FINDER_PATH_GET_USERS,
2031                finderArgs, this);
2032
2033        if (list == null) {
2034            Session session = null;
2035
2036            try {
2037                session = openSession();
2038
2039                StringBuilder sb = new StringBuilder();
2040
2041                sb.append(_SQL_GETUSERS);
2042
2043                if (obc != null) {
2044                    sb.append("ORDER BY ");
2045                    sb.append(obc.getOrderBy());
2046                }
2047
2048                String sql = sb.toString();
2049
2050                SQLQuery q = session.createSQLQuery(sql);
2051
2052                q.addEntity("User_",
2053                    com.liferay.portal.model.impl.UserImpl.class);
2054
2055                QueryPos qPos = QueryPos.getInstance(q);
2056
2057                qPos.add(pk);
2058
2059                list = (List<com.liferay.portal.model.User>)QueryUtil.list(q,
2060                        getDialect(), start, end);
2061            }
2062            catch (Exception e) {
2063                throw processException(e);
2064            }
2065            finally {
2066                if (list == null) {
2067                    list = new ArrayList<com.liferay.portal.model.User>();
2068                }
2069
2070                userPersistence.cacheResult(list);
2071
2072                FinderCacheUtil.putResult(FINDER_PATH_GET_USERS, finderArgs,
2073                    list);
2074
2075                closeSession(session);
2076            }
2077        }
2078
2079        return list;
2080    }
2081
2082    public static final FinderPath FINDER_PATH_GET_USERS_SIZE = new FinderPath(com.liferay.portal.model.impl.UserModelImpl.ENTITY_CACHE_ENABLED,
2083            OrganizationModelImpl.FINDER_CACHE_ENABLED_USERS_ORGS,
2084            "Users_Orgs", "getUsersSize", new String[] { Long.class.getName() });
2085
2086    public int getUsersSize(long pk) throws SystemException {
2087        Object[] finderArgs = new Object[] { new Long(pk) };
2088
2089        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_GET_USERS_SIZE,
2090                finderArgs, this);
2091
2092        if (count == null) {
2093            Session session = null;
2094
2095            try {
2096                session = openSession();
2097
2098                SQLQuery q = session.createSQLQuery(_SQL_GETUSERSSIZE);
2099
2100                q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
2101
2102                QueryPos qPos = QueryPos.getInstance(q);
2103
2104                qPos.add(pk);
2105
2106                count = (Long)q.uniqueResult();
2107            }
2108            catch (Exception e) {
2109                throw processException(e);
2110            }
2111            finally {
2112                if (count == null) {
2113                    count = Long.valueOf(0);
2114                }
2115
2116                FinderCacheUtil.putResult(FINDER_PATH_GET_USERS_SIZE,
2117                    finderArgs, count);
2118
2119                closeSession(session);
2120            }
2121        }
2122
2123        return count.intValue();
2124    }
2125
2126    public static final FinderPath FINDER_PATH_CONTAINS_USER = new FinderPath(com.liferay.portal.model.impl.UserModelImpl.ENTITY_CACHE_ENABLED,
2127            OrganizationModelImpl.FINDER_CACHE_ENABLED_USERS_ORGS,
2128            "Users_Orgs", "containsUser",
2129            new String[] { Long.class.getName(), Long.class.getName() });
2130
2131    public boolean containsUser(long pk, long userPK) throws SystemException {
2132        Object[] finderArgs = new Object[] { new Long(pk), new Long(userPK) };
2133
2134        Boolean value = (Boolean)FinderCacheUtil.getResult(FINDER_PATH_CONTAINS_USER,
2135                finderArgs, this);
2136
2137        if (value == null) {
2138            try {
2139                value = Boolean.valueOf(containsUser.contains(pk, userPK));
2140            }
2141            catch (Exception e) {
2142                throw processException(e);
2143            }
2144            finally {
2145                if (value == null) {
2146                    value = Boolean.FALSE;
2147                }
2148
2149                FinderCacheUtil.putResult(FINDER_PATH_CONTAINS_USER,
2150                    finderArgs, value);
2151            }
2152        }
2153
2154        return value.booleanValue();
2155    }
2156
2157    public boolean containsUsers(long pk) throws SystemException {
2158        if (getUsersSize(pk) > 0) {
2159            return true;
2160        }
2161        else {
2162            return false;
2163        }
2164    }
2165
2166    public void addUser(long pk, long userPK) throws SystemException {
2167        try {
2168            addUser.add(pk, userPK);
2169        }
2170        catch (Exception e) {
2171            throw processException(e);
2172        }
2173        finally {
2174            FinderCacheUtil.clearCache("Users_Orgs");
2175        }
2176    }
2177
2178    public void addUser(long pk, com.liferay.portal.model.User user)
2179        throws SystemException {
2180        try {
2181            addUser.add(pk, user.getPrimaryKey());
2182        }
2183        catch (Exception e) {
2184            throw processException(e);
2185        }
2186        finally {
2187            FinderCacheUtil.clearCache("Users_Orgs");
2188        }
2189    }
2190
2191    public void addUsers(long pk, long[] userPKs) throws SystemException {
2192        try {
2193            for (long userPK : userPKs) {
2194                addUser.add(pk, userPK);
2195            }
2196        }
2197        catch (Exception e) {
2198            throw processException(e);
2199        }
2200        finally {
2201            FinderCacheUtil.clearCache("Users_Orgs");
2202        }
2203    }
2204
2205    public void addUsers(long pk, List<com.liferay.portal.model.User> users)
2206        throws SystemException {
2207        try {
2208            for (com.liferay.portal.model.User user : users) {
2209                addUser.add(pk, user.getPrimaryKey());
2210            }
2211        }
2212        catch (Exception e) {
2213            throw processException(e);
2214        }
2215        finally {
2216            FinderCacheUtil.clearCache("Users_Orgs");
2217        }
2218    }
2219
2220    public void clearUsers(long pk) throws SystemException {
2221        try {
2222            clearUsers.clear(pk);
2223        }
2224        catch (Exception e) {
2225            throw processException(e);
2226        }
2227        finally {
2228            FinderCacheUtil.clearCache("Users_Orgs");
2229        }
2230    }
2231
2232    public void removeUser(long pk, long userPK) throws SystemException {
2233        try {
2234            removeUser.remove(pk, userPK);
2235        }
2236        catch (Exception e) {
2237            throw processException(e);
2238        }
2239        finally {
2240            FinderCacheUtil.clearCache("Users_Orgs");
2241        }
2242    }
2243
2244    public void removeUser(long pk, com.liferay.portal.model.User user)
2245        throws SystemException {
2246        try {
2247            removeUser.remove(pk, user.getPrimaryKey());
2248        }
2249        catch (Exception e) {
2250            throw processException(e);
2251        }
2252        finally {
2253            FinderCacheUtil.clearCache("Users_Orgs");
2254        }
2255    }
2256
2257    public void removeUsers(long pk, long[] userPKs) throws SystemException {
2258        try {
2259            for (long userPK : userPKs) {
2260                removeUser.remove(pk, userPK);
2261            }
2262        }
2263        catch (Exception e) {
2264            throw processException(e);
2265        }
2266        finally {
2267            FinderCacheUtil.clearCache("Users_Orgs");
2268        }
2269    }
2270
2271    public void removeUsers(long pk, List<com.liferay.portal.model.User> users)
2272        throws SystemException {
2273        try {
2274            for (com.liferay.portal.model.User user : users) {
2275                removeUser.remove(pk, user.getPrimaryKey());
2276            }
2277        }
2278        catch (Exception e) {
2279            throw processException(e);
2280        }
2281        finally {
2282            FinderCacheUtil.clearCache("Users_Orgs");
2283        }
2284    }
2285
2286    public void setUsers(long pk, long[] userPKs) throws SystemException {
2287        try {
2288            clearUsers.clear(pk);
2289
2290            for (long userPK : userPKs) {
2291                addUser.add(pk, userPK);
2292            }
2293        }
2294        catch (Exception e) {
2295            throw processException(e);
2296        }
2297        finally {
2298            FinderCacheUtil.clearCache("Users_Orgs");
2299        }
2300    }
2301
2302    public void setUsers(long pk, List<com.liferay.portal.model.User> users)
2303        throws SystemException {
2304        try {
2305            clearUsers.clear(pk);
2306
2307            for (com.liferay.portal.model.User user : users) {
2308                addUser.add(pk, user.getPrimaryKey());
2309            }
2310        }
2311        catch (Exception e) {
2312            throw processException(e);
2313        }
2314        finally {
2315            FinderCacheUtil.clearCache("Users_Orgs");
2316        }
2317    }
2318
2319    public void rebuildTree(long companyId, boolean force)
2320        throws SystemException {
2321        if (force || (countOrphanTreeNodes(companyId) > 0)) {
2322            rebuildTree(companyId, 0, 1);
2323
2324            CacheRegistry.clear(OrganizationImpl.class.getName());
2325            EntityCacheUtil.clearCache(OrganizationImpl.class.getName());
2326            FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
2327            FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
2328        }
2329    }
2330
2331    protected long countOrphanTreeNodes(long companyId)
2332        throws SystemException {
2333        Session session = null;
2334
2335        try {
2336            session = openSession();
2337
2338            SQLQuery q = session.createSQLQuery(
2339                    "SELECT COUNT(*) AS COUNT_VALUE FROM Organization_ WHERE companyId = ? AND (leftOrganizationId = 0 OR leftOrganizationId IS NULL OR rightOrganizationId = 0 OR rightOrganizationId IS NULL)");
2340
2341            q.addScalar(COUNT_COLUMN_NAME, Type.LONG);
2342
2343            QueryPos qPos = QueryPos.getInstance(q);
2344
2345            qPos.add(companyId);
2346
2347            return (Long)q.uniqueResult();
2348        }
2349        catch (Exception e) {
2350            throw processException(e);
2351        }
2352        finally {
2353            closeSession(session);
2354        }
2355    }
2356
2357    protected void expandTree(Organization organization)
2358        throws SystemException {
2359        long companyId = organization.getCompanyId();
2360
2361        long lastRightOrganizationId = getLastRightOrganizationId(companyId,
2362                organization.getParentOrganizationId());
2363
2364        long leftOrganizationId = 2;
2365        long rightOrganizationId = 3;
2366
2367        if (lastRightOrganizationId > 0) {
2368            leftOrganizationId = lastRightOrganizationId + 1;
2369            rightOrganizationId = lastRightOrganizationId + 2;
2370
2371            expandTreeLeftOrganizationId.expand(companyId,
2372                lastRightOrganizationId);
2373            expandTreeRightOrganizationId.expand(companyId,
2374                lastRightOrganizationId);
2375
2376            CacheRegistry.clear(OrganizationImpl.class.getName());
2377            EntityCacheUtil.clearCache(OrganizationImpl.class.getName());
2378            FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
2379            FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
2380        }
2381
2382        organization.setLeftOrganizationId(leftOrganizationId);
2383        organization.setRightOrganizationId(rightOrganizationId);
2384    }
2385
2386    protected long getLastRightOrganizationId(long companyId,
2387        long parentOrganizationId) throws SystemException {
2388        Session session = null;
2389
2390        try {
2391            session = openSession();
2392
2393            SQLQuery q = session.createSQLQuery(
2394                    "SELECT rightOrganizationId FROM Organization_ WHERE (companyId = ?) AND (parentOrganizationId = ?) ORDER BY rightOrganizationId DESC");
2395
2396            q.addScalar("rightOrganizationId", Type.LONG);
2397
2398            QueryPos qPos = QueryPos.getInstance(q);
2399
2400            qPos.add(companyId);
2401            qPos.add(parentOrganizationId);
2402
2403            List<Long> list = (List<Long>)QueryUtil.list(q, getDialect(), 0, 1);
2404
2405            if (list.isEmpty()) {
2406                if (parentOrganizationId > 0) {
2407                    Organization parentOrganization = findByPrimaryKey(parentOrganizationId);
2408
2409                    return parentOrganization.getLeftOrganizationId();
2410                }
2411
2412                return 0;
2413            }
2414            else {
2415                return list.get(0);
2416            }
2417        }
2418        catch (Exception e) {
2419            throw processException(e);
2420        }
2421        finally {
2422            closeSession(session);
2423        }
2424    }
2425
2426    protected long rebuildTree(long companyId, long parentOrganizationId,
2427        long leftOrganizationId) throws SystemException {
2428        List<Long> organizationIds = null;
2429
2430        Session session = null;
2431
2432        try {
2433            session = openSession();
2434
2435            SQLQuery q = session.createSQLQuery(
2436                    "SELECT organizationId FROM Organization_ WHERE companyId = ? AND parentOrganizationId = ? ORDER BY organizationId ASC");
2437
2438            q.addScalar("organizationId", Type.LONG);
2439
2440            QueryPos qPos = QueryPos.getInstance(q);
2441
2442            qPos.add(companyId);
2443            qPos.add(parentOrganizationId);
2444
2445            organizationIds = q.list();
2446        }
2447        catch (Exception e) {
2448            throw processException(e);
2449        }
2450        finally {
2451            closeSession(session);
2452        }
2453
2454        long rightOrganizationId = leftOrganizationId + 1;
2455
2456        for (long organizationId : organizationIds) {
2457            rightOrganizationId = rebuildTree(companyId, organizationId,
2458                    rightOrganizationId);
2459        }
2460
2461        if (parentOrganizationId > 0) {
2462            updateTree.update(parentOrganizationId, leftOrganizationId,
2463                rightOrganizationId);
2464        }
2465
2466        return rightOrganizationId + 1;
2467    }
2468
2469    protected void shrinkTree(Organization organization) {
2470        long companyId = organization.getCompanyId();
2471
2472        long leftOrganizationId = organization.getLeftOrganizationId();
2473        long rightOrganizationId = organization.getRightOrganizationId();
2474
2475        long delta = (rightOrganizationId - leftOrganizationId) + 1;
2476
2477        shrinkTreeLeftOrganizationId.shrink(companyId, rightOrganizationId,
2478            delta);
2479        shrinkTreeRightOrganizationId.shrink(companyId, rightOrganizationId,
2480            delta);
2481
2482        CacheRegistry.clear(OrganizationImpl.class.getName());
2483        EntityCacheUtil.clearCache(OrganizationImpl.class.getName());
2484        FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
2485        FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
2486    }
2487
2488    public void afterPropertiesSet() {
2489        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
2490                    com.liferay.portal.util.PropsUtil.get(
2491                        "value.object.listener.com.liferay.portal.model.Organization")));
2492
2493        if (listenerClassNames.length > 0) {
2494            try {
2495                List<ModelListener<Organization>> listenersList = new ArrayList<ModelListener<Organization>>();
2496
2497                for (String listenerClassName : listenerClassNames) {
2498                    listenersList.add((ModelListener<Organization>)Class.forName(
2499                            listenerClassName).newInstance());
2500                }
2501
2502                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
2503            }
2504            catch (Exception e) {
2505                _log.error(e);
2506            }
2507        }
2508
2509        containsGroup = new ContainsGroup(this);
2510
2511        addGroup = new AddGroup(this);
2512        clearGroups = new ClearGroups(this);
2513        removeGroup = new RemoveGroup(this);
2514
2515        containsUser = new ContainsUser(this);
2516
2517        addUser = new AddUser(this);
2518        clearUsers = new ClearUsers(this);
2519        removeUser = new RemoveUser(this);
2520
2521        expandTreeLeftOrganizationId = new ExpandTreeLeftOrganizationId();
2522        expandTreeRightOrganizationId = new ExpandTreeRightOrganizationId();
2523        shrinkTreeLeftOrganizationId = new ShrinkTreeLeftOrganizationId();
2524        shrinkTreeRightOrganizationId = new ShrinkTreeRightOrganizationId();
2525        updateTree = new UpdateTree();
2526    }
2527
2528    @BeanReference(name = "com.liferay.portal.service.persistence.AccountPersistence.impl")
2529    protected com.liferay.portal.service.persistence.AccountPersistence accountPersistence;
2530    @BeanReference(name = "com.liferay.portal.service.persistence.AddressPersistence.impl")
2531    protected com.liferay.portal.service.persistence.AddressPersistence addressPersistence;
2532    @BeanReference(name = "com.liferay.portal.service.persistence.BrowserTrackerPersistence.impl")
2533    protected com.liferay.portal.service.persistence.BrowserTrackerPersistence browserTrackerPersistence;
2534    @BeanReference(name = "com.liferay.portal.service.persistence.ClassNamePersistence.impl")
2535    protected com.liferay.portal.service.persistence.ClassNamePersistence classNamePersistence;
2536    @BeanReference(name = "com.liferay.portal.service.persistence.CompanyPersistence.impl")
2537    protected com.liferay.portal.service.persistence.CompanyPersistence companyPersistence;
2538    @BeanReference(name = "com.liferay.portal.service.persistence.ContactPersistence.impl")
2539    protected com.liferay.portal.service.persistence.ContactPersistence contactPersistence;
2540    @BeanReference(name = "com.liferay.portal.service.persistence.CountryPersistence.impl")
2541    protected com.liferay.portal.service.persistence.CountryPersistence countryPersistence;
2542    @BeanReference(name = "com.liferay.portal.service.persistence.EmailAddressPersistence.impl")
2543    protected com.liferay.portal.service.persistence.EmailAddressPersistence emailAddressPersistence;
2544    @BeanReference(name = "com.liferay.portal.service.persistence.GroupPersistence.impl")
2545    protected com.liferay.portal.service.persistence.GroupPersistence groupPersistence;
2546    @BeanReference(name = "com.liferay.portal.service.persistence.ImagePersistence.impl")
2547    protected com.liferay.portal.service.persistence.ImagePersistence imagePersistence;
2548    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutPersistence.impl")
2549    protected com.liferay.portal.service.persistence.LayoutPersistence layoutPersistence;
2550    @BeanReference(name = "com.liferay.portal.service.persistence.LayoutSetPersistence.impl")
2551    protected com.liferay.portal.service.persistence.LayoutSetPersistence layoutSetPersistence;
2552    @BeanReference(name = "com.liferay.portal.service.persistence.ListTypePersistence.impl")
2553    protected com.liferay.portal.service.persistence.ListTypePersistence listTypePersistence;
2554    @BeanReference(name = "com.liferay.portal.service.persistence.MembershipRequestPersistence.impl")
2555    protected com.liferay.portal.service.persistence.MembershipRequestPersistence membershipRequestPersistence;
2556    @BeanReference(name = "com.liferay.portal.service.persistence.OrganizationPersistence.impl")
2557    protected com.liferay.portal.service.persistence.OrganizationPersistence organizationPersistence;
2558    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupPermissionPersistence.impl")
2559    protected com.liferay.portal.service.persistence.OrgGroupPermissionPersistence orgGroupPermissionPersistence;
2560    @BeanReference(name = "com.liferay.portal.service.persistence.OrgGroupRolePersistence.impl")
2561    protected com.liferay.portal.service.persistence.OrgGroupRolePersistence orgGroupRolePersistence;
2562    @BeanReference(name = "com.liferay.portal.service.persistence.OrgLaborPersistence.impl")
2563    protected com.liferay.portal.service.persistence.OrgLaborPersistence orgLaborPersistence;
2564    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyPersistence.impl")
2565    protected com.liferay.portal.service.persistence.PasswordPolicyPersistence passwordPolicyPersistence;
2566    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordPolicyRelPersistence.impl")
2567    protected com.liferay.portal.service.persistence.PasswordPolicyRelPersistence passwordPolicyRelPersistence;
2568    @BeanReference(name = "com.liferay.portal.service.persistence.PasswordTrackerPersistence.impl")
2569    protected com.liferay.portal.service.persistence.PasswordTrackerPersistence passwordTrackerPersistence;
2570    @BeanReference(name = "com.liferay.portal.service.persistence.PermissionPersistence.impl")
2571    protected com.liferay.portal.service.persistence.PermissionPersistence permissionPersistence;
2572    @BeanReference(name = "com.liferay.portal.service.persistence.PhonePersistence.impl")
2573    protected com.liferay.portal.service.persistence.PhonePersistence phonePersistence;
2574    @BeanReference(name = "com.liferay.portal.service.persistence.PluginSettingPersistence.impl")
2575    protected com.liferay.portal.service.persistence.PluginSettingPersistence pluginSettingPersistence;
2576    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPersistence.impl")
2577    protected com.liferay.portal.service.persistence.PortletPersistence portletPersistence;
2578    @BeanReference(name = "com.liferay.portal.service.persistence.PortletItemPersistence.impl")
2579    protected com.liferay.portal.service.persistence.PortletItemPersistence portletItemPersistence;
2580    @BeanReference(name = "com.liferay.portal.service.persistence.PortletPreferencesPersistence.impl")
2581    protected com.liferay.portal.service.persistence.PortletPreferencesPersistence portletPreferencesPersistence;
2582    @BeanReference(name = "com.liferay.portal.service.persistence.RegionPersistence.impl")
2583    protected com.liferay.portal.service.persistence.RegionPersistence regionPersistence;
2584    @BeanReference(name = "com.liferay.portal.service.persistence.ReleasePersistence.impl")
2585    protected com.liferay.portal.service.persistence.ReleasePersistence releasePersistence;
2586    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePersistence.impl")
2587    protected com.liferay.portal.service.persistence.ResourcePersistence resourcePersistence;
2588    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceActionPersistence.impl")
2589    protected com.liferay.portal.service.persistence.ResourceActionPersistence resourceActionPersistence;
2590    @BeanReference(name = "com.liferay.portal.service.persistence.ResourceCodePersistence.impl")
2591    protected com.liferay.portal.service.persistence.ResourceCodePersistence resourceCodePersistence;
2592    @BeanReference(name = "com.liferay.portal.service.persistence.ResourcePermissionPersistence.impl")
2593    protected com.liferay.portal.service.persistence.ResourcePermissionPersistence resourcePermissionPersistence;
2594    @BeanReference(name = "com.liferay.portal.service.persistence.RolePersistence.impl")
2595    protected com.liferay.portal.service.persistence.RolePersistence rolePersistence;
2596    @BeanReference(name = "com.liferay.portal.service.persistence.ServiceComponentPersistence.impl")
2597    protected com.liferay.portal.service.persistence.ServiceComponentPersistence serviceComponentPersistence;
2598    @BeanReference(name = "com.liferay.portal.service.persistence.ShardPersistence.impl")
2599    protected com.liferay.portal.service.persistence.ShardPersistence shardPersistence;
2600    @BeanReference(name = "com.liferay.portal.service.persistence.SubscriptionPersistence.impl")
2601    protected com.liferay.portal.service.persistence.SubscriptionPersistence subscriptionPersistence;
2602    @BeanReference(name = "com.liferay.portal.service.persistence.UserPersistence.impl")
2603    protected com.liferay.portal.service.persistence.UserPersistence userPersistence;
2604    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupPersistence.impl")
2605    protected com.liferay.portal.service.persistence.UserGroupPersistence userGroupPersistence;
2606    @BeanReference(name = "com.liferay.portal.service.persistence.UserGroupRolePersistence.impl")
2607    protected com.liferay.portal.service.persistence.UserGroupRolePersistence userGroupRolePersistence;
2608    @BeanReference(name = "com.liferay.portal.service.persistence.UserIdMapperPersistence.impl")
2609    protected com.liferay.portal.service.persistence.UserIdMapperPersistence userIdMapperPersistence;
2610    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPersistence.impl")
2611    protected com.liferay.portal.service.persistence.UserTrackerPersistence userTrackerPersistence;
2612    @BeanReference(name = "com.liferay.portal.service.persistence.UserTrackerPathPersistence.impl")
2613    protected com.liferay.portal.service.persistence.UserTrackerPathPersistence userTrackerPathPersistence;
2614    @BeanReference(name = "com.liferay.portal.service.persistence.WebDAVPropsPersistence.impl")
2615    protected com.liferay.portal.service.persistence.WebDAVPropsPersistence webDAVPropsPersistence;
2616    @BeanReference(name = "com.liferay.portal.service.persistence.WebsitePersistence.impl")
2617    protected com.liferay.portal.service.persistence.WebsitePersistence websitePersistence;
2618    protected ContainsGroup containsGroup;
2619    protected AddGroup addGroup;
2620    protected ClearGroups clearGroups;
2621    protected RemoveGroup removeGroup;
2622    protected ContainsUser containsUser;
2623    protected AddUser addUser;
2624    protected ClearUsers clearUsers;
2625    protected RemoveUser removeUser;
2626
2627    protected class ContainsGroup {
2628        protected ContainsGroup(OrganizationPersistenceImpl persistenceImpl) {
2629            super();
2630
2631            _mappingSqlQuery = MappingSqlQueryFactoryUtil.getMappingSqlQuery(getDataSource(),
2632                    _SQL_CONTAINSGROUP,
2633                    new int[] { Types.BIGINT, Types.BIGINT }, RowMapper.COUNT);
2634        }
2635
2636        protected boolean contains(long organizationId, long groupId) {
2637            List<Integer> results = _mappingSqlQuery.execute(new Object[] {
2638                        new Long(organizationId), new Long(groupId)
2639                    });
2640
2641            if (results.size() > 0) {
2642                Integer count = results.get(0);
2643
2644                if (count.intValue() > 0) {
2645                    return true;
2646                }
2647            }
2648
2649            return false;
2650        }
2651
2652        private MappingSqlQuery _mappingSqlQuery;
2653    }
2654
2655    protected class AddGroup {
2656        protected AddGroup(OrganizationPersistenceImpl persistenceImpl) {
2657            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2658                    "INSERT INTO Groups_Orgs (organizationId, groupId) VALUES (?, ?)",
2659                    new int[] { Types.BIGINT, Types.BIGINT });
2660            _persistenceImpl = persistenceImpl;
2661        }
2662
2663        protected void add(long organizationId, long groupId) {
2664            if (!_persistenceImpl.containsGroup.contains(organizationId, groupId)) {
2665                _sqlUpdate.update(new Object[] {
2666                        new Long(organizationId), new Long(groupId)
2667                    });
2668            }
2669        }
2670
2671        private SqlUpdate _sqlUpdate;
2672        private OrganizationPersistenceImpl _persistenceImpl;
2673    }
2674
2675    protected class ClearGroups {
2676        protected ClearGroups(OrganizationPersistenceImpl persistenceImpl) {
2677            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2678                    "DELETE FROM Groups_Orgs WHERE organizationId = ?",
2679                    new int[] { Types.BIGINT });
2680        }
2681
2682        protected void clear(long organizationId) {
2683            _sqlUpdate.update(new Object[] { new Long(organizationId) });
2684        }
2685
2686        private SqlUpdate _sqlUpdate;
2687    }
2688
2689    protected class RemoveGroup {
2690        protected RemoveGroup(OrganizationPersistenceImpl persistenceImpl) {
2691            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2692                    "DELETE FROM Groups_Orgs WHERE organizationId = ? AND groupId = ?",
2693                    new int[] { Types.BIGINT, Types.BIGINT });
2694        }
2695
2696        protected void remove(long organizationId, long groupId) {
2697            _sqlUpdate.update(new Object[] {
2698                    new Long(organizationId), new Long(groupId)
2699                });
2700        }
2701
2702        private SqlUpdate _sqlUpdate;
2703    }
2704
2705    protected class ContainsUser {
2706        protected ContainsUser(OrganizationPersistenceImpl persistenceImpl) {
2707            super();
2708
2709            _mappingSqlQuery = MappingSqlQueryFactoryUtil.getMappingSqlQuery(getDataSource(),
2710                    _SQL_CONTAINSUSER,
2711                    new int[] { Types.BIGINT, Types.BIGINT }, RowMapper.COUNT);
2712        }
2713
2714        protected boolean contains(long organizationId, long userId) {
2715            List<Integer> results = _mappingSqlQuery.execute(new Object[] {
2716                        new Long(organizationId), new Long(userId)
2717                    });
2718
2719            if (results.size() > 0) {
2720                Integer count = results.get(0);
2721
2722                if (count.intValue() > 0) {
2723                    return true;
2724                }
2725            }
2726
2727            return false;
2728        }
2729
2730        private MappingSqlQuery _mappingSqlQuery;
2731    }
2732
2733    protected class AddUser {
2734        protected AddUser(OrganizationPersistenceImpl persistenceImpl) {
2735            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2736                    "INSERT INTO Users_Orgs (organizationId, userId) VALUES (?, ?)",
2737                    new int[] { Types.BIGINT, Types.BIGINT });
2738            _persistenceImpl = persistenceImpl;
2739        }
2740
2741        protected void add(long organizationId, long userId) {
2742            if (!_persistenceImpl.containsUser.contains(organizationId, userId)) {
2743                _sqlUpdate.update(new Object[] {
2744                        new Long(organizationId), new Long(userId)
2745                    });
2746            }
2747        }
2748
2749        private SqlUpdate _sqlUpdate;
2750        private OrganizationPersistenceImpl _persistenceImpl;
2751    }
2752
2753    protected class ClearUsers {
2754        protected ClearUsers(OrganizationPersistenceImpl persistenceImpl) {
2755            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2756                    "DELETE FROM Users_Orgs WHERE organizationId = ?",
2757                    new int[] { Types.BIGINT });
2758        }
2759
2760        protected void clear(long organizationId) {
2761            _sqlUpdate.update(new Object[] { new Long(organizationId) });
2762        }
2763
2764        private SqlUpdate _sqlUpdate;
2765    }
2766
2767    protected class RemoveUser {
2768        protected RemoveUser(OrganizationPersistenceImpl persistenceImpl) {
2769            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2770                    "DELETE FROM Users_Orgs WHERE organizationId = ? AND userId = ?",
2771                    new int[] { Types.BIGINT, Types.BIGINT });
2772        }
2773
2774        protected void remove(long organizationId, long userId) {
2775            _sqlUpdate.update(new Object[] {
2776                    new Long(organizationId), new Long(userId)
2777                });
2778        }
2779
2780        private SqlUpdate _sqlUpdate;
2781    }
2782
2783    protected ExpandTreeLeftOrganizationId expandTreeLeftOrganizationId;
2784    protected ExpandTreeRightOrganizationId expandTreeRightOrganizationId;
2785    protected ShrinkTreeLeftOrganizationId shrinkTreeLeftOrganizationId;
2786    protected ShrinkTreeRightOrganizationId shrinkTreeRightOrganizationId;
2787    protected UpdateTree updateTree;
2788
2789    protected class ExpandTreeLeftOrganizationId {
2790        protected ExpandTreeLeftOrganizationId() {
2791            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2792                    "UPDATE Organization_ SET leftOrganizationId = (leftOrganizationId + 2) WHERE (companyId = ?) AND (leftOrganizationId > ?)",
2793                    new int[] { Types.BIGINT, Types.BIGINT });
2794        }
2795
2796        protected void expand(long companyId, long leftOrganizationId) {
2797            _sqlUpdate.update(new Object[] { companyId, leftOrganizationId });
2798        }
2799
2800        private SqlUpdate _sqlUpdate;
2801    }
2802
2803    protected class ExpandTreeRightOrganizationId {
2804        protected ExpandTreeRightOrganizationId() {
2805            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2806                    "UPDATE Organization_ SET rightOrganizationId = (rightOrganizationId + 2) WHERE (companyId = ?) AND (rightOrganizationId > ?)",
2807                    new int[] { Types.BIGINT, Types.BIGINT });
2808        }
2809
2810        protected void expand(long companyId, long rightOrganizationId) {
2811            _sqlUpdate.update(new Object[] { companyId, rightOrganizationId });
2812        }
2813
2814        private SqlUpdate _sqlUpdate;
2815    }
2816
2817    protected class ShrinkTreeLeftOrganizationId {
2818        protected ShrinkTreeLeftOrganizationId() {
2819            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2820                    "UPDATE Organization_ SET leftOrganizationId = (leftOrganizationId - ?) WHERE (companyId = ?) AND (leftOrganizationId > ?)",
2821                    new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT });
2822        }
2823
2824        protected void shrink(long companyId, long leftOrganizationId,
2825            long delta) {
2826            _sqlUpdate.update(new Object[] { delta, companyId, leftOrganizationId });
2827        }
2828
2829        private SqlUpdate _sqlUpdate;
2830    }
2831
2832    protected class ShrinkTreeRightOrganizationId {
2833        protected ShrinkTreeRightOrganizationId() {
2834            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2835                    "UPDATE Organization_ SET rightOrganizationId = (rightOrganizationId - ?) WHERE (companyId = ?) AND (rightOrganizationId > ?)",
2836                    new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT });
2837        }
2838
2839        protected void shrink(long companyId, long rightOrganizationId,
2840            long delta) {
2841            _sqlUpdate.update(new Object[] { delta, companyId, rightOrganizationId });
2842        }
2843
2844        private SqlUpdate _sqlUpdate;
2845    }
2846
2847    protected class UpdateTree {
2848        protected UpdateTree() {
2849            _sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(getDataSource(),
2850                    "UPDATE Organization_ SET leftOrganizationId = ?, rightOrganizationId = ? WHERE organizationId = ?",
2851                    new int[] { Types.BIGINT, Types.BIGINT, Types.BIGINT });
2852        }
2853
2854        protected void update(long organizationId, long leftOrganizationId,
2855            long rightOrganizationId) {
2856            _sqlUpdate.update(new Object[] {
2857                    leftOrganizationId, rightOrganizationId, organizationId
2858                });
2859        }
2860
2861        private SqlUpdate _sqlUpdate;
2862    }
2863
2864    private static final String _SQL_GETGROUPS = "SELECT {Group_.*} FROM Group_ INNER JOIN Groups_Orgs ON (Groups_Orgs.groupId = Group_.groupId) WHERE (Groups_Orgs.organizationId = ?)";
2865    private static final String _SQL_GETGROUPSSIZE = "SELECT COUNT(*) AS COUNT_VALUE FROM Groups_Orgs WHERE organizationId = ?";
2866    private static final String _SQL_CONTAINSGROUP = "SELECT COUNT(*) AS COUNT_VALUE FROM Groups_Orgs WHERE organizationId = ? AND groupId = ?";
2867    private static final String _SQL_GETUSERS = "SELECT {User_.*} FROM User_ INNER JOIN Users_Orgs ON (Users_Orgs.userId = User_.userId) WHERE (Users_Orgs.organizationId = ?)";
2868    private static final String _SQL_GETUSERSSIZE = "SELECT COUNT(*) AS COUNT_VALUE FROM Users_Orgs WHERE organizationId = ?";
2869    private static final String _SQL_CONTAINSUSER = "SELECT COUNT(*) AS COUNT_VALUE FROM Users_Orgs WHERE organizationId = ? AND userId = ?";
2870    private static Log _log = LogFactoryUtil.getLog(OrganizationPersistenceImpl.class);
2871}