1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.service.persistence;
16  
17  import com.liferay.portal.NoSuchModelException;
18  import com.liferay.portal.NoSuchWorkflowDefinitionLinkException;
19  import com.liferay.portal.kernel.annotation.BeanReference;
20  import com.liferay.portal.kernel.cache.CacheRegistry;
21  import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
22  import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
23  import com.liferay.portal.kernel.dao.orm.FinderPath;
24  import com.liferay.portal.kernel.dao.orm.Query;
25  import com.liferay.portal.kernel.dao.orm.QueryPos;
26  import com.liferay.portal.kernel.dao.orm.QueryUtil;
27  import com.liferay.portal.kernel.dao.orm.Session;
28  import com.liferay.portal.kernel.exception.SystemException;
29  import com.liferay.portal.kernel.log.Log;
30  import com.liferay.portal.kernel.log.LogFactoryUtil;
31  import com.liferay.portal.kernel.util.GetterUtil;
32  import com.liferay.portal.kernel.util.InstanceFactory;
33  import com.liferay.portal.kernel.util.OrderByComparator;
34  import com.liferay.portal.kernel.util.StringBundler;
35  import com.liferay.portal.kernel.util.StringPool;
36  import com.liferay.portal.kernel.util.StringUtil;
37  import com.liferay.portal.model.ModelListener;
38  import com.liferay.portal.model.WorkflowDefinitionLink;
39  import com.liferay.portal.model.impl.WorkflowDefinitionLinkImpl;
40  import com.liferay.portal.model.impl.WorkflowDefinitionLinkModelImpl;
41  import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
42  
43  import java.io.Serializable;
44  
45  import java.util.ArrayList;
46  import java.util.Collections;
47  import java.util.List;
48  
49  /**
50   * <a href="WorkflowDefinitionLinkPersistenceImpl.java.html"><b><i>View Source</i></b></a>
51   *
52   * <p>
53   * ServiceBuilder generated this class. Modifications in this class will be
54   * overwritten the next time is generated.
55   * </p>
56   *
57   * @author    Brian Wing Shun Chan
58   * @see       WorkflowDefinitionLinkPersistence
59   * @see       WorkflowDefinitionLinkUtil
60   * @generated
61   */
62  public class WorkflowDefinitionLinkPersistenceImpl extends BasePersistenceImpl<WorkflowDefinitionLink>
63      implements WorkflowDefinitionLinkPersistence {
64      public static final String FINDER_CLASS_NAME_ENTITY = WorkflowDefinitionLinkImpl.class.getName();
65      public static final String FINDER_CLASS_NAME_LIST = FINDER_CLASS_NAME_ENTITY +
66          ".List";
67      public static final FinderPath FINDER_PATH_FIND_BY_COMPANYID = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
68              WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
69              FINDER_CLASS_NAME_LIST, "findByCompanyId",
70              new String[] {
71                  Long.class.getName(),
72                  
73              "java.lang.Integer", "java.lang.Integer",
74                  "com.liferay.portal.kernel.util.OrderByComparator"
75              });
76      public static final FinderPath FINDER_PATH_COUNT_BY_COMPANYID = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
77              WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
78              FINDER_CLASS_NAME_LIST, "countByCompanyId",
79              new String[] { Long.class.getName() });
80      public static final FinderPath FINDER_PATH_FETCH_BY_G_C_C = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
81              WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
82              FINDER_CLASS_NAME_ENTITY, "fetchByG_C_C",
83              new String[] {
84                  Long.class.getName(), Long.class.getName(), Long.class.getName()
85              });
86      public static final FinderPath FINDER_PATH_COUNT_BY_G_C_C = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
87              WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
88              FINDER_CLASS_NAME_LIST, "countByG_C_C",
89              new String[] {
90                  Long.class.getName(), Long.class.getName(), Long.class.getName()
91              });
92      public static final FinderPath FINDER_PATH_FIND_BY_C_W_W = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
93              WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
94              FINDER_CLASS_NAME_LIST, "findByC_W_W",
95              new String[] {
96                  Long.class.getName(), String.class.getName(),
97                  Integer.class.getName(),
98                  
99              "java.lang.Integer", "java.lang.Integer",
100                 "com.liferay.portal.kernel.util.OrderByComparator"
101             });
102     public static final FinderPath FINDER_PATH_COUNT_BY_C_W_W = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
103             WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
104             FINDER_CLASS_NAME_LIST, "countByC_W_W",
105             new String[] {
106                 Long.class.getName(), String.class.getName(),
107                 Integer.class.getName()
108             });
109     public static final FinderPath FINDER_PATH_FIND_ALL = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
110             WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
111             FINDER_CLASS_NAME_LIST, "findAll", new String[0]);
112     public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
113             WorkflowDefinitionLinkModelImpl.FINDER_CACHE_ENABLED,
114             FINDER_CLASS_NAME_LIST, "countAll", new String[0]);
115 
116     public void cacheResult(WorkflowDefinitionLink workflowDefinitionLink) {
117         EntityCacheUtil.putResult(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
118             WorkflowDefinitionLinkImpl.class,
119             workflowDefinitionLink.getPrimaryKey(), workflowDefinitionLink);
120 
121         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_C_C,
122             new Object[] {
123                 new Long(workflowDefinitionLink.getGroupId()),
124                 new Long(workflowDefinitionLink.getCompanyId()),
125                 new Long(workflowDefinitionLink.getClassNameId())
126             }, workflowDefinitionLink);
127     }
128 
129     public void cacheResult(
130         List<WorkflowDefinitionLink> workflowDefinitionLinks) {
131         for (WorkflowDefinitionLink workflowDefinitionLink : workflowDefinitionLinks) {
132             if (EntityCacheUtil.getResult(
133                         WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
134                         WorkflowDefinitionLinkImpl.class,
135                         workflowDefinitionLink.getPrimaryKey(), this) == null) {
136                 cacheResult(workflowDefinitionLink);
137             }
138         }
139     }
140 
141     public void clearCache() {
142         CacheRegistry.clear(WorkflowDefinitionLinkImpl.class.getName());
143         EntityCacheUtil.clearCache(WorkflowDefinitionLinkImpl.class.getName());
144         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
145         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
146     }
147 
148     public void clearCache(WorkflowDefinitionLink workflowDefinitionLink) {
149         EntityCacheUtil.removeResult(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
150             WorkflowDefinitionLinkImpl.class,
151             workflowDefinitionLink.getPrimaryKey());
152 
153         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_C_C,
154             new Object[] {
155                 new Long(workflowDefinitionLink.getGroupId()),
156                 new Long(workflowDefinitionLink.getCompanyId()),
157                 new Long(workflowDefinitionLink.getClassNameId())
158             });
159     }
160 
161     public WorkflowDefinitionLink create(long workflowDefinitionLinkId) {
162         WorkflowDefinitionLink workflowDefinitionLink = new WorkflowDefinitionLinkImpl();
163 
164         workflowDefinitionLink.setNew(true);
165         workflowDefinitionLink.setPrimaryKey(workflowDefinitionLinkId);
166 
167         return workflowDefinitionLink;
168     }
169 
170     public WorkflowDefinitionLink remove(Serializable primaryKey)
171         throws NoSuchModelException, SystemException {
172         return remove(((Long)primaryKey).longValue());
173     }
174 
175     public WorkflowDefinitionLink remove(long workflowDefinitionLinkId)
176         throws NoSuchWorkflowDefinitionLinkException, SystemException {
177         Session session = null;
178 
179         try {
180             session = openSession();
181 
182             WorkflowDefinitionLink workflowDefinitionLink = (WorkflowDefinitionLink)session.get(WorkflowDefinitionLinkImpl.class,
183                     new Long(workflowDefinitionLinkId));
184 
185             if (workflowDefinitionLink == null) {
186                 if (_log.isWarnEnabled()) {
187                     _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
188                         workflowDefinitionLinkId);
189                 }
190 
191                 throw new NoSuchWorkflowDefinitionLinkException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
192                     workflowDefinitionLinkId);
193             }
194 
195             return remove(workflowDefinitionLink);
196         }
197         catch (NoSuchWorkflowDefinitionLinkException nsee) {
198             throw nsee;
199         }
200         catch (Exception e) {
201             throw processException(e);
202         }
203         finally {
204             closeSession(session);
205         }
206     }
207 
208     public WorkflowDefinitionLink remove(
209         WorkflowDefinitionLink workflowDefinitionLink)
210         throws SystemException {
211         for (ModelListener<WorkflowDefinitionLink> listener : listeners) {
212             listener.onBeforeRemove(workflowDefinitionLink);
213         }
214 
215         workflowDefinitionLink = removeImpl(workflowDefinitionLink);
216 
217         for (ModelListener<WorkflowDefinitionLink> listener : listeners) {
218             listener.onAfterRemove(workflowDefinitionLink);
219         }
220 
221         return workflowDefinitionLink;
222     }
223 
224     protected WorkflowDefinitionLink removeImpl(
225         WorkflowDefinitionLink workflowDefinitionLink)
226         throws SystemException {
227         workflowDefinitionLink = toUnwrappedModel(workflowDefinitionLink);
228 
229         Session session = null;
230 
231         try {
232             session = openSession();
233 
234             if (workflowDefinitionLink.isCachedModel() ||
235                     BatchSessionUtil.isEnabled()) {
236                 Object staleObject = session.get(WorkflowDefinitionLinkImpl.class,
237                         workflowDefinitionLink.getPrimaryKeyObj());
238 
239                 if (staleObject != null) {
240                     session.evict(staleObject);
241                 }
242             }
243 
244             session.delete(workflowDefinitionLink);
245 
246             session.flush();
247         }
248         catch (Exception e) {
249             throw processException(e);
250         }
251         finally {
252             closeSession(session);
253         }
254 
255         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
256 
257         WorkflowDefinitionLinkModelImpl workflowDefinitionLinkModelImpl = (WorkflowDefinitionLinkModelImpl)workflowDefinitionLink;
258 
259         FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_C_C,
260             new Object[] {
261                 new Long(workflowDefinitionLinkModelImpl.getOriginalGroupId()),
262                 new Long(workflowDefinitionLinkModelImpl.getOriginalCompanyId()),
263                 new Long(workflowDefinitionLinkModelImpl.getOriginalClassNameId())
264             });
265 
266         EntityCacheUtil.removeResult(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
267             WorkflowDefinitionLinkImpl.class,
268             workflowDefinitionLink.getPrimaryKey());
269 
270         return workflowDefinitionLink;
271     }
272 
273     public WorkflowDefinitionLink updateImpl(
274         com.liferay.portal.model.WorkflowDefinitionLink workflowDefinitionLink,
275         boolean merge) throws SystemException {
276         workflowDefinitionLink = toUnwrappedModel(workflowDefinitionLink);
277 
278         boolean isNew = workflowDefinitionLink.isNew();
279 
280         WorkflowDefinitionLinkModelImpl workflowDefinitionLinkModelImpl = (WorkflowDefinitionLinkModelImpl)workflowDefinitionLink;
281 
282         Session session = null;
283 
284         try {
285             session = openSession();
286 
287             BatchSessionUtil.update(session, workflowDefinitionLink, merge);
288 
289             workflowDefinitionLink.setNew(false);
290         }
291         catch (Exception e) {
292             throw processException(e);
293         }
294         finally {
295             closeSession(session);
296         }
297 
298         FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST);
299 
300         EntityCacheUtil.putResult(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
301             WorkflowDefinitionLinkImpl.class,
302             workflowDefinitionLink.getPrimaryKey(), workflowDefinitionLink);
303 
304         if (!isNew &&
305                 ((workflowDefinitionLink.getGroupId() != workflowDefinitionLinkModelImpl.getOriginalGroupId()) ||
306                 (workflowDefinitionLink.getCompanyId() != workflowDefinitionLinkModelImpl.getOriginalCompanyId()) ||
307                 (workflowDefinitionLink.getClassNameId() != workflowDefinitionLinkModelImpl.getOriginalClassNameId()))) {
308             FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_C_C,
309                 new Object[] {
310                     new Long(workflowDefinitionLinkModelImpl.getOriginalGroupId()),
311                     new Long(workflowDefinitionLinkModelImpl.getOriginalCompanyId()),
312                     new Long(workflowDefinitionLinkModelImpl.getOriginalClassNameId())
313                 });
314         }
315 
316         if (isNew ||
317                 ((workflowDefinitionLink.getGroupId() != workflowDefinitionLinkModelImpl.getOriginalGroupId()) ||
318                 (workflowDefinitionLink.getCompanyId() != workflowDefinitionLinkModelImpl.getOriginalCompanyId()) ||
319                 (workflowDefinitionLink.getClassNameId() != workflowDefinitionLinkModelImpl.getOriginalClassNameId()))) {
320             FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_C_C,
321                 new Object[] {
322                     new Long(workflowDefinitionLink.getGroupId()),
323                     new Long(workflowDefinitionLink.getCompanyId()),
324                     new Long(workflowDefinitionLink.getClassNameId())
325                 }, workflowDefinitionLink);
326         }
327 
328         return workflowDefinitionLink;
329     }
330 
331     protected WorkflowDefinitionLink toUnwrappedModel(
332         WorkflowDefinitionLink workflowDefinitionLink) {
333         if (workflowDefinitionLink instanceof WorkflowDefinitionLinkImpl) {
334             return workflowDefinitionLink;
335         }
336 
337         WorkflowDefinitionLinkImpl workflowDefinitionLinkImpl = new WorkflowDefinitionLinkImpl();
338 
339         workflowDefinitionLinkImpl.setNew(workflowDefinitionLink.isNew());
340         workflowDefinitionLinkImpl.setPrimaryKey(workflowDefinitionLink.getPrimaryKey());
341 
342         workflowDefinitionLinkImpl.setWorkflowDefinitionLinkId(workflowDefinitionLink.getWorkflowDefinitionLinkId());
343         workflowDefinitionLinkImpl.setGroupId(workflowDefinitionLink.getGroupId());
344         workflowDefinitionLinkImpl.setCompanyId(workflowDefinitionLink.getCompanyId());
345         workflowDefinitionLinkImpl.setUserId(workflowDefinitionLink.getUserId());
346         workflowDefinitionLinkImpl.setUserName(workflowDefinitionLink.getUserName());
347         workflowDefinitionLinkImpl.setCreateDate(workflowDefinitionLink.getCreateDate());
348         workflowDefinitionLinkImpl.setModifiedDate(workflowDefinitionLink.getModifiedDate());
349         workflowDefinitionLinkImpl.setClassNameId(workflowDefinitionLink.getClassNameId());
350         workflowDefinitionLinkImpl.setWorkflowDefinitionName(workflowDefinitionLink.getWorkflowDefinitionName());
351         workflowDefinitionLinkImpl.setWorkflowDefinitionVersion(workflowDefinitionLink.getWorkflowDefinitionVersion());
352 
353         return workflowDefinitionLinkImpl;
354     }
355 
356     public WorkflowDefinitionLink findByPrimaryKey(Serializable primaryKey)
357         throws NoSuchModelException, SystemException {
358         return findByPrimaryKey(((Long)primaryKey).longValue());
359     }
360 
361     public WorkflowDefinitionLink findByPrimaryKey(
362         long workflowDefinitionLinkId)
363         throws NoSuchWorkflowDefinitionLinkException, SystemException {
364         WorkflowDefinitionLink workflowDefinitionLink = fetchByPrimaryKey(workflowDefinitionLinkId);
365 
366         if (workflowDefinitionLink == null) {
367             if (_log.isWarnEnabled()) {
368                 _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
369                     workflowDefinitionLinkId);
370             }
371 
372             throw new NoSuchWorkflowDefinitionLinkException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
373                 workflowDefinitionLinkId);
374         }
375 
376         return workflowDefinitionLink;
377     }
378 
379     public WorkflowDefinitionLink fetchByPrimaryKey(Serializable primaryKey)
380         throws SystemException {
381         return fetchByPrimaryKey(((Long)primaryKey).longValue());
382     }
383 
384     public WorkflowDefinitionLink fetchByPrimaryKey(
385         long workflowDefinitionLinkId) throws SystemException {
386         WorkflowDefinitionLink workflowDefinitionLink = (WorkflowDefinitionLink)EntityCacheUtil.getResult(WorkflowDefinitionLinkModelImpl.ENTITY_CACHE_ENABLED,
387                 WorkflowDefinitionLinkImpl.class, workflowDefinitionLinkId, this);
388 
389         if (workflowDefinitionLink == null) {
390             Session session = null;
391 
392             try {
393                 session = openSession();
394 
395                 workflowDefinitionLink = (WorkflowDefinitionLink)session.get(WorkflowDefinitionLinkImpl.class,
396                         new Long(workflowDefinitionLinkId));
397             }
398             catch (Exception e) {
399                 throw processException(e);
400             }
401             finally {
402                 if (workflowDefinitionLink != null) {
403                     cacheResult(workflowDefinitionLink);
404                 }
405 
406                 closeSession(session);
407             }
408         }
409 
410         return workflowDefinitionLink;
411     }
412 
413     public List<WorkflowDefinitionLink> findByCompanyId(long companyId)
414         throws SystemException {
415         return findByCompanyId(companyId, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
416             null);
417     }
418 
419     public List<WorkflowDefinitionLink> findByCompanyId(long companyId,
420         int start, int end) throws SystemException {
421         return findByCompanyId(companyId, start, end, null);
422     }
423 
424     public List<WorkflowDefinitionLink> findByCompanyId(long companyId,
425         int start, int end, OrderByComparator orderByComparator)
426         throws SystemException {
427         Object[] finderArgs = new Object[] {
428                 new Long(companyId),
429                 
430                 String.valueOf(start), String.valueOf(end),
431                 String.valueOf(orderByComparator)
432             };
433 
434         List<WorkflowDefinitionLink> list = (List<WorkflowDefinitionLink>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_COMPANYID,
435                 finderArgs, this);
436 
437         if (list == null) {
438             Session session = null;
439 
440             try {
441                 session = openSession();
442 
443                 StringBundler query = null;
444 
445                 if (orderByComparator != null) {
446                     query = new StringBundler(3 +
447                             (orderByComparator.getOrderByFields().length * 3));
448                 }
449                 else {
450                     query = new StringBundler(3);
451                 }
452 
453                 query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE);
454 
455                 query.append(_FINDER_COLUMN_COMPANYID_COMPANYID_2);
456 
457                 if (orderByComparator != null) {
458                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
459                         orderByComparator);
460                 }
461 
462                 else {
463                     query.append(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
464                 }
465 
466                 String sql = query.toString();
467 
468                 Query q = session.createQuery(sql);
469 
470                 QueryPos qPos = QueryPos.getInstance(q);
471 
472                 qPos.add(companyId);
473 
474                 list = (List<WorkflowDefinitionLink>)QueryUtil.list(q,
475                         getDialect(), start, end);
476             }
477             catch (Exception e) {
478                 throw processException(e);
479             }
480             finally {
481                 if (list == null) {
482                     list = new ArrayList<WorkflowDefinitionLink>();
483                 }
484 
485                 cacheResult(list);
486 
487                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_COMPANYID,
488                     finderArgs, list);
489 
490                 closeSession(session);
491             }
492         }
493 
494         return list;
495     }
496 
497     public WorkflowDefinitionLink findByCompanyId_First(long companyId,
498         OrderByComparator orderByComparator)
499         throws NoSuchWorkflowDefinitionLinkException, SystemException {
500         List<WorkflowDefinitionLink> list = findByCompanyId(companyId, 0, 1,
501                 orderByComparator);
502 
503         if (list.isEmpty()) {
504             StringBundler msg = new StringBundler(4);
505 
506             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
507 
508             msg.append("companyId=");
509             msg.append(companyId);
510 
511             msg.append(StringPool.CLOSE_CURLY_BRACE);
512 
513             throw new NoSuchWorkflowDefinitionLinkException(msg.toString());
514         }
515         else {
516             return list.get(0);
517         }
518     }
519 
520     public WorkflowDefinitionLink findByCompanyId_Last(long companyId,
521         OrderByComparator orderByComparator)
522         throws NoSuchWorkflowDefinitionLinkException, SystemException {
523         int count = countByCompanyId(companyId);
524 
525         List<WorkflowDefinitionLink> list = findByCompanyId(companyId,
526                 count - 1, count, orderByComparator);
527 
528         if (list.isEmpty()) {
529             StringBundler msg = new StringBundler(4);
530 
531             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
532 
533             msg.append("companyId=");
534             msg.append(companyId);
535 
536             msg.append(StringPool.CLOSE_CURLY_BRACE);
537 
538             throw new NoSuchWorkflowDefinitionLinkException(msg.toString());
539         }
540         else {
541             return list.get(0);
542         }
543     }
544 
545     public WorkflowDefinitionLink[] findByCompanyId_PrevAndNext(
546         long workflowDefinitionLinkId, long companyId,
547         OrderByComparator orderByComparator)
548         throws NoSuchWorkflowDefinitionLinkException, SystemException {
549         WorkflowDefinitionLink workflowDefinitionLink = findByPrimaryKey(workflowDefinitionLinkId);
550 
551         Session session = null;
552 
553         try {
554             session = openSession();
555 
556             WorkflowDefinitionLink[] array = new WorkflowDefinitionLinkImpl[3];
557 
558             array[0] = getByCompanyId_PrevAndNext(session,
559                     workflowDefinitionLink, companyId, orderByComparator, true);
560 
561             array[1] = workflowDefinitionLink;
562 
563             array[2] = getByCompanyId_PrevAndNext(session,
564                     workflowDefinitionLink, companyId, orderByComparator, false);
565 
566             return array;
567         }
568         catch (Exception e) {
569             throw processException(e);
570         }
571         finally {
572             closeSession(session);
573         }
574     }
575 
576     protected WorkflowDefinitionLink getByCompanyId_PrevAndNext(
577         Session session, WorkflowDefinitionLink workflowDefinitionLink,
578         long companyId, OrderByComparator orderByComparator, boolean previous) {
579         StringBundler query = null;
580 
581         if (orderByComparator != null) {
582             query = new StringBundler(6 +
583                     (orderByComparator.getOrderByFields().length * 6));
584         }
585         else {
586             query = new StringBundler(3);
587         }
588 
589         query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE);
590 
591         query.append(_FINDER_COLUMN_COMPANYID_COMPANYID_2);
592 
593         if (orderByComparator != null) {
594             String[] orderByFields = orderByComparator.getOrderByFields();
595 
596             if (orderByFields.length > 0) {
597                 query.append(WHERE_AND);
598             }
599 
600             for (int i = 0; i < orderByFields.length; i++) {
601                 query.append(_ORDER_BY_ENTITY_ALIAS);
602                 query.append(orderByFields[i]);
603 
604                 if ((i + 1) < orderByFields.length) {
605                     if (orderByComparator.isAscending() ^ previous) {
606                         query.append(WHERE_GREATER_THAN_HAS_NEXT);
607                     }
608                     else {
609                         query.append(WHERE_LESSER_THAN_HAS_NEXT);
610                     }
611                 }
612                 else {
613                     if (orderByComparator.isAscending() ^ previous) {
614                         query.append(WHERE_GREATER_THAN);
615                     }
616                     else {
617                         query.append(WHERE_LESSER_THAN);
618                     }
619                 }
620             }
621 
622             query.append(ORDER_BY_CLAUSE);
623 
624             for (int i = 0; i < orderByFields.length; i++) {
625                 query.append(_ORDER_BY_ENTITY_ALIAS);
626                 query.append(orderByFields[i]);
627 
628                 if ((i + 1) < orderByFields.length) {
629                     if (orderByComparator.isAscending() ^ previous) {
630                         query.append(ORDER_BY_ASC_HAS_NEXT);
631                     }
632                     else {
633                         query.append(ORDER_BY_DESC_HAS_NEXT);
634                     }
635                 }
636                 else {
637                     if (orderByComparator.isAscending() ^ previous) {
638                         query.append(ORDER_BY_ASC);
639                     }
640                     else {
641                         query.append(ORDER_BY_DESC);
642                     }
643                 }
644             }
645         }
646 
647         else {
648             query.append(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
649         }
650 
651         String sql = query.toString();
652 
653         Query q = session.createQuery(sql);
654 
655         q.setFirstResult(0);
656         q.setMaxResults(2);
657 
658         QueryPos qPos = QueryPos.getInstance(q);
659 
660         qPos.add(companyId);
661 
662         if (orderByComparator != null) {
663             Object[] values = orderByComparator.getOrderByValues(workflowDefinitionLink);
664 
665             for (Object value : values) {
666                 qPos.add(value);
667             }
668         }
669 
670         List<WorkflowDefinitionLink> list = q.list();
671 
672         if (list.size() == 2) {
673             return list.get(1);
674         }
675         else {
676             return null;
677         }
678     }
679 
680     public WorkflowDefinitionLink findByG_C_C(long groupId, long companyId,
681         long classNameId)
682         throws NoSuchWorkflowDefinitionLinkException, SystemException {
683         WorkflowDefinitionLink workflowDefinitionLink = fetchByG_C_C(groupId,
684                 companyId, classNameId);
685 
686         if (workflowDefinitionLink == null) {
687             StringBundler msg = new StringBundler(8);
688 
689             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
690 
691             msg.append("groupId=");
692             msg.append(groupId);
693 
694             msg.append(", companyId=");
695             msg.append(companyId);
696 
697             msg.append(", classNameId=");
698             msg.append(classNameId);
699 
700             msg.append(StringPool.CLOSE_CURLY_BRACE);
701 
702             if (_log.isWarnEnabled()) {
703                 _log.warn(msg.toString());
704             }
705 
706             throw new NoSuchWorkflowDefinitionLinkException(msg.toString());
707         }
708 
709         return workflowDefinitionLink;
710     }
711 
712     public WorkflowDefinitionLink fetchByG_C_C(long groupId, long companyId,
713         long classNameId) throws SystemException {
714         return fetchByG_C_C(groupId, companyId, classNameId, true);
715     }
716 
717     public WorkflowDefinitionLink fetchByG_C_C(long groupId, long companyId,
718         long classNameId, boolean retrieveFromCache) throws SystemException {
719         Object[] finderArgs = new Object[] {
720                 new Long(groupId), new Long(companyId), new Long(classNameId)
721             };
722 
723         Object result = null;
724 
725         if (retrieveFromCache) {
726             result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_G_C_C,
727                     finderArgs, this);
728         }
729 
730         if (result == null) {
731             Session session = null;
732 
733             try {
734                 session = openSession();
735 
736                 StringBundler query = new StringBundler(5);
737 
738                 query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE);
739 
740                 query.append(_FINDER_COLUMN_G_C_C_GROUPID_2);
741 
742                 query.append(_FINDER_COLUMN_G_C_C_COMPANYID_2);
743 
744                 query.append(_FINDER_COLUMN_G_C_C_CLASSNAMEID_2);
745 
746                 query.append(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
747 
748                 String sql = query.toString();
749 
750                 Query q = session.createQuery(sql);
751 
752                 QueryPos qPos = QueryPos.getInstance(q);
753 
754                 qPos.add(groupId);
755 
756                 qPos.add(companyId);
757 
758                 qPos.add(classNameId);
759 
760                 List<WorkflowDefinitionLink> list = q.list();
761 
762                 result = list;
763 
764                 WorkflowDefinitionLink workflowDefinitionLink = null;
765 
766                 if (list.isEmpty()) {
767                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_C_C,
768                         finderArgs, list);
769                 }
770                 else {
771                     workflowDefinitionLink = list.get(0);
772 
773                     cacheResult(workflowDefinitionLink);
774 
775                     if ((workflowDefinitionLink.getGroupId() != groupId) ||
776                             (workflowDefinitionLink.getCompanyId() != companyId) ||
777                             (workflowDefinitionLink.getClassNameId() != classNameId)) {
778                         FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_C_C,
779                             finderArgs, workflowDefinitionLink);
780                     }
781                 }
782 
783                 return workflowDefinitionLink;
784             }
785             catch (Exception e) {
786                 throw processException(e);
787             }
788             finally {
789                 if (result == null) {
790                     FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_C_C,
791                         finderArgs, new ArrayList<WorkflowDefinitionLink>());
792                 }
793 
794                 closeSession(session);
795             }
796         }
797         else {
798             if (result instanceof List<?>) {
799                 return null;
800             }
801             else {
802                 return (WorkflowDefinitionLink)result;
803             }
804         }
805     }
806 
807     public List<WorkflowDefinitionLink> findByC_W_W(long companyId,
808         String workflowDefinitionName, int workflowDefinitionVersion)
809         throws SystemException {
810         return findByC_W_W(companyId, workflowDefinitionName,
811             workflowDefinitionVersion, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
812             null);
813     }
814 
815     public List<WorkflowDefinitionLink> findByC_W_W(long companyId,
816         String workflowDefinitionName, int workflowDefinitionVersion,
817         int start, int end) throws SystemException {
818         return findByC_W_W(companyId, workflowDefinitionName,
819             workflowDefinitionVersion, start, end, null);
820     }
821 
822     public List<WorkflowDefinitionLink> findByC_W_W(long companyId,
823         String workflowDefinitionName, int workflowDefinitionVersion,
824         int start, int end, OrderByComparator orderByComparator)
825         throws SystemException {
826         Object[] finderArgs = new Object[] {
827                 new Long(companyId),
828                 
829                 workflowDefinitionName, new Integer(workflowDefinitionVersion),
830                 
831                 String.valueOf(start), String.valueOf(end),
832                 String.valueOf(orderByComparator)
833             };
834 
835         List<WorkflowDefinitionLink> list = (List<WorkflowDefinitionLink>)FinderCacheUtil.getResult(FINDER_PATH_FIND_BY_C_W_W,
836                 finderArgs, this);
837 
838         if (list == null) {
839             Session session = null;
840 
841             try {
842                 session = openSession();
843 
844                 StringBundler query = null;
845 
846                 if (orderByComparator != null) {
847                     query = new StringBundler(5 +
848                             (orderByComparator.getOrderByFields().length * 3));
849                 }
850                 else {
851                     query = new StringBundler(5);
852                 }
853 
854                 query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE);
855 
856                 query.append(_FINDER_COLUMN_C_W_W_COMPANYID_2);
857 
858                 if (workflowDefinitionName == null) {
859                     query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_1);
860                 }
861                 else {
862                     if (workflowDefinitionName.equals(StringPool.BLANK)) {
863                         query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_3);
864                     }
865                     else {
866                         query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_2);
867                     }
868                 }
869 
870                 query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONVERSION_2);
871 
872                 if (orderByComparator != null) {
873                     appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
874                         orderByComparator);
875                 }
876 
877                 else {
878                     query.append(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
879                 }
880 
881                 String sql = query.toString();
882 
883                 Query q = session.createQuery(sql);
884 
885                 QueryPos qPos = QueryPos.getInstance(q);
886 
887                 qPos.add(companyId);
888 
889                 if (workflowDefinitionName != null) {
890                     qPos.add(workflowDefinitionName);
891                 }
892 
893                 qPos.add(workflowDefinitionVersion);
894 
895                 list = (List<WorkflowDefinitionLink>)QueryUtil.list(q,
896                         getDialect(), start, end);
897             }
898             catch (Exception e) {
899                 throw processException(e);
900             }
901             finally {
902                 if (list == null) {
903                     list = new ArrayList<WorkflowDefinitionLink>();
904                 }
905 
906                 cacheResult(list);
907 
908                 FinderCacheUtil.putResult(FINDER_PATH_FIND_BY_C_W_W,
909                     finderArgs, list);
910 
911                 closeSession(session);
912             }
913         }
914 
915         return list;
916     }
917 
918     public WorkflowDefinitionLink findByC_W_W_First(long companyId,
919         String workflowDefinitionName, int workflowDefinitionVersion,
920         OrderByComparator orderByComparator)
921         throws NoSuchWorkflowDefinitionLinkException, SystemException {
922         List<WorkflowDefinitionLink> list = findByC_W_W(companyId,
923                 workflowDefinitionName, workflowDefinitionVersion, 0, 1,
924                 orderByComparator);
925 
926         if (list.isEmpty()) {
927             StringBundler msg = new StringBundler(8);
928 
929             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
930 
931             msg.append("companyId=");
932             msg.append(companyId);
933 
934             msg.append(", workflowDefinitionName=");
935             msg.append(workflowDefinitionName);
936 
937             msg.append(", workflowDefinitionVersion=");
938             msg.append(workflowDefinitionVersion);
939 
940             msg.append(StringPool.CLOSE_CURLY_BRACE);
941 
942             throw new NoSuchWorkflowDefinitionLinkException(msg.toString());
943         }
944         else {
945             return list.get(0);
946         }
947     }
948 
949     public WorkflowDefinitionLink findByC_W_W_Last(long companyId,
950         String workflowDefinitionName, int workflowDefinitionVersion,
951         OrderByComparator orderByComparator)
952         throws NoSuchWorkflowDefinitionLinkException, SystemException {
953         int count = countByC_W_W(companyId, workflowDefinitionName,
954                 workflowDefinitionVersion);
955 
956         List<WorkflowDefinitionLink> list = findByC_W_W(companyId,
957                 workflowDefinitionName, workflowDefinitionVersion, count - 1,
958                 count, orderByComparator);
959 
960         if (list.isEmpty()) {
961             StringBundler msg = new StringBundler(8);
962 
963             msg.append(_NO_SUCH_ENTITY_WITH_KEY);
964 
965             msg.append("companyId=");
966             msg.append(companyId);
967 
968             msg.append(", workflowDefinitionName=");
969             msg.append(workflowDefinitionName);
970 
971             msg.append(", workflowDefinitionVersion=");
972             msg.append(workflowDefinitionVersion);
973 
974             msg.append(StringPool.CLOSE_CURLY_BRACE);
975 
976             throw new NoSuchWorkflowDefinitionLinkException(msg.toString());
977         }
978         else {
979             return list.get(0);
980         }
981     }
982 
983     public WorkflowDefinitionLink[] findByC_W_W_PrevAndNext(
984         long workflowDefinitionLinkId, long companyId,
985         String workflowDefinitionName, int workflowDefinitionVersion,
986         OrderByComparator orderByComparator)
987         throws NoSuchWorkflowDefinitionLinkException, SystemException {
988         WorkflowDefinitionLink workflowDefinitionLink = findByPrimaryKey(workflowDefinitionLinkId);
989 
990         Session session = null;
991 
992         try {
993             session = openSession();
994 
995             WorkflowDefinitionLink[] array = new WorkflowDefinitionLinkImpl[3];
996 
997             array[0] = getByC_W_W_PrevAndNext(session, workflowDefinitionLink,
998                     companyId, workflowDefinitionName,
999                     workflowDefinitionVersion, orderByComparator, true);
1000
1001            array[1] = workflowDefinitionLink;
1002
1003            array[2] = getByC_W_W_PrevAndNext(session, workflowDefinitionLink,
1004                    companyId, workflowDefinitionName,
1005                    workflowDefinitionVersion, orderByComparator, false);
1006
1007            return array;
1008        }
1009        catch (Exception e) {
1010            throw processException(e);
1011        }
1012        finally {
1013            closeSession(session);
1014        }
1015    }
1016
1017    protected WorkflowDefinitionLink getByC_W_W_PrevAndNext(Session session,
1018        WorkflowDefinitionLink workflowDefinitionLink, long companyId,
1019        String workflowDefinitionName, int workflowDefinitionVersion,
1020        OrderByComparator orderByComparator, boolean previous) {
1021        StringBundler query = null;
1022
1023        if (orderByComparator != null) {
1024            query = new StringBundler(6 +
1025                    (orderByComparator.getOrderByFields().length * 6));
1026        }
1027        else {
1028            query = new StringBundler(3);
1029        }
1030
1031        query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE);
1032
1033        query.append(_FINDER_COLUMN_C_W_W_COMPANYID_2);
1034
1035        if (workflowDefinitionName == null) {
1036            query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_1);
1037        }
1038        else {
1039            if (workflowDefinitionName.equals(StringPool.BLANK)) {
1040                query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_3);
1041            }
1042            else {
1043                query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_2);
1044            }
1045        }
1046
1047        query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONVERSION_2);
1048
1049        if (orderByComparator != null) {
1050            String[] orderByFields = orderByComparator.getOrderByFields();
1051
1052            if (orderByFields.length > 0) {
1053                query.append(WHERE_AND);
1054            }
1055
1056            for (int i = 0; i < orderByFields.length; i++) {
1057                query.append(_ORDER_BY_ENTITY_ALIAS);
1058                query.append(orderByFields[i]);
1059
1060                if ((i + 1) < orderByFields.length) {
1061                    if (orderByComparator.isAscending() ^ previous) {
1062                        query.append(WHERE_GREATER_THAN_HAS_NEXT);
1063                    }
1064                    else {
1065                        query.append(WHERE_LESSER_THAN_HAS_NEXT);
1066                    }
1067                }
1068                else {
1069                    if (orderByComparator.isAscending() ^ previous) {
1070                        query.append(WHERE_GREATER_THAN);
1071                    }
1072                    else {
1073                        query.append(WHERE_LESSER_THAN);
1074                    }
1075                }
1076            }
1077
1078            query.append(ORDER_BY_CLAUSE);
1079
1080            for (int i = 0; i < orderByFields.length; i++) {
1081                query.append(_ORDER_BY_ENTITY_ALIAS);
1082                query.append(orderByFields[i]);
1083
1084                if ((i + 1) < orderByFields.length) {
1085                    if (orderByComparator.isAscending() ^ previous) {
1086                        query.append(ORDER_BY_ASC_HAS_NEXT);
1087                    }
1088                    else {
1089                        query.append(ORDER_BY_DESC_HAS_NEXT);
1090                    }
1091                }
1092                else {
1093                    if (orderByComparator.isAscending() ^ previous) {
1094                        query.append(ORDER_BY_ASC);
1095                    }
1096                    else {
1097                        query.append(ORDER_BY_DESC);
1098                    }
1099                }
1100            }
1101        }
1102
1103        else {
1104            query.append(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
1105        }
1106
1107        String sql = query.toString();
1108
1109        Query q = session.createQuery(sql);
1110
1111        q.setFirstResult(0);
1112        q.setMaxResults(2);
1113
1114        QueryPos qPos = QueryPos.getInstance(q);
1115
1116        qPos.add(companyId);
1117
1118        if (workflowDefinitionName != null) {
1119            qPos.add(workflowDefinitionName);
1120        }
1121
1122        qPos.add(workflowDefinitionVersion);
1123
1124        if (orderByComparator != null) {
1125            Object[] values = orderByComparator.getOrderByValues(workflowDefinitionLink);
1126
1127            for (Object value : values) {
1128                qPos.add(value);
1129            }
1130        }
1131
1132        List<WorkflowDefinitionLink> list = q.list();
1133
1134        if (list.size() == 2) {
1135            return list.get(1);
1136        }
1137        else {
1138            return null;
1139        }
1140    }
1141
1142    public List<WorkflowDefinitionLink> findAll() throws SystemException {
1143        return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
1144    }
1145
1146    public List<WorkflowDefinitionLink> findAll(int start, int end)
1147        throws SystemException {
1148        return findAll(start, end, null);
1149    }
1150
1151    public List<WorkflowDefinitionLink> findAll(int start, int end,
1152        OrderByComparator orderByComparator) throws SystemException {
1153        Object[] finderArgs = new Object[] {
1154                String.valueOf(start), String.valueOf(end),
1155                String.valueOf(orderByComparator)
1156            };
1157
1158        List<WorkflowDefinitionLink> list = (List<WorkflowDefinitionLink>)FinderCacheUtil.getResult(FINDER_PATH_FIND_ALL,
1159                finderArgs, this);
1160
1161        if (list == null) {
1162            Session session = null;
1163
1164            try {
1165                session = openSession();
1166
1167                StringBundler query = null;
1168                String sql = null;
1169
1170                if (orderByComparator != null) {
1171                    query = new StringBundler(2 +
1172                            (orderByComparator.getOrderByFields().length * 3));
1173
1174                    query.append(_SQL_SELECT_WORKFLOWDEFINITIONLINK);
1175
1176                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
1177                        orderByComparator);
1178
1179                    sql = query.toString();
1180                }
1181
1182                else {
1183                    sql = _SQL_SELECT_WORKFLOWDEFINITIONLINK.concat(WorkflowDefinitionLinkModelImpl.ORDER_BY_JPQL);
1184                }
1185
1186                Query q = session.createQuery(sql);
1187
1188                if (orderByComparator == null) {
1189                    list = (List<WorkflowDefinitionLink>)QueryUtil.list(q,
1190                            getDialect(), start, end, false);
1191
1192                    Collections.sort(list);
1193                }
1194                else {
1195                    list = (List<WorkflowDefinitionLink>)QueryUtil.list(q,
1196                            getDialect(), start, end);
1197                }
1198            }
1199            catch (Exception e) {
1200                throw processException(e);
1201            }
1202            finally {
1203                if (list == null) {
1204                    list = new ArrayList<WorkflowDefinitionLink>();
1205                }
1206
1207                cacheResult(list);
1208
1209                FinderCacheUtil.putResult(FINDER_PATH_FIND_ALL, finderArgs, list);
1210
1211                closeSession(session);
1212            }
1213        }
1214
1215        return list;
1216    }
1217
1218    public void removeByCompanyId(long companyId) throws SystemException {
1219        for (WorkflowDefinitionLink workflowDefinitionLink : findByCompanyId(
1220                companyId)) {
1221            remove(workflowDefinitionLink);
1222        }
1223    }
1224
1225    public void removeByG_C_C(long groupId, long companyId, long classNameId)
1226        throws NoSuchWorkflowDefinitionLinkException, SystemException {
1227        WorkflowDefinitionLink workflowDefinitionLink = findByG_C_C(groupId,
1228                companyId, classNameId);
1229
1230        remove(workflowDefinitionLink);
1231    }
1232
1233    public void removeByC_W_W(long companyId, String workflowDefinitionName,
1234        int workflowDefinitionVersion) throws SystemException {
1235        for (WorkflowDefinitionLink workflowDefinitionLink : findByC_W_W(
1236                companyId, workflowDefinitionName, workflowDefinitionVersion)) {
1237            remove(workflowDefinitionLink);
1238        }
1239    }
1240
1241    public void removeAll() throws SystemException {
1242        for (WorkflowDefinitionLink workflowDefinitionLink : findAll()) {
1243            remove(workflowDefinitionLink);
1244        }
1245    }
1246
1247    public int countByCompanyId(long companyId) throws SystemException {
1248        Object[] finderArgs = new Object[] { new Long(companyId) };
1249
1250        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_COMPANYID,
1251                finderArgs, this);
1252
1253        if (count == null) {
1254            Session session = null;
1255
1256            try {
1257                session = openSession();
1258
1259                StringBundler query = new StringBundler(2);
1260
1261                query.append(_SQL_COUNT_WORKFLOWDEFINITIONLINK_WHERE);
1262
1263                query.append(_FINDER_COLUMN_COMPANYID_COMPANYID_2);
1264
1265                String sql = query.toString();
1266
1267                Query q = session.createQuery(sql);
1268
1269                QueryPos qPos = QueryPos.getInstance(q);
1270
1271                qPos.add(companyId);
1272
1273                count = (Long)q.uniqueResult();
1274            }
1275            catch (Exception e) {
1276                throw processException(e);
1277            }
1278            finally {
1279                if (count == null) {
1280                    count = Long.valueOf(0);
1281                }
1282
1283                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_COMPANYID,
1284                    finderArgs, count);
1285
1286                closeSession(session);
1287            }
1288        }
1289
1290        return count.intValue();
1291    }
1292
1293    public int countByG_C_C(long groupId, long companyId, long classNameId)
1294        throws SystemException {
1295        Object[] finderArgs = new Object[] {
1296                new Long(groupId), new Long(companyId), new Long(classNameId)
1297            };
1298
1299        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_G_C_C,
1300                finderArgs, this);
1301
1302        if (count == null) {
1303            Session session = null;
1304
1305            try {
1306                session = openSession();
1307
1308                StringBundler query = new StringBundler(4);
1309
1310                query.append(_SQL_COUNT_WORKFLOWDEFINITIONLINK_WHERE);
1311
1312                query.append(_FINDER_COLUMN_G_C_C_GROUPID_2);
1313
1314                query.append(_FINDER_COLUMN_G_C_C_COMPANYID_2);
1315
1316                query.append(_FINDER_COLUMN_G_C_C_CLASSNAMEID_2);
1317
1318                String sql = query.toString();
1319
1320                Query q = session.createQuery(sql);
1321
1322                QueryPos qPos = QueryPos.getInstance(q);
1323
1324                qPos.add(groupId);
1325
1326                qPos.add(companyId);
1327
1328                qPos.add(classNameId);
1329
1330                count = (Long)q.uniqueResult();
1331            }
1332            catch (Exception e) {
1333                throw processException(e);
1334            }
1335            finally {
1336                if (count == null) {
1337                    count = Long.valueOf(0);
1338                }
1339
1340                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_C_C,
1341                    finderArgs, count);
1342
1343                closeSession(session);
1344            }
1345        }
1346
1347        return count.intValue();
1348    }
1349
1350    public int countByC_W_W(long companyId, String workflowDefinitionName,
1351        int workflowDefinitionVersion) throws SystemException {
1352        Object[] finderArgs = new Object[] {
1353                new Long(companyId),
1354                
1355                workflowDefinitionName, new Integer(workflowDefinitionVersion)
1356            };
1357
1358        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_BY_C_W_W,
1359                finderArgs, this);
1360
1361        if (count == null) {
1362            Session session = null;
1363
1364            try {
1365                session = openSession();
1366
1367                StringBundler query = new StringBundler(4);
1368
1369                query.append(_SQL_COUNT_WORKFLOWDEFINITIONLINK_WHERE);
1370
1371                query.append(_FINDER_COLUMN_C_W_W_COMPANYID_2);
1372
1373                if (workflowDefinitionName == null) {
1374                    query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_1);
1375                }
1376                else {
1377                    if (workflowDefinitionName.equals(StringPool.BLANK)) {
1378                        query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_3);
1379                    }
1380                    else {
1381                        query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_2);
1382                    }
1383                }
1384
1385                query.append(_FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONVERSION_2);
1386
1387                String sql = query.toString();
1388
1389                Query q = session.createQuery(sql);
1390
1391                QueryPos qPos = QueryPos.getInstance(q);
1392
1393                qPos.add(companyId);
1394
1395                if (workflowDefinitionName != null) {
1396                    qPos.add(workflowDefinitionName);
1397                }
1398
1399                qPos.add(workflowDefinitionVersion);
1400
1401                count = (Long)q.uniqueResult();
1402            }
1403            catch (Exception e) {
1404                throw processException(e);
1405            }
1406            finally {
1407                if (count == null) {
1408                    count = Long.valueOf(0);
1409                }
1410
1411                FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_C_W_W,
1412                    finderArgs, count);
1413
1414                closeSession(session);
1415            }
1416        }
1417
1418        return count.intValue();
1419    }
1420
1421    public int countAll() throws SystemException {
1422        Object[] finderArgs = new Object[0];
1423
1424        Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
1425                finderArgs, this);
1426
1427        if (count == null) {
1428            Session session = null;
1429
1430            try {
1431                session = openSession();
1432
1433                Query q = session.createQuery(_SQL_COUNT_WORKFLOWDEFINITIONLINK);
1434
1435                count = (Long)q.uniqueResult();
1436            }
1437            catch (Exception e) {
1438                throw processException(e);
1439            }
1440            finally {
1441                if (count == null) {
1442                    count = Long.valueOf(0);
1443                }
1444
1445                FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL, finderArgs,
1446                    count);
1447
1448                closeSession(session);
1449            }
1450        }
1451
1452        return count.intValue();
1453    }
1454
1455    public void afterPropertiesSet() {
1456        String[] listenerClassNames = StringUtil.split(GetterUtil.getString(
1457                    com.liferay.portal.util.PropsUtil.get(
1458                        "value.object.listener.com.liferay.portal.model.WorkflowDefinitionLink")));
1459
1460        if (listenerClassNames.length > 0) {
1461            try {
1462                List<ModelListener<WorkflowDefinitionLink>> listenersList = new ArrayList<ModelListener<WorkflowDefinitionLink>>();
1463
1464                for (String listenerClassName : listenerClassNames) {
1465                    listenersList.add((ModelListener<WorkflowDefinitionLink>)InstanceFactory.newInstance(
1466                            listenerClassName));
1467                }
1468
1469                listeners = listenersList.toArray(new ModelListener[listenersList.size()]);
1470            }
1471            catch (Exception e) {
1472                _log.error(e);
1473            }
1474        }
1475    }
1476
1477    @BeanReference(type = AccountPersistence.class)
1478    protected AccountPersistence accountPersistence;
1479    @BeanReference(type = AddressPersistence.class)
1480    protected AddressPersistence addressPersistence;
1481    @BeanReference(type = BrowserTrackerPersistence.class)
1482    protected BrowserTrackerPersistence browserTrackerPersistence;
1483    @BeanReference(type = ClassNamePersistence.class)
1484    protected ClassNamePersistence classNamePersistence;
1485    @BeanReference(type = CompanyPersistence.class)
1486    protected CompanyPersistence companyPersistence;
1487    @BeanReference(type = ContactPersistence.class)
1488    protected ContactPersistence contactPersistence;
1489    @BeanReference(type = CountryPersistence.class)
1490    protected CountryPersistence countryPersistence;
1491    @BeanReference(type = EmailAddressPersistence.class)
1492    protected EmailAddressPersistence emailAddressPersistence;
1493    @BeanReference(type = GroupPersistence.class)
1494    protected GroupPersistence groupPersistence;
1495    @BeanReference(type = ImagePersistence.class)
1496    protected ImagePersistence imagePersistence;
1497    @BeanReference(type = LayoutPersistence.class)
1498    protected LayoutPersistence layoutPersistence;
1499    @BeanReference(type = LayoutPrototypePersistence.class)
1500    protected LayoutPrototypePersistence layoutPrototypePersistence;
1501    @BeanReference(type = LayoutSetPersistence.class)
1502    protected LayoutSetPersistence layoutSetPersistence;
1503    @BeanReference(type = LayoutSetPrototypePersistence.class)
1504    protected LayoutSetPrototypePersistence layoutSetPrototypePersistence;
1505    @BeanReference(type = ListTypePersistence.class)
1506    protected ListTypePersistence listTypePersistence;
1507    @BeanReference(type = LockPersistence.class)
1508    protected LockPersistence lockPersistence;
1509    @BeanReference(type = MembershipRequestPersistence.class)
1510    protected MembershipRequestPersistence membershipRequestPersistence;
1511    @BeanReference(type = OrganizationPersistence.class)
1512    protected OrganizationPersistence organizationPersistence;
1513    @BeanReference(type = OrgGroupPermissionPersistence.class)
1514    protected OrgGroupPermissionPersistence orgGroupPermissionPersistence;
1515    @BeanReference(type = OrgGroupRolePersistence.class)
1516    protected OrgGroupRolePersistence orgGroupRolePersistence;
1517    @BeanReference(type = OrgLaborPersistence.class)
1518    protected OrgLaborPersistence orgLaborPersistence;
1519    @BeanReference(type = PasswordPolicyPersistence.class)
1520    protected PasswordPolicyPersistence passwordPolicyPersistence;
1521    @BeanReference(type = PasswordPolicyRelPersistence.class)
1522    protected PasswordPolicyRelPersistence passwordPolicyRelPersistence;
1523    @BeanReference(type = PasswordTrackerPersistence.class)
1524    protected PasswordTrackerPersistence passwordTrackerPersistence;
1525    @BeanReference(type = PermissionPersistence.class)
1526    protected PermissionPersistence permissionPersistence;
1527    @BeanReference(type = PhonePersistence.class)
1528    protected PhonePersistence phonePersistence;
1529    @BeanReference(type = PluginSettingPersistence.class)
1530    protected PluginSettingPersistence pluginSettingPersistence;
1531    @BeanReference(type = PortletPersistence.class)
1532    protected PortletPersistence portletPersistence;
1533    @BeanReference(type = PortletItemPersistence.class)
1534    protected PortletItemPersistence portletItemPersistence;
1535    @BeanReference(type = PortletPreferencesPersistence.class)
1536    protected PortletPreferencesPersistence portletPreferencesPersistence;
1537    @BeanReference(type = RegionPersistence.class)
1538    protected RegionPersistence regionPersistence;
1539    @BeanReference(type = ReleasePersistence.class)
1540    protected ReleasePersistence releasePersistence;
1541    @BeanReference(type = ResourcePersistence.class)
1542    protected ResourcePersistence resourcePersistence;
1543    @BeanReference(type = ResourceActionPersistence.class)
1544    protected ResourceActionPersistence resourceActionPersistence;
1545    @BeanReference(type = ResourceCodePersistence.class)
1546    protected ResourceCodePersistence resourceCodePersistence;
1547    @BeanReference(type = ResourcePermissionPersistence.class)
1548    protected ResourcePermissionPersistence resourcePermissionPersistence;
1549    @BeanReference(type = RolePersistence.class)
1550    protected RolePersistence rolePersistence;
1551    @BeanReference(type = ServiceComponentPersistence.class)
1552    protected ServiceComponentPersistence serviceComponentPersistence;
1553    @BeanReference(type = ShardPersistence.class)
1554    protected ShardPersistence shardPersistence;
1555    @BeanReference(type = SubscriptionPersistence.class)
1556    protected SubscriptionPersistence subscriptionPersistence;
1557    @BeanReference(type = TicketPersistence.class)
1558    protected TicketPersistence ticketPersistence;
1559    @BeanReference(type = TeamPersistence.class)
1560    protected TeamPersistence teamPersistence;
1561    @BeanReference(type = UserPersistence.class)
1562    protected UserPersistence userPersistence;
1563    @BeanReference(type = UserGroupPersistence.class)
1564    protected UserGroupPersistence userGroupPersistence;
1565    @BeanReference(type = UserGroupGroupRolePersistence.class)
1566    protected UserGroupGroupRolePersistence userGroupGroupRolePersistence;
1567    @BeanReference(type = UserGroupRolePersistence.class)
1568    protected UserGroupRolePersistence userGroupRolePersistence;
1569    @BeanReference(type = UserIdMapperPersistence.class)
1570    protected UserIdMapperPersistence userIdMapperPersistence;
1571    @BeanReference(type = UserTrackerPersistence.class)
1572    protected UserTrackerPersistence userTrackerPersistence;
1573    @BeanReference(type = UserTrackerPathPersistence.class)
1574    protected UserTrackerPathPersistence userTrackerPathPersistence;
1575    @BeanReference(type = WebDAVPropsPersistence.class)
1576    protected WebDAVPropsPersistence webDAVPropsPersistence;
1577    @BeanReference(type = WebsitePersistence.class)
1578    protected WebsitePersistence websitePersistence;
1579    @BeanReference(type = WorkflowDefinitionLinkPersistence.class)
1580    protected WorkflowDefinitionLinkPersistence workflowDefinitionLinkPersistence;
1581    @BeanReference(type = WorkflowInstanceLinkPersistence.class)
1582    protected WorkflowInstanceLinkPersistence workflowInstanceLinkPersistence;
1583    private static final String _SQL_SELECT_WORKFLOWDEFINITIONLINK = "SELECT workflowDefinitionLink FROM WorkflowDefinitionLink workflowDefinitionLink";
1584    private static final String _SQL_SELECT_WORKFLOWDEFINITIONLINK_WHERE = "SELECT workflowDefinitionLink FROM WorkflowDefinitionLink workflowDefinitionLink WHERE ";
1585    private static final String _SQL_COUNT_WORKFLOWDEFINITIONLINK = "SELECT COUNT(workflowDefinitionLink) FROM WorkflowDefinitionLink workflowDefinitionLink";
1586    private static final String _SQL_COUNT_WORKFLOWDEFINITIONLINK_WHERE = "SELECT COUNT(workflowDefinitionLink) FROM WorkflowDefinitionLink workflowDefinitionLink WHERE ";
1587    private static final String _FINDER_COLUMN_COMPANYID_COMPANYID_2 = "workflowDefinitionLink.companyId = ?";
1588    private static final String _FINDER_COLUMN_G_C_C_GROUPID_2 = "workflowDefinitionLink.groupId = ? AND ";
1589    private static final String _FINDER_COLUMN_G_C_C_COMPANYID_2 = "workflowDefinitionLink.companyId = ? AND ";
1590    private static final String _FINDER_COLUMN_G_C_C_CLASSNAMEID_2 = "workflowDefinitionLink.classNameId = ?";
1591    private static final String _FINDER_COLUMN_C_W_W_COMPANYID_2 = "workflowDefinitionLink.companyId = ? AND ";
1592    private static final String _FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_1 = "workflowDefinitionLink.workflowDefinitionName IS NULL AND ";
1593    private static final String _FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_2 = "workflowDefinitionLink.workflowDefinitionName = ? AND ";
1594    private static final String _FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONNAME_3 = "(workflowDefinitionLink.workflowDefinitionName IS NULL OR workflowDefinitionLink.workflowDefinitionName = ?) AND ";
1595    private static final String _FINDER_COLUMN_C_W_W_WORKFLOWDEFINITIONVERSION_2 =
1596        "workflowDefinitionLink.workflowDefinitionVersion = ?";
1597    private static final String _ORDER_BY_ENTITY_ALIAS = "workflowDefinitionLink.";
1598    private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No WorkflowDefinitionLink exists with the primary key ";
1599    private static final String _NO_SUCH_ENTITY_WITH_KEY = "No WorkflowDefinitionLink exists with the key {";
1600    private static Log _log = LogFactoryUtil.getLog(WorkflowDefinitionLinkPersistenceImpl.class);
1601}