001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.social.service.persistence.impl;
016    
017    import aQute.bnd.annotation.ProviderType;
018    
019    import com.liferay.portal.kernel.cache.CacheRegistryUtil;
020    import com.liferay.portal.kernel.dao.orm.EntityCacheUtil;
021    import com.liferay.portal.kernel.dao.orm.FinderCacheUtil;
022    import com.liferay.portal.kernel.dao.orm.FinderPath;
023    import com.liferay.portal.kernel.dao.orm.Query;
024    import com.liferay.portal.kernel.dao.orm.QueryPos;
025    import com.liferay.portal.kernel.dao.orm.QueryUtil;
026    import com.liferay.portal.kernel.dao.orm.Session;
027    import com.liferay.portal.kernel.log.Log;
028    import com.liferay.portal.kernel.log.LogFactoryUtil;
029    import com.liferay.portal.kernel.util.OrderByComparator;
030    import com.liferay.portal.kernel.util.StringBundler;
031    import com.liferay.portal.kernel.util.StringPool;
032    import com.liferay.portal.kernel.util.Validator;
033    import com.liferay.portal.model.CacheModel;
034    import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
035    
036    import com.liferay.portlet.social.NoSuchActivityAchievementException;
037    import com.liferay.portlet.social.model.SocialActivityAchievement;
038    import com.liferay.portlet.social.model.impl.SocialActivityAchievementImpl;
039    import com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl;
040    import com.liferay.portlet.social.service.persistence.SocialActivityAchievementPersistence;
041    
042    import java.io.Serializable;
043    
044    import java.util.Collections;
045    import java.util.HashMap;
046    import java.util.HashSet;
047    import java.util.Iterator;
048    import java.util.List;
049    import java.util.Map;
050    import java.util.Set;
051    
052    /**
053     * The persistence implementation for the social activity achievement service.
054     *
055     * <p>
056     * Caching information and settings can be found in <code>portal.properties</code>
057     * </p>
058     *
059     * @author Brian Wing Shun Chan
060     * @see SocialActivityAchievementPersistence
061     * @see SocialActivityAchievementUtil
062     * @generated
063     */
064    @ProviderType
065    public class SocialActivityAchievementPersistenceImpl
066            extends BasePersistenceImpl<SocialActivityAchievement>
067            implements SocialActivityAchievementPersistence {
068            /*
069             * NOTE FOR DEVELOPERS:
070             *
071             * Never modify or reference this class directly. Always use {@link SocialActivityAchievementUtil} to access the social activity achievement persistence. Modify <code>service.xml</code> and rerun ServiceBuilder to regenerate this class.
072             */
073            public static final String FINDER_CLASS_NAME_ENTITY = SocialActivityAchievementImpl.class.getName();
074            public static final String FINDER_CLASS_NAME_LIST_WITH_PAGINATION = FINDER_CLASS_NAME_ENTITY +
075                    ".List1";
076            public static final String FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION = FINDER_CLASS_NAME_ENTITY +
077                    ".List2";
078            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_ALL = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
079                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
080                            SocialActivityAchievementImpl.class,
081                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findAll", new String[0]);
082            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_ALL = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
083                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
084                            SocialActivityAchievementImpl.class,
085                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findAll", new String[0]);
086            public static final FinderPath FINDER_PATH_COUNT_ALL = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
087                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
088                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "countAll",
089                            new String[0]);
090            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_GROUPID = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
091                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
092                            SocialActivityAchievementImpl.class,
093                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findByGroupId",
094                            new String[] {
095                                    Long.class.getName(),
096                                    
097                            Integer.class.getName(), Integer.class.getName(),
098                                    OrderByComparator.class.getName()
099                            });
100            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_GROUPID =
101                    new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
102                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
103                            SocialActivityAchievementImpl.class,
104                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findByGroupId",
105                            new String[] { Long.class.getName() },
106                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK);
107            public static final FinderPath FINDER_PATH_COUNT_BY_GROUPID = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
108                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
109                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
110                            "countByGroupId", new String[] { Long.class.getName() });
111    
112            /**
113             * Returns all the social activity achievements where groupId = &#63;.
114             *
115             * @param groupId the group ID
116             * @return the matching social activity achievements
117             */
118            @Override
119            public List<SocialActivityAchievement> findByGroupId(long groupId) {
120                    return findByGroupId(groupId, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
121            }
122    
123            /**
124             * Returns a range of all the social activity achievements where groupId = &#63;.
125             *
126             * <p>
127             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
128             * </p>
129             *
130             * @param groupId the group ID
131             * @param start the lower bound of the range of social activity achievements
132             * @param end the upper bound of the range of social activity achievements (not inclusive)
133             * @return the range of matching social activity achievements
134             */
135            @Override
136            public List<SocialActivityAchievement> findByGroupId(long groupId,
137                    int start, int end) {
138                    return findByGroupId(groupId, start, end, null);
139            }
140    
141            /**
142             * Returns an ordered range of all the social activity achievements where groupId = &#63;.
143             *
144             * <p>
145             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
146             * </p>
147             *
148             * @param groupId the group ID
149             * @param start the lower bound of the range of social activity achievements
150             * @param end the upper bound of the range of social activity achievements (not inclusive)
151             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
152             * @return the ordered range of matching social activity achievements
153             */
154            @Override
155            public List<SocialActivityAchievement> findByGroupId(long groupId,
156                    int start, int end,
157                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
158                    boolean pagination = true;
159                    FinderPath finderPath = null;
160                    Object[] finderArgs = null;
161    
162                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
163                                    (orderByComparator == null)) {
164                            pagination = false;
165                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_GROUPID;
166                            finderArgs = new Object[] { groupId };
167                    }
168                    else {
169                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_GROUPID;
170                            finderArgs = new Object[] { groupId, start, end, orderByComparator };
171                    }
172    
173                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
174                                    finderArgs, this);
175    
176                    if ((list != null) && !list.isEmpty()) {
177                            for (SocialActivityAchievement socialActivityAchievement : list) {
178                                    if ((groupId != socialActivityAchievement.getGroupId())) {
179                                            list = null;
180    
181                                            break;
182                                    }
183                            }
184                    }
185    
186                    if (list == null) {
187                            StringBundler query = null;
188    
189                            if (orderByComparator != null) {
190                                    query = new StringBundler(3 +
191                                                    (orderByComparator.getOrderByFields().length * 3));
192                            }
193                            else {
194                                    query = new StringBundler(3);
195                            }
196    
197                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
198    
199                            query.append(_FINDER_COLUMN_GROUPID_GROUPID_2);
200    
201                            if (orderByComparator != null) {
202                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
203                                            orderByComparator);
204                            }
205                            else
206                             if (pagination) {
207                                    query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
208                            }
209    
210                            String sql = query.toString();
211    
212                            Session session = null;
213    
214                            try {
215                                    session = openSession();
216    
217                                    Query q = session.createQuery(sql);
218    
219                                    QueryPos qPos = QueryPos.getInstance(q);
220    
221                                    qPos.add(groupId);
222    
223                                    if (!pagination) {
224                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
225                                                            getDialect(), start, end, false);
226    
227                                            Collections.sort(list);
228    
229                                            list = Collections.unmodifiableList(list);
230                                    }
231                                    else {
232                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
233                                                            getDialect(), start, end);
234                                    }
235    
236                                    cacheResult(list);
237    
238                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
239                            }
240                            catch (Exception e) {
241                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
242    
243                                    throw processException(e);
244                            }
245                            finally {
246                                    closeSession(session);
247                            }
248                    }
249    
250                    return list;
251            }
252    
253            /**
254             * Returns the first social activity achievement in the ordered set where groupId = &#63;.
255             *
256             * @param groupId the group ID
257             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
258             * @return the first matching social activity achievement
259             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
260             */
261            @Override
262            public SocialActivityAchievement findByGroupId_First(long groupId,
263                    OrderByComparator<SocialActivityAchievement> orderByComparator)
264                    throws NoSuchActivityAchievementException {
265                    SocialActivityAchievement socialActivityAchievement = fetchByGroupId_First(groupId,
266                                    orderByComparator);
267    
268                    if (socialActivityAchievement != null) {
269                            return socialActivityAchievement;
270                    }
271    
272                    StringBundler msg = new StringBundler(4);
273    
274                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
275    
276                    msg.append("groupId=");
277                    msg.append(groupId);
278    
279                    msg.append(StringPool.CLOSE_CURLY_BRACE);
280    
281                    throw new NoSuchActivityAchievementException(msg.toString());
282            }
283    
284            /**
285             * Returns the first social activity achievement in the ordered set where groupId = &#63;.
286             *
287             * @param groupId the group ID
288             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
289             * @return the first matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
290             */
291            @Override
292            public SocialActivityAchievement fetchByGroupId_First(long groupId,
293                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
294                    List<SocialActivityAchievement> list = findByGroupId(groupId, 0, 1,
295                                    orderByComparator);
296    
297                    if (!list.isEmpty()) {
298                            return list.get(0);
299                    }
300    
301                    return null;
302            }
303    
304            /**
305             * Returns the last social activity achievement in the ordered set where groupId = &#63;.
306             *
307             * @param groupId the group ID
308             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
309             * @return the last matching social activity achievement
310             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
311             */
312            @Override
313            public SocialActivityAchievement findByGroupId_Last(long groupId,
314                    OrderByComparator<SocialActivityAchievement> orderByComparator)
315                    throws NoSuchActivityAchievementException {
316                    SocialActivityAchievement socialActivityAchievement = fetchByGroupId_Last(groupId,
317                                    orderByComparator);
318    
319                    if (socialActivityAchievement != null) {
320                            return socialActivityAchievement;
321                    }
322    
323                    StringBundler msg = new StringBundler(4);
324    
325                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
326    
327                    msg.append("groupId=");
328                    msg.append(groupId);
329    
330                    msg.append(StringPool.CLOSE_CURLY_BRACE);
331    
332                    throw new NoSuchActivityAchievementException(msg.toString());
333            }
334    
335            /**
336             * Returns the last social activity achievement in the ordered set where groupId = &#63;.
337             *
338             * @param groupId the group ID
339             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
340             * @return the last matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
341             */
342            @Override
343            public SocialActivityAchievement fetchByGroupId_Last(long groupId,
344                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
345                    int count = countByGroupId(groupId);
346    
347                    if (count == 0) {
348                            return null;
349                    }
350    
351                    List<SocialActivityAchievement> list = findByGroupId(groupId,
352                                    count - 1, count, orderByComparator);
353    
354                    if (!list.isEmpty()) {
355                            return list.get(0);
356                    }
357    
358                    return null;
359            }
360    
361            /**
362             * Returns the social activity achievements before and after the current social activity achievement in the ordered set where groupId = &#63;.
363             *
364             * @param activityAchievementId the primary key of the current social activity achievement
365             * @param groupId the group ID
366             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
367             * @return the previous, current, and next social activity achievement
368             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
369             */
370            @Override
371            public SocialActivityAchievement[] findByGroupId_PrevAndNext(
372                    long activityAchievementId, long groupId,
373                    OrderByComparator<SocialActivityAchievement> orderByComparator)
374                    throws NoSuchActivityAchievementException {
375                    SocialActivityAchievement socialActivityAchievement = findByPrimaryKey(activityAchievementId);
376    
377                    Session session = null;
378    
379                    try {
380                            session = openSession();
381    
382                            SocialActivityAchievement[] array = new SocialActivityAchievementImpl[3];
383    
384                            array[0] = getByGroupId_PrevAndNext(session,
385                                            socialActivityAchievement, groupId, orderByComparator, true);
386    
387                            array[1] = socialActivityAchievement;
388    
389                            array[2] = getByGroupId_PrevAndNext(session,
390                                            socialActivityAchievement, groupId, orderByComparator, false);
391    
392                            return array;
393                    }
394                    catch (Exception e) {
395                            throw processException(e);
396                    }
397                    finally {
398                            closeSession(session);
399                    }
400            }
401    
402            protected SocialActivityAchievement getByGroupId_PrevAndNext(
403                    Session session, SocialActivityAchievement socialActivityAchievement,
404                    long groupId,
405                    OrderByComparator<SocialActivityAchievement> orderByComparator,
406                    boolean previous) {
407                    StringBundler query = null;
408    
409                    if (orderByComparator != null) {
410                            query = new StringBundler(6 +
411                                            (orderByComparator.getOrderByFields().length * 6));
412                    }
413                    else {
414                            query = new StringBundler(3);
415                    }
416    
417                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
418    
419                    query.append(_FINDER_COLUMN_GROUPID_GROUPID_2);
420    
421                    if (orderByComparator != null) {
422                            String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
423    
424                            if (orderByConditionFields.length > 0) {
425                                    query.append(WHERE_AND);
426                            }
427    
428                            for (int i = 0; i < orderByConditionFields.length; i++) {
429                                    query.append(_ORDER_BY_ENTITY_ALIAS);
430                                    query.append(orderByConditionFields[i]);
431    
432                                    if ((i + 1) < orderByConditionFields.length) {
433                                            if (orderByComparator.isAscending() ^ previous) {
434                                                    query.append(WHERE_GREATER_THAN_HAS_NEXT);
435                                            }
436                                            else {
437                                                    query.append(WHERE_LESSER_THAN_HAS_NEXT);
438                                            }
439                                    }
440                                    else {
441                                            if (orderByComparator.isAscending() ^ previous) {
442                                                    query.append(WHERE_GREATER_THAN);
443                                            }
444                                            else {
445                                                    query.append(WHERE_LESSER_THAN);
446                                            }
447                                    }
448                            }
449    
450                            query.append(ORDER_BY_CLAUSE);
451    
452                            String[] orderByFields = orderByComparator.getOrderByFields();
453    
454                            for (int i = 0; i < orderByFields.length; i++) {
455                                    query.append(_ORDER_BY_ENTITY_ALIAS);
456                                    query.append(orderByFields[i]);
457    
458                                    if ((i + 1) < orderByFields.length) {
459                                            if (orderByComparator.isAscending() ^ previous) {
460                                                    query.append(ORDER_BY_ASC_HAS_NEXT);
461                                            }
462                                            else {
463                                                    query.append(ORDER_BY_DESC_HAS_NEXT);
464                                            }
465                                    }
466                                    else {
467                                            if (orderByComparator.isAscending() ^ previous) {
468                                                    query.append(ORDER_BY_ASC);
469                                            }
470                                            else {
471                                                    query.append(ORDER_BY_DESC);
472                                            }
473                                    }
474                            }
475                    }
476                    else {
477                            query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
478                    }
479    
480                    String sql = query.toString();
481    
482                    Query q = session.createQuery(sql);
483    
484                    q.setFirstResult(0);
485                    q.setMaxResults(2);
486    
487                    QueryPos qPos = QueryPos.getInstance(q);
488    
489                    qPos.add(groupId);
490    
491                    if (orderByComparator != null) {
492                            Object[] values = orderByComparator.getOrderByConditionValues(socialActivityAchievement);
493    
494                            for (Object value : values) {
495                                    qPos.add(value);
496                            }
497                    }
498    
499                    List<SocialActivityAchievement> list = q.list();
500    
501                    if (list.size() == 2) {
502                            return list.get(1);
503                    }
504                    else {
505                            return null;
506                    }
507            }
508    
509            /**
510             * Removes all the social activity achievements where groupId = &#63; from the database.
511             *
512             * @param groupId the group ID
513             */
514            @Override
515            public void removeByGroupId(long groupId) {
516                    for (SocialActivityAchievement socialActivityAchievement : findByGroupId(
517                                    groupId, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null)) {
518                            remove(socialActivityAchievement);
519                    }
520            }
521    
522            /**
523             * Returns the number of social activity achievements where groupId = &#63;.
524             *
525             * @param groupId the group ID
526             * @return the number of matching social activity achievements
527             */
528            @Override
529            public int countByGroupId(long groupId) {
530                    FinderPath finderPath = FINDER_PATH_COUNT_BY_GROUPID;
531    
532                    Object[] finderArgs = new Object[] { groupId };
533    
534                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
535                                    this);
536    
537                    if (count == null) {
538                            StringBundler query = new StringBundler(2);
539    
540                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
541    
542                            query.append(_FINDER_COLUMN_GROUPID_GROUPID_2);
543    
544                            String sql = query.toString();
545    
546                            Session session = null;
547    
548                            try {
549                                    session = openSession();
550    
551                                    Query q = session.createQuery(sql);
552    
553                                    QueryPos qPos = QueryPos.getInstance(q);
554    
555                                    qPos.add(groupId);
556    
557                                    count = (Long)q.uniqueResult();
558    
559                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
560                            }
561                            catch (Exception e) {
562                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
563    
564                                    throw processException(e);
565                            }
566                            finally {
567                                    closeSession(session);
568                            }
569                    }
570    
571                    return count.intValue();
572            }
573    
574            private static final String _FINDER_COLUMN_GROUPID_GROUPID_2 = "socialActivityAchievement.groupId = ?";
575            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_G_U = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
576                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
577                            SocialActivityAchievementImpl.class,
578                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findByG_U",
579                            new String[] {
580                                    Long.class.getName(), Long.class.getName(),
581                                    
582                            Integer.class.getName(), Integer.class.getName(),
583                                    OrderByComparator.class.getName()
584                            });
585            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
586                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
587                            SocialActivityAchievementImpl.class,
588                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findByG_U",
589                            new String[] { Long.class.getName(), Long.class.getName() },
590                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK |
591                            SocialActivityAchievementModelImpl.USERID_COLUMN_BITMASK);
592            public static final FinderPath FINDER_PATH_COUNT_BY_G_U = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
593                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
594                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
595                            "countByG_U",
596                            new String[] { Long.class.getName(), Long.class.getName() });
597    
598            /**
599             * Returns all the social activity achievements where groupId = &#63; and userId = &#63;.
600             *
601             * @param groupId the group ID
602             * @param userId the user ID
603             * @return the matching social activity achievements
604             */
605            @Override
606            public List<SocialActivityAchievement> findByG_U(long groupId, long userId) {
607                    return findByG_U(groupId, userId, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
608                            null);
609            }
610    
611            /**
612             * Returns a range of all the social activity achievements where groupId = &#63; and userId = &#63;.
613             *
614             * <p>
615             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
616             * </p>
617             *
618             * @param groupId the group ID
619             * @param userId the user ID
620             * @param start the lower bound of the range of social activity achievements
621             * @param end the upper bound of the range of social activity achievements (not inclusive)
622             * @return the range of matching social activity achievements
623             */
624            @Override
625            public List<SocialActivityAchievement> findByG_U(long groupId, long userId,
626                    int start, int end) {
627                    return findByG_U(groupId, userId, start, end, null);
628            }
629    
630            /**
631             * Returns an ordered range of all the social activity achievements where groupId = &#63; and userId = &#63;.
632             *
633             * <p>
634             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
635             * </p>
636             *
637             * @param groupId the group ID
638             * @param userId the user ID
639             * @param start the lower bound of the range of social activity achievements
640             * @param end the upper bound of the range of social activity achievements (not inclusive)
641             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
642             * @return the ordered range of matching social activity achievements
643             */
644            @Override
645            public List<SocialActivityAchievement> findByG_U(long groupId, long userId,
646                    int start, int end,
647                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
648                    boolean pagination = true;
649                    FinderPath finderPath = null;
650                    Object[] finderArgs = null;
651    
652                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
653                                    (orderByComparator == null)) {
654                            pagination = false;
655                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U;
656                            finderArgs = new Object[] { groupId, userId };
657                    }
658                    else {
659                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_G_U;
660                            finderArgs = new Object[] {
661                                            groupId, userId,
662                                            
663                                            start, end, orderByComparator
664                                    };
665                    }
666    
667                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
668                                    finderArgs, this);
669    
670                    if ((list != null) && !list.isEmpty()) {
671                            for (SocialActivityAchievement socialActivityAchievement : list) {
672                                    if ((groupId != socialActivityAchievement.getGroupId()) ||
673                                                    (userId != socialActivityAchievement.getUserId())) {
674                                            list = null;
675    
676                                            break;
677                                    }
678                            }
679                    }
680    
681                    if (list == null) {
682                            StringBundler query = null;
683    
684                            if (orderByComparator != null) {
685                                    query = new StringBundler(4 +
686                                                    (orderByComparator.getOrderByFields().length * 3));
687                            }
688                            else {
689                                    query = new StringBundler(4);
690                            }
691    
692                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
693    
694                            query.append(_FINDER_COLUMN_G_U_GROUPID_2);
695    
696                            query.append(_FINDER_COLUMN_G_U_USERID_2);
697    
698                            if (orderByComparator != null) {
699                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
700                                            orderByComparator);
701                            }
702                            else
703                             if (pagination) {
704                                    query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
705                            }
706    
707                            String sql = query.toString();
708    
709                            Session session = null;
710    
711                            try {
712                                    session = openSession();
713    
714                                    Query q = session.createQuery(sql);
715    
716                                    QueryPos qPos = QueryPos.getInstance(q);
717    
718                                    qPos.add(groupId);
719    
720                                    qPos.add(userId);
721    
722                                    if (!pagination) {
723                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
724                                                            getDialect(), start, end, false);
725    
726                                            Collections.sort(list);
727    
728                                            list = Collections.unmodifiableList(list);
729                                    }
730                                    else {
731                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
732                                                            getDialect(), start, end);
733                                    }
734    
735                                    cacheResult(list);
736    
737                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
738                            }
739                            catch (Exception e) {
740                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
741    
742                                    throw processException(e);
743                            }
744                            finally {
745                                    closeSession(session);
746                            }
747                    }
748    
749                    return list;
750            }
751    
752            /**
753             * Returns the first social activity achievement in the ordered set where groupId = &#63; and userId = &#63;.
754             *
755             * @param groupId the group ID
756             * @param userId the user ID
757             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
758             * @return the first matching social activity achievement
759             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
760             */
761            @Override
762            public SocialActivityAchievement findByG_U_First(long groupId, long userId,
763                    OrderByComparator<SocialActivityAchievement> orderByComparator)
764                    throws NoSuchActivityAchievementException {
765                    SocialActivityAchievement socialActivityAchievement = fetchByG_U_First(groupId,
766                                    userId, orderByComparator);
767    
768                    if (socialActivityAchievement != null) {
769                            return socialActivityAchievement;
770                    }
771    
772                    StringBundler msg = new StringBundler(6);
773    
774                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
775    
776                    msg.append("groupId=");
777                    msg.append(groupId);
778    
779                    msg.append(", userId=");
780                    msg.append(userId);
781    
782                    msg.append(StringPool.CLOSE_CURLY_BRACE);
783    
784                    throw new NoSuchActivityAchievementException(msg.toString());
785            }
786    
787            /**
788             * Returns the first social activity achievement in the ordered set where groupId = &#63; and userId = &#63;.
789             *
790             * @param groupId the group ID
791             * @param userId the user ID
792             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
793             * @return the first matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
794             */
795            @Override
796            public SocialActivityAchievement fetchByG_U_First(long groupId,
797                    long userId,
798                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
799                    List<SocialActivityAchievement> list = findByG_U(groupId, userId, 0, 1,
800                                    orderByComparator);
801    
802                    if (!list.isEmpty()) {
803                            return list.get(0);
804                    }
805    
806                    return null;
807            }
808    
809            /**
810             * Returns the last social activity achievement in the ordered set where groupId = &#63; and userId = &#63;.
811             *
812             * @param groupId the group ID
813             * @param userId the user ID
814             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
815             * @return the last matching social activity achievement
816             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
817             */
818            @Override
819            public SocialActivityAchievement findByG_U_Last(long groupId, long userId,
820                    OrderByComparator<SocialActivityAchievement> orderByComparator)
821                    throws NoSuchActivityAchievementException {
822                    SocialActivityAchievement socialActivityAchievement = fetchByG_U_Last(groupId,
823                                    userId, orderByComparator);
824    
825                    if (socialActivityAchievement != null) {
826                            return socialActivityAchievement;
827                    }
828    
829                    StringBundler msg = new StringBundler(6);
830    
831                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
832    
833                    msg.append("groupId=");
834                    msg.append(groupId);
835    
836                    msg.append(", userId=");
837                    msg.append(userId);
838    
839                    msg.append(StringPool.CLOSE_CURLY_BRACE);
840    
841                    throw new NoSuchActivityAchievementException(msg.toString());
842            }
843    
844            /**
845             * Returns the last social activity achievement in the ordered set where groupId = &#63; and userId = &#63;.
846             *
847             * @param groupId the group ID
848             * @param userId the user ID
849             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
850             * @return the last matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
851             */
852            @Override
853            public SocialActivityAchievement fetchByG_U_Last(long groupId, long userId,
854                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
855                    int count = countByG_U(groupId, userId);
856    
857                    if (count == 0) {
858                            return null;
859                    }
860    
861                    List<SocialActivityAchievement> list = findByG_U(groupId, userId,
862                                    count - 1, count, orderByComparator);
863    
864                    if (!list.isEmpty()) {
865                            return list.get(0);
866                    }
867    
868                    return null;
869            }
870    
871            /**
872             * Returns the social activity achievements before and after the current social activity achievement in the ordered set where groupId = &#63; and userId = &#63;.
873             *
874             * @param activityAchievementId the primary key of the current social activity achievement
875             * @param groupId the group ID
876             * @param userId the user ID
877             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
878             * @return the previous, current, and next social activity achievement
879             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
880             */
881            @Override
882            public SocialActivityAchievement[] findByG_U_PrevAndNext(
883                    long activityAchievementId, long groupId, long userId,
884                    OrderByComparator<SocialActivityAchievement> orderByComparator)
885                    throws NoSuchActivityAchievementException {
886                    SocialActivityAchievement socialActivityAchievement = findByPrimaryKey(activityAchievementId);
887    
888                    Session session = null;
889    
890                    try {
891                            session = openSession();
892    
893                            SocialActivityAchievement[] array = new SocialActivityAchievementImpl[3];
894    
895                            array[0] = getByG_U_PrevAndNext(session, socialActivityAchievement,
896                                            groupId, userId, orderByComparator, true);
897    
898                            array[1] = socialActivityAchievement;
899    
900                            array[2] = getByG_U_PrevAndNext(session, socialActivityAchievement,
901                                            groupId, userId, orderByComparator, false);
902    
903                            return array;
904                    }
905                    catch (Exception e) {
906                            throw processException(e);
907                    }
908                    finally {
909                            closeSession(session);
910                    }
911            }
912    
913            protected SocialActivityAchievement getByG_U_PrevAndNext(Session session,
914                    SocialActivityAchievement socialActivityAchievement, long groupId,
915                    long userId,
916                    OrderByComparator<SocialActivityAchievement> orderByComparator,
917                    boolean previous) {
918                    StringBundler query = null;
919    
920                    if (orderByComparator != null) {
921                            query = new StringBundler(6 +
922                                            (orderByComparator.getOrderByFields().length * 6));
923                    }
924                    else {
925                            query = new StringBundler(3);
926                    }
927    
928                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
929    
930                    query.append(_FINDER_COLUMN_G_U_GROUPID_2);
931    
932                    query.append(_FINDER_COLUMN_G_U_USERID_2);
933    
934                    if (orderByComparator != null) {
935                            String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
936    
937                            if (orderByConditionFields.length > 0) {
938                                    query.append(WHERE_AND);
939                            }
940    
941                            for (int i = 0; i < orderByConditionFields.length; i++) {
942                                    query.append(_ORDER_BY_ENTITY_ALIAS);
943                                    query.append(orderByConditionFields[i]);
944    
945                                    if ((i + 1) < orderByConditionFields.length) {
946                                            if (orderByComparator.isAscending() ^ previous) {
947                                                    query.append(WHERE_GREATER_THAN_HAS_NEXT);
948                                            }
949                                            else {
950                                                    query.append(WHERE_LESSER_THAN_HAS_NEXT);
951                                            }
952                                    }
953                                    else {
954                                            if (orderByComparator.isAscending() ^ previous) {
955                                                    query.append(WHERE_GREATER_THAN);
956                                            }
957                                            else {
958                                                    query.append(WHERE_LESSER_THAN);
959                                            }
960                                    }
961                            }
962    
963                            query.append(ORDER_BY_CLAUSE);
964    
965                            String[] orderByFields = orderByComparator.getOrderByFields();
966    
967                            for (int i = 0; i < orderByFields.length; i++) {
968                                    query.append(_ORDER_BY_ENTITY_ALIAS);
969                                    query.append(orderByFields[i]);
970    
971                                    if ((i + 1) < orderByFields.length) {
972                                            if (orderByComparator.isAscending() ^ previous) {
973                                                    query.append(ORDER_BY_ASC_HAS_NEXT);
974                                            }
975                                            else {
976                                                    query.append(ORDER_BY_DESC_HAS_NEXT);
977                                            }
978                                    }
979                                    else {
980                                            if (orderByComparator.isAscending() ^ previous) {
981                                                    query.append(ORDER_BY_ASC);
982                                            }
983                                            else {
984                                                    query.append(ORDER_BY_DESC);
985                                            }
986                                    }
987                            }
988                    }
989                    else {
990                            query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
991                    }
992    
993                    String sql = query.toString();
994    
995                    Query q = session.createQuery(sql);
996    
997                    q.setFirstResult(0);
998                    q.setMaxResults(2);
999    
1000                    QueryPos qPos = QueryPos.getInstance(q);
1001    
1002                    qPos.add(groupId);
1003    
1004                    qPos.add(userId);
1005    
1006                    if (orderByComparator != null) {
1007                            Object[] values = orderByComparator.getOrderByConditionValues(socialActivityAchievement);
1008    
1009                            for (Object value : values) {
1010                                    qPos.add(value);
1011                            }
1012                    }
1013    
1014                    List<SocialActivityAchievement> list = q.list();
1015    
1016                    if (list.size() == 2) {
1017                            return list.get(1);
1018                    }
1019                    else {
1020                            return null;
1021                    }
1022            }
1023    
1024            /**
1025             * Removes all the social activity achievements where groupId = &#63; and userId = &#63; from the database.
1026             *
1027             * @param groupId the group ID
1028             * @param userId the user ID
1029             */
1030            @Override
1031            public void removeByG_U(long groupId, long userId) {
1032                    for (SocialActivityAchievement socialActivityAchievement : findByG_U(
1033                                    groupId, userId, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null)) {
1034                            remove(socialActivityAchievement);
1035                    }
1036            }
1037    
1038            /**
1039             * Returns the number of social activity achievements where groupId = &#63; and userId = &#63;.
1040             *
1041             * @param groupId the group ID
1042             * @param userId the user ID
1043             * @return the number of matching social activity achievements
1044             */
1045            @Override
1046            public int countByG_U(long groupId, long userId) {
1047                    FinderPath finderPath = FINDER_PATH_COUNT_BY_G_U;
1048    
1049                    Object[] finderArgs = new Object[] { groupId, userId };
1050    
1051                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
1052                                    this);
1053    
1054                    if (count == null) {
1055                            StringBundler query = new StringBundler(3);
1056    
1057                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
1058    
1059                            query.append(_FINDER_COLUMN_G_U_GROUPID_2);
1060    
1061                            query.append(_FINDER_COLUMN_G_U_USERID_2);
1062    
1063                            String sql = query.toString();
1064    
1065                            Session session = null;
1066    
1067                            try {
1068                                    session = openSession();
1069    
1070                                    Query q = session.createQuery(sql);
1071    
1072                                    QueryPos qPos = QueryPos.getInstance(q);
1073    
1074                                    qPos.add(groupId);
1075    
1076                                    qPos.add(userId);
1077    
1078                                    count = (Long)q.uniqueResult();
1079    
1080                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
1081                            }
1082                            catch (Exception e) {
1083                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
1084    
1085                                    throw processException(e);
1086                            }
1087                            finally {
1088                                    closeSession(session);
1089                            }
1090                    }
1091    
1092                    return count.intValue();
1093            }
1094    
1095            private static final String _FINDER_COLUMN_G_U_GROUPID_2 = "socialActivityAchievement.groupId = ? AND ";
1096            private static final String _FINDER_COLUMN_G_U_USERID_2 = "socialActivityAchievement.userId = ?";
1097            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_G_N = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1098                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1099                            SocialActivityAchievementImpl.class,
1100                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findByG_N",
1101                            new String[] {
1102                                    Long.class.getName(), String.class.getName(),
1103                                    
1104                            Integer.class.getName(), Integer.class.getName(),
1105                                    OrderByComparator.class.getName()
1106                            });
1107            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_N = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1108                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1109                            SocialActivityAchievementImpl.class,
1110                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findByG_N",
1111                            new String[] { Long.class.getName(), String.class.getName() },
1112                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK |
1113                            SocialActivityAchievementModelImpl.NAME_COLUMN_BITMASK);
1114            public static final FinderPath FINDER_PATH_COUNT_BY_G_N = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1115                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1116                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
1117                            "countByG_N",
1118                            new String[] { Long.class.getName(), String.class.getName() });
1119    
1120            /**
1121             * Returns all the social activity achievements where groupId = &#63; and name = &#63;.
1122             *
1123             * @param groupId the group ID
1124             * @param name the name
1125             * @return the matching social activity achievements
1126             */
1127            @Override
1128            public List<SocialActivityAchievement> findByG_N(long groupId, String name) {
1129                    return findByG_N(groupId, name, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
1130                            null);
1131            }
1132    
1133            /**
1134             * Returns a range of all the social activity achievements where groupId = &#63; and name = &#63;.
1135             *
1136             * <p>
1137             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
1138             * </p>
1139             *
1140             * @param groupId the group ID
1141             * @param name the name
1142             * @param start the lower bound of the range of social activity achievements
1143             * @param end the upper bound of the range of social activity achievements (not inclusive)
1144             * @return the range of matching social activity achievements
1145             */
1146            @Override
1147            public List<SocialActivityAchievement> findByG_N(long groupId, String name,
1148                    int start, int end) {
1149                    return findByG_N(groupId, name, start, end, null);
1150            }
1151    
1152            /**
1153             * Returns an ordered range of all the social activity achievements where groupId = &#63; and name = &#63;.
1154             *
1155             * <p>
1156             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
1157             * </p>
1158             *
1159             * @param groupId the group ID
1160             * @param name the name
1161             * @param start the lower bound of the range of social activity achievements
1162             * @param end the upper bound of the range of social activity achievements (not inclusive)
1163             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
1164             * @return the ordered range of matching social activity achievements
1165             */
1166            @Override
1167            public List<SocialActivityAchievement> findByG_N(long groupId, String name,
1168                    int start, int end,
1169                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1170                    boolean pagination = true;
1171                    FinderPath finderPath = null;
1172                    Object[] finderArgs = null;
1173    
1174                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
1175                                    (orderByComparator == null)) {
1176                            pagination = false;
1177                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_N;
1178                            finderArgs = new Object[] { groupId, name };
1179                    }
1180                    else {
1181                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_G_N;
1182                            finderArgs = new Object[] {
1183                                            groupId, name,
1184                                            
1185                                            start, end, orderByComparator
1186                                    };
1187                    }
1188    
1189                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
1190                                    finderArgs, this);
1191    
1192                    if ((list != null) && !list.isEmpty()) {
1193                            for (SocialActivityAchievement socialActivityAchievement : list) {
1194                                    if ((groupId != socialActivityAchievement.getGroupId()) ||
1195                                                    !Validator.equals(name,
1196                                                            socialActivityAchievement.getName())) {
1197                                            list = null;
1198    
1199                                            break;
1200                                    }
1201                            }
1202                    }
1203    
1204                    if (list == null) {
1205                            StringBundler query = null;
1206    
1207                            if (orderByComparator != null) {
1208                                    query = new StringBundler(4 +
1209                                                    (orderByComparator.getOrderByFields().length * 3));
1210                            }
1211                            else {
1212                                    query = new StringBundler(4);
1213                            }
1214    
1215                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
1216    
1217                            query.append(_FINDER_COLUMN_G_N_GROUPID_2);
1218    
1219                            boolean bindName = false;
1220    
1221                            if (name == null) {
1222                                    query.append(_FINDER_COLUMN_G_N_NAME_1);
1223                            }
1224                            else if (name.equals(StringPool.BLANK)) {
1225                                    query.append(_FINDER_COLUMN_G_N_NAME_3);
1226                            }
1227                            else {
1228                                    bindName = true;
1229    
1230                                    query.append(_FINDER_COLUMN_G_N_NAME_2);
1231                            }
1232    
1233                            if (orderByComparator != null) {
1234                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
1235                                            orderByComparator);
1236                            }
1237                            else
1238                             if (pagination) {
1239                                    query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
1240                            }
1241    
1242                            String sql = query.toString();
1243    
1244                            Session session = null;
1245    
1246                            try {
1247                                    session = openSession();
1248    
1249                                    Query q = session.createQuery(sql);
1250    
1251                                    QueryPos qPos = QueryPos.getInstance(q);
1252    
1253                                    qPos.add(groupId);
1254    
1255                                    if (bindName) {
1256                                            qPos.add(name);
1257                                    }
1258    
1259                                    if (!pagination) {
1260                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
1261                                                            getDialect(), start, end, false);
1262    
1263                                            Collections.sort(list);
1264    
1265                                            list = Collections.unmodifiableList(list);
1266                                    }
1267                                    else {
1268                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
1269                                                            getDialect(), start, end);
1270                                    }
1271    
1272                                    cacheResult(list);
1273    
1274                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
1275                            }
1276                            catch (Exception e) {
1277                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
1278    
1279                                    throw processException(e);
1280                            }
1281                            finally {
1282                                    closeSession(session);
1283                            }
1284                    }
1285    
1286                    return list;
1287            }
1288    
1289            /**
1290             * Returns the first social activity achievement in the ordered set where groupId = &#63; and name = &#63;.
1291             *
1292             * @param groupId the group ID
1293             * @param name the name
1294             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1295             * @return the first matching social activity achievement
1296             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
1297             */
1298            @Override
1299            public SocialActivityAchievement findByG_N_First(long groupId, String name,
1300                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1301                    throws NoSuchActivityAchievementException {
1302                    SocialActivityAchievement socialActivityAchievement = fetchByG_N_First(groupId,
1303                                    name, orderByComparator);
1304    
1305                    if (socialActivityAchievement != null) {
1306                            return socialActivityAchievement;
1307                    }
1308    
1309                    StringBundler msg = new StringBundler(6);
1310    
1311                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
1312    
1313                    msg.append("groupId=");
1314                    msg.append(groupId);
1315    
1316                    msg.append(", name=");
1317                    msg.append(name);
1318    
1319                    msg.append(StringPool.CLOSE_CURLY_BRACE);
1320    
1321                    throw new NoSuchActivityAchievementException(msg.toString());
1322            }
1323    
1324            /**
1325             * Returns the first social activity achievement in the ordered set where groupId = &#63; and name = &#63;.
1326             *
1327             * @param groupId the group ID
1328             * @param name the name
1329             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1330             * @return the first matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
1331             */
1332            @Override
1333            public SocialActivityAchievement fetchByG_N_First(long groupId,
1334                    String name,
1335                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1336                    List<SocialActivityAchievement> list = findByG_N(groupId, name, 0, 1,
1337                                    orderByComparator);
1338    
1339                    if (!list.isEmpty()) {
1340                            return list.get(0);
1341                    }
1342    
1343                    return null;
1344            }
1345    
1346            /**
1347             * Returns the last social activity achievement in the ordered set where groupId = &#63; and name = &#63;.
1348             *
1349             * @param groupId the group ID
1350             * @param name the name
1351             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1352             * @return the last matching social activity achievement
1353             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
1354             */
1355            @Override
1356            public SocialActivityAchievement findByG_N_Last(long groupId, String name,
1357                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1358                    throws NoSuchActivityAchievementException {
1359                    SocialActivityAchievement socialActivityAchievement = fetchByG_N_Last(groupId,
1360                                    name, orderByComparator);
1361    
1362                    if (socialActivityAchievement != null) {
1363                            return socialActivityAchievement;
1364                    }
1365    
1366                    StringBundler msg = new StringBundler(6);
1367    
1368                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
1369    
1370                    msg.append("groupId=");
1371                    msg.append(groupId);
1372    
1373                    msg.append(", name=");
1374                    msg.append(name);
1375    
1376                    msg.append(StringPool.CLOSE_CURLY_BRACE);
1377    
1378                    throw new NoSuchActivityAchievementException(msg.toString());
1379            }
1380    
1381            /**
1382             * Returns the last social activity achievement in the ordered set where groupId = &#63; and name = &#63;.
1383             *
1384             * @param groupId the group ID
1385             * @param name the name
1386             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1387             * @return the last matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
1388             */
1389            @Override
1390            public SocialActivityAchievement fetchByG_N_Last(long groupId, String name,
1391                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1392                    int count = countByG_N(groupId, name);
1393    
1394                    if (count == 0) {
1395                            return null;
1396                    }
1397    
1398                    List<SocialActivityAchievement> list = findByG_N(groupId, name,
1399                                    count - 1, count, orderByComparator);
1400    
1401                    if (!list.isEmpty()) {
1402                            return list.get(0);
1403                    }
1404    
1405                    return null;
1406            }
1407    
1408            /**
1409             * Returns the social activity achievements before and after the current social activity achievement in the ordered set where groupId = &#63; and name = &#63;.
1410             *
1411             * @param activityAchievementId the primary key of the current social activity achievement
1412             * @param groupId the group ID
1413             * @param name the name
1414             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1415             * @return the previous, current, and next social activity achievement
1416             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
1417             */
1418            @Override
1419            public SocialActivityAchievement[] findByG_N_PrevAndNext(
1420                    long activityAchievementId, long groupId, String name,
1421                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1422                    throws NoSuchActivityAchievementException {
1423                    SocialActivityAchievement socialActivityAchievement = findByPrimaryKey(activityAchievementId);
1424    
1425                    Session session = null;
1426    
1427                    try {
1428                            session = openSession();
1429    
1430                            SocialActivityAchievement[] array = new SocialActivityAchievementImpl[3];
1431    
1432                            array[0] = getByG_N_PrevAndNext(session, socialActivityAchievement,
1433                                            groupId, name, orderByComparator, true);
1434    
1435                            array[1] = socialActivityAchievement;
1436    
1437                            array[2] = getByG_N_PrevAndNext(session, socialActivityAchievement,
1438                                            groupId, name, orderByComparator, false);
1439    
1440                            return array;
1441                    }
1442                    catch (Exception e) {
1443                            throw processException(e);
1444                    }
1445                    finally {
1446                            closeSession(session);
1447                    }
1448            }
1449    
1450            protected SocialActivityAchievement getByG_N_PrevAndNext(Session session,
1451                    SocialActivityAchievement socialActivityAchievement, long groupId,
1452                    String name,
1453                    OrderByComparator<SocialActivityAchievement> orderByComparator,
1454                    boolean previous) {
1455                    StringBundler query = null;
1456    
1457                    if (orderByComparator != null) {
1458                            query = new StringBundler(6 +
1459                                            (orderByComparator.getOrderByFields().length * 6));
1460                    }
1461                    else {
1462                            query = new StringBundler(3);
1463                    }
1464    
1465                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
1466    
1467                    query.append(_FINDER_COLUMN_G_N_GROUPID_2);
1468    
1469                    boolean bindName = false;
1470    
1471                    if (name == null) {
1472                            query.append(_FINDER_COLUMN_G_N_NAME_1);
1473                    }
1474                    else if (name.equals(StringPool.BLANK)) {
1475                            query.append(_FINDER_COLUMN_G_N_NAME_3);
1476                    }
1477                    else {
1478                            bindName = true;
1479    
1480                            query.append(_FINDER_COLUMN_G_N_NAME_2);
1481                    }
1482    
1483                    if (orderByComparator != null) {
1484                            String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
1485    
1486                            if (orderByConditionFields.length > 0) {
1487                                    query.append(WHERE_AND);
1488                            }
1489    
1490                            for (int i = 0; i < orderByConditionFields.length; i++) {
1491                                    query.append(_ORDER_BY_ENTITY_ALIAS);
1492                                    query.append(orderByConditionFields[i]);
1493    
1494                                    if ((i + 1) < orderByConditionFields.length) {
1495                                            if (orderByComparator.isAscending() ^ previous) {
1496                                                    query.append(WHERE_GREATER_THAN_HAS_NEXT);
1497                                            }
1498                                            else {
1499                                                    query.append(WHERE_LESSER_THAN_HAS_NEXT);
1500                                            }
1501                                    }
1502                                    else {
1503                                            if (orderByComparator.isAscending() ^ previous) {
1504                                                    query.append(WHERE_GREATER_THAN);
1505                                            }
1506                                            else {
1507                                                    query.append(WHERE_LESSER_THAN);
1508                                            }
1509                                    }
1510                            }
1511    
1512                            query.append(ORDER_BY_CLAUSE);
1513    
1514                            String[] orderByFields = orderByComparator.getOrderByFields();
1515    
1516                            for (int i = 0; i < orderByFields.length; i++) {
1517                                    query.append(_ORDER_BY_ENTITY_ALIAS);
1518                                    query.append(orderByFields[i]);
1519    
1520                                    if ((i + 1) < orderByFields.length) {
1521                                            if (orderByComparator.isAscending() ^ previous) {
1522                                                    query.append(ORDER_BY_ASC_HAS_NEXT);
1523                                            }
1524                                            else {
1525                                                    query.append(ORDER_BY_DESC_HAS_NEXT);
1526                                            }
1527                                    }
1528                                    else {
1529                                            if (orderByComparator.isAscending() ^ previous) {
1530                                                    query.append(ORDER_BY_ASC);
1531                                            }
1532                                            else {
1533                                                    query.append(ORDER_BY_DESC);
1534                                            }
1535                                    }
1536                            }
1537                    }
1538                    else {
1539                            query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
1540                    }
1541    
1542                    String sql = query.toString();
1543    
1544                    Query q = session.createQuery(sql);
1545    
1546                    q.setFirstResult(0);
1547                    q.setMaxResults(2);
1548    
1549                    QueryPos qPos = QueryPos.getInstance(q);
1550    
1551                    qPos.add(groupId);
1552    
1553                    if (bindName) {
1554                            qPos.add(name);
1555                    }
1556    
1557                    if (orderByComparator != null) {
1558                            Object[] values = orderByComparator.getOrderByConditionValues(socialActivityAchievement);
1559    
1560                            for (Object value : values) {
1561                                    qPos.add(value);
1562                            }
1563                    }
1564    
1565                    List<SocialActivityAchievement> list = q.list();
1566    
1567                    if (list.size() == 2) {
1568                            return list.get(1);
1569                    }
1570                    else {
1571                            return null;
1572                    }
1573            }
1574    
1575            /**
1576             * Removes all the social activity achievements where groupId = &#63; and name = &#63; from the database.
1577             *
1578             * @param groupId the group ID
1579             * @param name the name
1580             */
1581            @Override
1582            public void removeByG_N(long groupId, String name) {
1583                    for (SocialActivityAchievement socialActivityAchievement : findByG_N(
1584                                    groupId, name, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null)) {
1585                            remove(socialActivityAchievement);
1586                    }
1587            }
1588    
1589            /**
1590             * Returns the number of social activity achievements where groupId = &#63; and name = &#63;.
1591             *
1592             * @param groupId the group ID
1593             * @param name the name
1594             * @return the number of matching social activity achievements
1595             */
1596            @Override
1597            public int countByG_N(long groupId, String name) {
1598                    FinderPath finderPath = FINDER_PATH_COUNT_BY_G_N;
1599    
1600                    Object[] finderArgs = new Object[] { groupId, name };
1601    
1602                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
1603                                    this);
1604    
1605                    if (count == null) {
1606                            StringBundler query = new StringBundler(3);
1607    
1608                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
1609    
1610                            query.append(_FINDER_COLUMN_G_N_GROUPID_2);
1611    
1612                            boolean bindName = false;
1613    
1614                            if (name == null) {
1615                                    query.append(_FINDER_COLUMN_G_N_NAME_1);
1616                            }
1617                            else if (name.equals(StringPool.BLANK)) {
1618                                    query.append(_FINDER_COLUMN_G_N_NAME_3);
1619                            }
1620                            else {
1621                                    bindName = true;
1622    
1623                                    query.append(_FINDER_COLUMN_G_N_NAME_2);
1624                            }
1625    
1626                            String sql = query.toString();
1627    
1628                            Session session = null;
1629    
1630                            try {
1631                                    session = openSession();
1632    
1633                                    Query q = session.createQuery(sql);
1634    
1635                                    QueryPos qPos = QueryPos.getInstance(q);
1636    
1637                                    qPos.add(groupId);
1638    
1639                                    if (bindName) {
1640                                            qPos.add(name);
1641                                    }
1642    
1643                                    count = (Long)q.uniqueResult();
1644    
1645                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
1646                            }
1647                            catch (Exception e) {
1648                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
1649    
1650                                    throw processException(e);
1651                            }
1652                            finally {
1653                                    closeSession(session);
1654                            }
1655                    }
1656    
1657                    return count.intValue();
1658            }
1659    
1660            private static final String _FINDER_COLUMN_G_N_GROUPID_2 = "socialActivityAchievement.groupId = ? AND ";
1661            private static final String _FINDER_COLUMN_G_N_NAME_1 = "socialActivityAchievement.name IS NULL";
1662            private static final String _FINDER_COLUMN_G_N_NAME_2 = "socialActivityAchievement.name = ?";
1663            private static final String _FINDER_COLUMN_G_N_NAME_3 = "(socialActivityAchievement.name IS NULL OR socialActivityAchievement.name = '')";
1664            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_G_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1665                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1666                            SocialActivityAchievementImpl.class,
1667                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findByG_F",
1668                            new String[] {
1669                                    Long.class.getName(), Boolean.class.getName(),
1670                                    
1671                            Integer.class.getName(), Integer.class.getName(),
1672                                    OrderByComparator.class.getName()
1673                            });
1674            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1675                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1676                            SocialActivityAchievementImpl.class,
1677                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findByG_F",
1678                            new String[] { Long.class.getName(), Boolean.class.getName() },
1679                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK |
1680                            SocialActivityAchievementModelImpl.FIRSTINGROUP_COLUMN_BITMASK);
1681            public static final FinderPath FINDER_PATH_COUNT_BY_G_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
1682                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
1683                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
1684                            "countByG_F",
1685                            new String[] { Long.class.getName(), Boolean.class.getName() });
1686    
1687            /**
1688             * Returns all the social activity achievements where groupId = &#63; and firstInGroup = &#63;.
1689             *
1690             * @param groupId the group ID
1691             * @param firstInGroup the first in group
1692             * @return the matching social activity achievements
1693             */
1694            @Override
1695            public List<SocialActivityAchievement> findByG_F(long groupId,
1696                    boolean firstInGroup) {
1697                    return findByG_F(groupId, firstInGroup, QueryUtil.ALL_POS,
1698                            QueryUtil.ALL_POS, null);
1699            }
1700    
1701            /**
1702             * Returns a range of all the social activity achievements where groupId = &#63; and firstInGroup = &#63;.
1703             *
1704             * <p>
1705             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
1706             * </p>
1707             *
1708             * @param groupId the group ID
1709             * @param firstInGroup the first in group
1710             * @param start the lower bound of the range of social activity achievements
1711             * @param end the upper bound of the range of social activity achievements (not inclusive)
1712             * @return the range of matching social activity achievements
1713             */
1714            @Override
1715            public List<SocialActivityAchievement> findByG_F(long groupId,
1716                    boolean firstInGroup, int start, int end) {
1717                    return findByG_F(groupId, firstInGroup, start, end, null);
1718            }
1719    
1720            /**
1721             * Returns an ordered range of all the social activity achievements where groupId = &#63; and firstInGroup = &#63;.
1722             *
1723             * <p>
1724             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
1725             * </p>
1726             *
1727             * @param groupId the group ID
1728             * @param firstInGroup the first in group
1729             * @param start the lower bound of the range of social activity achievements
1730             * @param end the upper bound of the range of social activity achievements (not inclusive)
1731             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
1732             * @return the ordered range of matching social activity achievements
1733             */
1734            @Override
1735            public List<SocialActivityAchievement> findByG_F(long groupId,
1736                    boolean firstInGroup, int start, int end,
1737                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1738                    boolean pagination = true;
1739                    FinderPath finderPath = null;
1740                    Object[] finderArgs = null;
1741    
1742                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
1743                                    (orderByComparator == null)) {
1744                            pagination = false;
1745                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_F;
1746                            finderArgs = new Object[] { groupId, firstInGroup };
1747                    }
1748                    else {
1749                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_G_F;
1750                            finderArgs = new Object[] {
1751                                            groupId, firstInGroup,
1752                                            
1753                                            start, end, orderByComparator
1754                                    };
1755                    }
1756    
1757                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
1758                                    finderArgs, this);
1759    
1760                    if ((list != null) && !list.isEmpty()) {
1761                            for (SocialActivityAchievement socialActivityAchievement : list) {
1762                                    if ((groupId != socialActivityAchievement.getGroupId()) ||
1763                                                    (firstInGroup != socialActivityAchievement.getFirstInGroup())) {
1764                                            list = null;
1765    
1766                                            break;
1767                                    }
1768                            }
1769                    }
1770    
1771                    if (list == null) {
1772                            StringBundler query = null;
1773    
1774                            if (orderByComparator != null) {
1775                                    query = new StringBundler(4 +
1776                                                    (orderByComparator.getOrderByFields().length * 3));
1777                            }
1778                            else {
1779                                    query = new StringBundler(4);
1780                            }
1781    
1782                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
1783    
1784                            query.append(_FINDER_COLUMN_G_F_GROUPID_2);
1785    
1786                            query.append(_FINDER_COLUMN_G_F_FIRSTINGROUP_2);
1787    
1788                            if (orderByComparator != null) {
1789                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
1790                                            orderByComparator);
1791                            }
1792                            else
1793                             if (pagination) {
1794                                    query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
1795                            }
1796    
1797                            String sql = query.toString();
1798    
1799                            Session session = null;
1800    
1801                            try {
1802                                    session = openSession();
1803    
1804                                    Query q = session.createQuery(sql);
1805    
1806                                    QueryPos qPos = QueryPos.getInstance(q);
1807    
1808                                    qPos.add(groupId);
1809    
1810                                    qPos.add(firstInGroup);
1811    
1812                                    if (!pagination) {
1813                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
1814                                                            getDialect(), start, end, false);
1815    
1816                                            Collections.sort(list);
1817    
1818                                            list = Collections.unmodifiableList(list);
1819                                    }
1820                                    else {
1821                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
1822                                                            getDialect(), start, end);
1823                                    }
1824    
1825                                    cacheResult(list);
1826    
1827                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
1828                            }
1829                            catch (Exception e) {
1830                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
1831    
1832                                    throw processException(e);
1833                            }
1834                            finally {
1835                                    closeSession(session);
1836                            }
1837                    }
1838    
1839                    return list;
1840            }
1841    
1842            /**
1843             * Returns the first social activity achievement in the ordered set where groupId = &#63; and firstInGroup = &#63;.
1844             *
1845             * @param groupId the group ID
1846             * @param firstInGroup the first in group
1847             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1848             * @return the first matching social activity achievement
1849             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
1850             */
1851            @Override
1852            public SocialActivityAchievement findByG_F_First(long groupId,
1853                    boolean firstInGroup,
1854                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1855                    throws NoSuchActivityAchievementException {
1856                    SocialActivityAchievement socialActivityAchievement = fetchByG_F_First(groupId,
1857                                    firstInGroup, orderByComparator);
1858    
1859                    if (socialActivityAchievement != null) {
1860                            return socialActivityAchievement;
1861                    }
1862    
1863                    StringBundler msg = new StringBundler(6);
1864    
1865                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
1866    
1867                    msg.append("groupId=");
1868                    msg.append(groupId);
1869    
1870                    msg.append(", firstInGroup=");
1871                    msg.append(firstInGroup);
1872    
1873                    msg.append(StringPool.CLOSE_CURLY_BRACE);
1874    
1875                    throw new NoSuchActivityAchievementException(msg.toString());
1876            }
1877    
1878            /**
1879             * Returns the first social activity achievement in the ordered set where groupId = &#63; and firstInGroup = &#63;.
1880             *
1881             * @param groupId the group ID
1882             * @param firstInGroup the first in group
1883             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1884             * @return the first matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
1885             */
1886            @Override
1887            public SocialActivityAchievement fetchByG_F_First(long groupId,
1888                    boolean firstInGroup,
1889                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1890                    List<SocialActivityAchievement> list = findByG_F(groupId, firstInGroup,
1891                                    0, 1, orderByComparator);
1892    
1893                    if (!list.isEmpty()) {
1894                            return list.get(0);
1895                    }
1896    
1897                    return null;
1898            }
1899    
1900            /**
1901             * Returns the last social activity achievement in the ordered set where groupId = &#63; and firstInGroup = &#63;.
1902             *
1903             * @param groupId the group ID
1904             * @param firstInGroup the first in group
1905             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1906             * @return the last matching social activity achievement
1907             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
1908             */
1909            @Override
1910            public SocialActivityAchievement findByG_F_Last(long groupId,
1911                    boolean firstInGroup,
1912                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1913                    throws NoSuchActivityAchievementException {
1914                    SocialActivityAchievement socialActivityAchievement = fetchByG_F_Last(groupId,
1915                                    firstInGroup, orderByComparator);
1916    
1917                    if (socialActivityAchievement != null) {
1918                            return socialActivityAchievement;
1919                    }
1920    
1921                    StringBundler msg = new StringBundler(6);
1922    
1923                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
1924    
1925                    msg.append("groupId=");
1926                    msg.append(groupId);
1927    
1928                    msg.append(", firstInGroup=");
1929                    msg.append(firstInGroup);
1930    
1931                    msg.append(StringPool.CLOSE_CURLY_BRACE);
1932    
1933                    throw new NoSuchActivityAchievementException(msg.toString());
1934            }
1935    
1936            /**
1937             * Returns the last social activity achievement in the ordered set where groupId = &#63; and firstInGroup = &#63;.
1938             *
1939             * @param groupId the group ID
1940             * @param firstInGroup the first in group
1941             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1942             * @return the last matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
1943             */
1944            @Override
1945            public SocialActivityAchievement fetchByG_F_Last(long groupId,
1946                    boolean firstInGroup,
1947                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
1948                    int count = countByG_F(groupId, firstInGroup);
1949    
1950                    if (count == 0) {
1951                            return null;
1952                    }
1953    
1954                    List<SocialActivityAchievement> list = findByG_F(groupId, firstInGroup,
1955                                    count - 1, count, orderByComparator);
1956    
1957                    if (!list.isEmpty()) {
1958                            return list.get(0);
1959                    }
1960    
1961                    return null;
1962            }
1963    
1964            /**
1965             * Returns the social activity achievements before and after the current social activity achievement in the ordered set where groupId = &#63; and firstInGroup = &#63;.
1966             *
1967             * @param activityAchievementId the primary key of the current social activity achievement
1968             * @param groupId the group ID
1969             * @param firstInGroup the first in group
1970             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
1971             * @return the previous, current, and next social activity achievement
1972             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
1973             */
1974            @Override
1975            public SocialActivityAchievement[] findByG_F_PrevAndNext(
1976                    long activityAchievementId, long groupId, boolean firstInGroup,
1977                    OrderByComparator<SocialActivityAchievement> orderByComparator)
1978                    throws NoSuchActivityAchievementException {
1979                    SocialActivityAchievement socialActivityAchievement = findByPrimaryKey(activityAchievementId);
1980    
1981                    Session session = null;
1982    
1983                    try {
1984                            session = openSession();
1985    
1986                            SocialActivityAchievement[] array = new SocialActivityAchievementImpl[3];
1987    
1988                            array[0] = getByG_F_PrevAndNext(session, socialActivityAchievement,
1989                                            groupId, firstInGroup, orderByComparator, true);
1990    
1991                            array[1] = socialActivityAchievement;
1992    
1993                            array[2] = getByG_F_PrevAndNext(session, socialActivityAchievement,
1994                                            groupId, firstInGroup, orderByComparator, false);
1995    
1996                            return array;
1997                    }
1998                    catch (Exception e) {
1999                            throw processException(e);
2000                    }
2001                    finally {
2002                            closeSession(session);
2003                    }
2004            }
2005    
2006            protected SocialActivityAchievement getByG_F_PrevAndNext(Session session,
2007                    SocialActivityAchievement socialActivityAchievement, long groupId,
2008                    boolean firstInGroup,
2009                    OrderByComparator<SocialActivityAchievement> orderByComparator,
2010                    boolean previous) {
2011                    StringBundler query = null;
2012    
2013                    if (orderByComparator != null) {
2014                            query = new StringBundler(6 +
2015                                            (orderByComparator.getOrderByFields().length * 6));
2016                    }
2017                    else {
2018                            query = new StringBundler(3);
2019                    }
2020    
2021                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2022    
2023                    query.append(_FINDER_COLUMN_G_F_GROUPID_2);
2024    
2025                    query.append(_FINDER_COLUMN_G_F_FIRSTINGROUP_2);
2026    
2027                    if (orderByComparator != null) {
2028                            String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
2029    
2030                            if (orderByConditionFields.length > 0) {
2031                                    query.append(WHERE_AND);
2032                            }
2033    
2034                            for (int i = 0; i < orderByConditionFields.length; i++) {
2035                                    query.append(_ORDER_BY_ENTITY_ALIAS);
2036                                    query.append(orderByConditionFields[i]);
2037    
2038                                    if ((i + 1) < orderByConditionFields.length) {
2039                                            if (orderByComparator.isAscending() ^ previous) {
2040                                                    query.append(WHERE_GREATER_THAN_HAS_NEXT);
2041                                            }
2042                                            else {
2043                                                    query.append(WHERE_LESSER_THAN_HAS_NEXT);
2044                                            }
2045                                    }
2046                                    else {
2047                                            if (orderByComparator.isAscending() ^ previous) {
2048                                                    query.append(WHERE_GREATER_THAN);
2049                                            }
2050                                            else {
2051                                                    query.append(WHERE_LESSER_THAN);
2052                                            }
2053                                    }
2054                            }
2055    
2056                            query.append(ORDER_BY_CLAUSE);
2057    
2058                            String[] orderByFields = orderByComparator.getOrderByFields();
2059    
2060                            for (int i = 0; i < orderByFields.length; i++) {
2061                                    query.append(_ORDER_BY_ENTITY_ALIAS);
2062                                    query.append(orderByFields[i]);
2063    
2064                                    if ((i + 1) < orderByFields.length) {
2065                                            if (orderByComparator.isAscending() ^ previous) {
2066                                                    query.append(ORDER_BY_ASC_HAS_NEXT);
2067                                            }
2068                                            else {
2069                                                    query.append(ORDER_BY_DESC_HAS_NEXT);
2070                                            }
2071                                    }
2072                                    else {
2073                                            if (orderByComparator.isAscending() ^ previous) {
2074                                                    query.append(ORDER_BY_ASC);
2075                                            }
2076                                            else {
2077                                                    query.append(ORDER_BY_DESC);
2078                                            }
2079                                    }
2080                            }
2081                    }
2082                    else {
2083                            query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
2084                    }
2085    
2086                    String sql = query.toString();
2087    
2088                    Query q = session.createQuery(sql);
2089    
2090                    q.setFirstResult(0);
2091                    q.setMaxResults(2);
2092    
2093                    QueryPos qPos = QueryPos.getInstance(q);
2094    
2095                    qPos.add(groupId);
2096    
2097                    qPos.add(firstInGroup);
2098    
2099                    if (orderByComparator != null) {
2100                            Object[] values = orderByComparator.getOrderByConditionValues(socialActivityAchievement);
2101    
2102                            for (Object value : values) {
2103                                    qPos.add(value);
2104                            }
2105                    }
2106    
2107                    List<SocialActivityAchievement> list = q.list();
2108    
2109                    if (list.size() == 2) {
2110                            return list.get(1);
2111                    }
2112                    else {
2113                            return null;
2114                    }
2115            }
2116    
2117            /**
2118             * Removes all the social activity achievements where groupId = &#63; and firstInGroup = &#63; from the database.
2119             *
2120             * @param groupId the group ID
2121             * @param firstInGroup the first in group
2122             */
2123            @Override
2124            public void removeByG_F(long groupId, boolean firstInGroup) {
2125                    for (SocialActivityAchievement socialActivityAchievement : findByG_F(
2126                                    groupId, firstInGroup, QueryUtil.ALL_POS, QueryUtil.ALL_POS,
2127                                    null)) {
2128                            remove(socialActivityAchievement);
2129                    }
2130            }
2131    
2132            /**
2133             * Returns the number of social activity achievements where groupId = &#63; and firstInGroup = &#63;.
2134             *
2135             * @param groupId the group ID
2136             * @param firstInGroup the first in group
2137             * @return the number of matching social activity achievements
2138             */
2139            @Override
2140            public int countByG_F(long groupId, boolean firstInGroup) {
2141                    FinderPath finderPath = FINDER_PATH_COUNT_BY_G_F;
2142    
2143                    Object[] finderArgs = new Object[] { groupId, firstInGroup };
2144    
2145                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
2146                                    this);
2147    
2148                    if (count == null) {
2149                            StringBundler query = new StringBundler(3);
2150    
2151                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2152    
2153                            query.append(_FINDER_COLUMN_G_F_GROUPID_2);
2154    
2155                            query.append(_FINDER_COLUMN_G_F_FIRSTINGROUP_2);
2156    
2157                            String sql = query.toString();
2158    
2159                            Session session = null;
2160    
2161                            try {
2162                                    session = openSession();
2163    
2164                                    Query q = session.createQuery(sql);
2165    
2166                                    QueryPos qPos = QueryPos.getInstance(q);
2167    
2168                                    qPos.add(groupId);
2169    
2170                                    qPos.add(firstInGroup);
2171    
2172                                    count = (Long)q.uniqueResult();
2173    
2174                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
2175                            }
2176                            catch (Exception e) {
2177                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
2178    
2179                                    throw processException(e);
2180                            }
2181                            finally {
2182                                    closeSession(session);
2183                            }
2184                    }
2185    
2186                    return count.intValue();
2187            }
2188    
2189            private static final String _FINDER_COLUMN_G_F_GROUPID_2 = "socialActivityAchievement.groupId = ? AND ";
2190            private static final String _FINDER_COLUMN_G_F_FIRSTINGROUP_2 = "socialActivityAchievement.firstInGroup = ?";
2191            public static final FinderPath FINDER_PATH_FETCH_BY_G_U_N = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
2192                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
2193                            SocialActivityAchievementImpl.class, FINDER_CLASS_NAME_ENTITY,
2194                            "fetchByG_U_N",
2195                            new String[] {
2196                                    Long.class.getName(), Long.class.getName(),
2197                                    String.class.getName()
2198                            },
2199                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK |
2200                            SocialActivityAchievementModelImpl.USERID_COLUMN_BITMASK |
2201                            SocialActivityAchievementModelImpl.NAME_COLUMN_BITMASK);
2202            public static final FinderPath FINDER_PATH_COUNT_BY_G_U_N = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
2203                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
2204                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
2205                            "countByG_U_N",
2206                            new String[] {
2207                                    Long.class.getName(), Long.class.getName(),
2208                                    String.class.getName()
2209                            });
2210    
2211            /**
2212             * Returns the social activity achievement where groupId = &#63; and userId = &#63; and name = &#63; or throws a {@link com.liferay.portlet.social.NoSuchActivityAchievementException} if it could not be found.
2213             *
2214             * @param groupId the group ID
2215             * @param userId the user ID
2216             * @param name the name
2217             * @return the matching social activity achievement
2218             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
2219             */
2220            @Override
2221            public SocialActivityAchievement findByG_U_N(long groupId, long userId,
2222                    String name) throws NoSuchActivityAchievementException {
2223                    SocialActivityAchievement socialActivityAchievement = fetchByG_U_N(groupId,
2224                                    userId, name);
2225    
2226                    if (socialActivityAchievement == null) {
2227                            StringBundler msg = new StringBundler(8);
2228    
2229                            msg.append(_NO_SUCH_ENTITY_WITH_KEY);
2230    
2231                            msg.append("groupId=");
2232                            msg.append(groupId);
2233    
2234                            msg.append(", userId=");
2235                            msg.append(userId);
2236    
2237                            msg.append(", name=");
2238                            msg.append(name);
2239    
2240                            msg.append(StringPool.CLOSE_CURLY_BRACE);
2241    
2242                            if (_log.isWarnEnabled()) {
2243                                    _log.warn(msg.toString());
2244                            }
2245    
2246                            throw new NoSuchActivityAchievementException(msg.toString());
2247                    }
2248    
2249                    return socialActivityAchievement;
2250            }
2251    
2252            /**
2253             * Returns the social activity achievement where groupId = &#63; and userId = &#63; and name = &#63; or returns <code>null</code> if it could not be found. Uses the finder cache.
2254             *
2255             * @param groupId the group ID
2256             * @param userId the user ID
2257             * @param name the name
2258             * @return the matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
2259             */
2260            @Override
2261            public SocialActivityAchievement fetchByG_U_N(long groupId, long userId,
2262                    String name) {
2263                    return fetchByG_U_N(groupId, userId, name, true);
2264            }
2265    
2266            /**
2267             * Returns the social activity achievement where groupId = &#63; and userId = &#63; and name = &#63; or returns <code>null</code> if it could not be found, optionally using the finder cache.
2268             *
2269             * @param groupId the group ID
2270             * @param userId the user ID
2271             * @param name the name
2272             * @param retrieveFromCache whether to use the finder cache
2273             * @return the matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
2274             */
2275            @Override
2276            public SocialActivityAchievement fetchByG_U_N(long groupId, long userId,
2277                    String name, boolean retrieveFromCache) {
2278                    Object[] finderArgs = new Object[] { groupId, userId, name };
2279    
2280                    Object result = null;
2281    
2282                    if (retrieveFromCache) {
2283                            result = FinderCacheUtil.getResult(FINDER_PATH_FETCH_BY_G_U_N,
2284                                            finderArgs, this);
2285                    }
2286    
2287                    if (result instanceof SocialActivityAchievement) {
2288                            SocialActivityAchievement socialActivityAchievement = (SocialActivityAchievement)result;
2289    
2290                            if ((groupId != socialActivityAchievement.getGroupId()) ||
2291                                            (userId != socialActivityAchievement.getUserId()) ||
2292                                            !Validator.equals(name, socialActivityAchievement.getName())) {
2293                                    result = null;
2294                            }
2295                    }
2296    
2297                    if (result == null) {
2298                            StringBundler query = new StringBundler(5);
2299    
2300                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2301    
2302                            query.append(_FINDER_COLUMN_G_U_N_GROUPID_2);
2303    
2304                            query.append(_FINDER_COLUMN_G_U_N_USERID_2);
2305    
2306                            boolean bindName = false;
2307    
2308                            if (name == null) {
2309                                    query.append(_FINDER_COLUMN_G_U_N_NAME_1);
2310                            }
2311                            else if (name.equals(StringPool.BLANK)) {
2312                                    query.append(_FINDER_COLUMN_G_U_N_NAME_3);
2313                            }
2314                            else {
2315                                    bindName = true;
2316    
2317                                    query.append(_FINDER_COLUMN_G_U_N_NAME_2);
2318                            }
2319    
2320                            String sql = query.toString();
2321    
2322                            Session session = null;
2323    
2324                            try {
2325                                    session = openSession();
2326    
2327                                    Query q = session.createQuery(sql);
2328    
2329                                    QueryPos qPos = QueryPos.getInstance(q);
2330    
2331                                    qPos.add(groupId);
2332    
2333                                    qPos.add(userId);
2334    
2335                                    if (bindName) {
2336                                            qPos.add(name);
2337                                    }
2338    
2339                                    List<SocialActivityAchievement> list = q.list();
2340    
2341                                    if (list.isEmpty()) {
2342                                            FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_U_N,
2343                                                    finderArgs, list);
2344                                    }
2345                                    else {
2346                                            SocialActivityAchievement socialActivityAchievement = list.get(0);
2347    
2348                                            result = socialActivityAchievement;
2349    
2350                                            cacheResult(socialActivityAchievement);
2351    
2352                                            if ((socialActivityAchievement.getGroupId() != groupId) ||
2353                                                            (socialActivityAchievement.getUserId() != userId) ||
2354                                                            (socialActivityAchievement.getName() == null) ||
2355                                                            !socialActivityAchievement.getName().equals(name)) {
2356                                                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_U_N,
2357                                                            finderArgs, socialActivityAchievement);
2358                                            }
2359                                    }
2360                            }
2361                            catch (Exception e) {
2362                                    FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_U_N,
2363                                            finderArgs);
2364    
2365                                    throw processException(e);
2366                            }
2367                            finally {
2368                                    closeSession(session);
2369                            }
2370                    }
2371    
2372                    if (result instanceof List<?>) {
2373                            return null;
2374                    }
2375                    else {
2376                            return (SocialActivityAchievement)result;
2377                    }
2378            }
2379    
2380            /**
2381             * Removes the social activity achievement where groupId = &#63; and userId = &#63; and name = &#63; from the database.
2382             *
2383             * @param groupId the group ID
2384             * @param userId the user ID
2385             * @param name the name
2386             * @return the social activity achievement that was removed
2387             */
2388            @Override
2389            public SocialActivityAchievement removeByG_U_N(long groupId, long userId,
2390                    String name) throws NoSuchActivityAchievementException {
2391                    SocialActivityAchievement socialActivityAchievement = findByG_U_N(groupId,
2392                                    userId, name);
2393    
2394                    return remove(socialActivityAchievement);
2395            }
2396    
2397            /**
2398             * Returns the number of social activity achievements where groupId = &#63; and userId = &#63; and name = &#63;.
2399             *
2400             * @param groupId the group ID
2401             * @param userId the user ID
2402             * @param name the name
2403             * @return the number of matching social activity achievements
2404             */
2405            @Override
2406            public int countByG_U_N(long groupId, long userId, String name) {
2407                    FinderPath finderPath = FINDER_PATH_COUNT_BY_G_U_N;
2408    
2409                    Object[] finderArgs = new Object[] { groupId, userId, name };
2410    
2411                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
2412                                    this);
2413    
2414                    if (count == null) {
2415                            StringBundler query = new StringBundler(4);
2416    
2417                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2418    
2419                            query.append(_FINDER_COLUMN_G_U_N_GROUPID_2);
2420    
2421                            query.append(_FINDER_COLUMN_G_U_N_USERID_2);
2422    
2423                            boolean bindName = false;
2424    
2425                            if (name == null) {
2426                                    query.append(_FINDER_COLUMN_G_U_N_NAME_1);
2427                            }
2428                            else if (name.equals(StringPool.BLANK)) {
2429                                    query.append(_FINDER_COLUMN_G_U_N_NAME_3);
2430                            }
2431                            else {
2432                                    bindName = true;
2433    
2434                                    query.append(_FINDER_COLUMN_G_U_N_NAME_2);
2435                            }
2436    
2437                            String sql = query.toString();
2438    
2439                            Session session = null;
2440    
2441                            try {
2442                                    session = openSession();
2443    
2444                                    Query q = session.createQuery(sql);
2445    
2446                                    QueryPos qPos = QueryPos.getInstance(q);
2447    
2448                                    qPos.add(groupId);
2449    
2450                                    qPos.add(userId);
2451    
2452                                    if (bindName) {
2453                                            qPos.add(name);
2454                                    }
2455    
2456                                    count = (Long)q.uniqueResult();
2457    
2458                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
2459                            }
2460                            catch (Exception e) {
2461                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
2462    
2463                                    throw processException(e);
2464                            }
2465                            finally {
2466                                    closeSession(session);
2467                            }
2468                    }
2469    
2470                    return count.intValue();
2471            }
2472    
2473            private static final String _FINDER_COLUMN_G_U_N_GROUPID_2 = "socialActivityAchievement.groupId = ? AND ";
2474            private static final String _FINDER_COLUMN_G_U_N_USERID_2 = "socialActivityAchievement.userId = ? AND ";
2475            private static final String _FINDER_COLUMN_G_U_N_NAME_1 = "socialActivityAchievement.name IS NULL";
2476            private static final String _FINDER_COLUMN_G_U_N_NAME_2 = "socialActivityAchievement.name = ?";
2477            private static final String _FINDER_COLUMN_G_U_N_NAME_3 = "(socialActivityAchievement.name IS NULL OR socialActivityAchievement.name = '')";
2478            public static final FinderPath FINDER_PATH_WITH_PAGINATION_FIND_BY_G_U_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
2479                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
2480                            SocialActivityAchievementImpl.class,
2481                            FINDER_CLASS_NAME_LIST_WITH_PAGINATION, "findByG_U_F",
2482                            new String[] {
2483                                    Long.class.getName(), Long.class.getName(),
2484                                    Boolean.class.getName(),
2485                                    
2486                            Integer.class.getName(), Integer.class.getName(),
2487                                    OrderByComparator.class.getName()
2488                            });
2489            public static final FinderPath FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
2490                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
2491                            SocialActivityAchievementImpl.class,
2492                            FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION, "findByG_U_F",
2493                            new String[] {
2494                                    Long.class.getName(), Long.class.getName(),
2495                                    Boolean.class.getName()
2496                            },
2497                            SocialActivityAchievementModelImpl.GROUPID_COLUMN_BITMASK |
2498                            SocialActivityAchievementModelImpl.USERID_COLUMN_BITMASK |
2499                            SocialActivityAchievementModelImpl.FIRSTINGROUP_COLUMN_BITMASK);
2500            public static final FinderPath FINDER_PATH_COUNT_BY_G_U_F = new FinderPath(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
2501                            SocialActivityAchievementModelImpl.FINDER_CACHE_ENABLED,
2502                            Long.class, FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION,
2503                            "countByG_U_F",
2504                            new String[] {
2505                                    Long.class.getName(), Long.class.getName(),
2506                                    Boolean.class.getName()
2507                            });
2508    
2509            /**
2510             * Returns all the social activity achievements where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2511             *
2512             * @param groupId the group ID
2513             * @param userId the user ID
2514             * @param firstInGroup the first in group
2515             * @return the matching social activity achievements
2516             */
2517            @Override
2518            public List<SocialActivityAchievement> findByG_U_F(long groupId,
2519                    long userId, boolean firstInGroup) {
2520                    return findByG_U_F(groupId, userId, firstInGroup, QueryUtil.ALL_POS,
2521                            QueryUtil.ALL_POS, null);
2522            }
2523    
2524            /**
2525             * Returns a range of all the social activity achievements where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2526             *
2527             * <p>
2528             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
2529             * </p>
2530             *
2531             * @param groupId the group ID
2532             * @param userId the user ID
2533             * @param firstInGroup the first in group
2534             * @param start the lower bound of the range of social activity achievements
2535             * @param end the upper bound of the range of social activity achievements (not inclusive)
2536             * @return the range of matching social activity achievements
2537             */
2538            @Override
2539            public List<SocialActivityAchievement> findByG_U_F(long groupId,
2540                    long userId, boolean firstInGroup, int start, int end) {
2541                    return findByG_U_F(groupId, userId, firstInGroup, start, end, null);
2542            }
2543    
2544            /**
2545             * Returns an ordered range of all the social activity achievements where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2546             *
2547             * <p>
2548             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
2549             * </p>
2550             *
2551             * @param groupId the group ID
2552             * @param userId the user ID
2553             * @param firstInGroup the first in group
2554             * @param start the lower bound of the range of social activity achievements
2555             * @param end the upper bound of the range of social activity achievements (not inclusive)
2556             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
2557             * @return the ordered range of matching social activity achievements
2558             */
2559            @Override
2560            public List<SocialActivityAchievement> findByG_U_F(long groupId,
2561                    long userId, boolean firstInGroup, int start, int end,
2562                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
2563                    boolean pagination = true;
2564                    FinderPath finderPath = null;
2565                    Object[] finderArgs = null;
2566    
2567                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
2568                                    (orderByComparator == null)) {
2569                            pagination = false;
2570                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U_F;
2571                            finderArgs = new Object[] { groupId, userId, firstInGroup };
2572                    }
2573                    else {
2574                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_BY_G_U_F;
2575                            finderArgs = new Object[] {
2576                                            groupId, userId, firstInGroup,
2577                                            
2578                                            start, end, orderByComparator
2579                                    };
2580                    }
2581    
2582                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
2583                                    finderArgs, this);
2584    
2585                    if ((list != null) && !list.isEmpty()) {
2586                            for (SocialActivityAchievement socialActivityAchievement : list) {
2587                                    if ((groupId != socialActivityAchievement.getGroupId()) ||
2588                                                    (userId != socialActivityAchievement.getUserId()) ||
2589                                                    (firstInGroup != socialActivityAchievement.getFirstInGroup())) {
2590                                            list = null;
2591    
2592                                            break;
2593                                    }
2594                            }
2595                    }
2596    
2597                    if (list == null) {
2598                            StringBundler query = null;
2599    
2600                            if (orderByComparator != null) {
2601                                    query = new StringBundler(5 +
2602                                                    (orderByComparator.getOrderByFields().length * 3));
2603                            }
2604                            else {
2605                                    query = new StringBundler(5);
2606                            }
2607    
2608                            query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2609    
2610                            query.append(_FINDER_COLUMN_G_U_F_GROUPID_2);
2611    
2612                            query.append(_FINDER_COLUMN_G_U_F_USERID_2);
2613    
2614                            query.append(_FINDER_COLUMN_G_U_F_FIRSTINGROUP_2);
2615    
2616                            if (orderByComparator != null) {
2617                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
2618                                            orderByComparator);
2619                            }
2620                            else
2621                             if (pagination) {
2622                                    query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
2623                            }
2624    
2625                            String sql = query.toString();
2626    
2627                            Session session = null;
2628    
2629                            try {
2630                                    session = openSession();
2631    
2632                                    Query q = session.createQuery(sql);
2633    
2634                                    QueryPos qPos = QueryPos.getInstance(q);
2635    
2636                                    qPos.add(groupId);
2637    
2638                                    qPos.add(userId);
2639    
2640                                    qPos.add(firstInGroup);
2641    
2642                                    if (!pagination) {
2643                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
2644                                                            getDialect(), start, end, false);
2645    
2646                                            Collections.sort(list);
2647    
2648                                            list = Collections.unmodifiableList(list);
2649                                    }
2650                                    else {
2651                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
2652                                                            getDialect(), start, end);
2653                                    }
2654    
2655                                    cacheResult(list);
2656    
2657                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
2658                            }
2659                            catch (Exception e) {
2660                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
2661    
2662                                    throw processException(e);
2663                            }
2664                            finally {
2665                                    closeSession(session);
2666                            }
2667                    }
2668    
2669                    return list;
2670            }
2671    
2672            /**
2673             * Returns the first social activity achievement in the ordered set where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2674             *
2675             * @param groupId the group ID
2676             * @param userId the user ID
2677             * @param firstInGroup the first in group
2678             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
2679             * @return the first matching social activity achievement
2680             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
2681             */
2682            @Override
2683            public SocialActivityAchievement findByG_U_F_First(long groupId,
2684                    long userId, boolean firstInGroup,
2685                    OrderByComparator<SocialActivityAchievement> orderByComparator)
2686                    throws NoSuchActivityAchievementException {
2687                    SocialActivityAchievement socialActivityAchievement = fetchByG_U_F_First(groupId,
2688                                    userId, firstInGroup, orderByComparator);
2689    
2690                    if (socialActivityAchievement != null) {
2691                            return socialActivityAchievement;
2692                    }
2693    
2694                    StringBundler msg = new StringBundler(8);
2695    
2696                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
2697    
2698                    msg.append("groupId=");
2699                    msg.append(groupId);
2700    
2701                    msg.append(", userId=");
2702                    msg.append(userId);
2703    
2704                    msg.append(", firstInGroup=");
2705                    msg.append(firstInGroup);
2706    
2707                    msg.append(StringPool.CLOSE_CURLY_BRACE);
2708    
2709                    throw new NoSuchActivityAchievementException(msg.toString());
2710            }
2711    
2712            /**
2713             * Returns the first social activity achievement in the ordered set where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2714             *
2715             * @param groupId the group ID
2716             * @param userId the user ID
2717             * @param firstInGroup the first in group
2718             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
2719             * @return the first matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
2720             */
2721            @Override
2722            public SocialActivityAchievement fetchByG_U_F_First(long groupId,
2723                    long userId, boolean firstInGroup,
2724                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
2725                    List<SocialActivityAchievement> list = findByG_U_F(groupId, userId,
2726                                    firstInGroup, 0, 1, orderByComparator);
2727    
2728                    if (!list.isEmpty()) {
2729                            return list.get(0);
2730                    }
2731    
2732                    return null;
2733            }
2734    
2735            /**
2736             * Returns the last social activity achievement in the ordered set where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2737             *
2738             * @param groupId the group ID
2739             * @param userId the user ID
2740             * @param firstInGroup the first in group
2741             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
2742             * @return the last matching social activity achievement
2743             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a matching social activity achievement could not be found
2744             */
2745            @Override
2746            public SocialActivityAchievement findByG_U_F_Last(long groupId,
2747                    long userId, boolean firstInGroup,
2748                    OrderByComparator<SocialActivityAchievement> orderByComparator)
2749                    throws NoSuchActivityAchievementException {
2750                    SocialActivityAchievement socialActivityAchievement = fetchByG_U_F_Last(groupId,
2751                                    userId, firstInGroup, orderByComparator);
2752    
2753                    if (socialActivityAchievement != null) {
2754                            return socialActivityAchievement;
2755                    }
2756    
2757                    StringBundler msg = new StringBundler(8);
2758    
2759                    msg.append(_NO_SUCH_ENTITY_WITH_KEY);
2760    
2761                    msg.append("groupId=");
2762                    msg.append(groupId);
2763    
2764                    msg.append(", userId=");
2765                    msg.append(userId);
2766    
2767                    msg.append(", firstInGroup=");
2768                    msg.append(firstInGroup);
2769    
2770                    msg.append(StringPool.CLOSE_CURLY_BRACE);
2771    
2772                    throw new NoSuchActivityAchievementException(msg.toString());
2773            }
2774    
2775            /**
2776             * Returns the last social activity achievement in the ordered set where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2777             *
2778             * @param groupId the group ID
2779             * @param userId the user ID
2780             * @param firstInGroup the first in group
2781             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
2782             * @return the last matching social activity achievement, or <code>null</code> if a matching social activity achievement could not be found
2783             */
2784            @Override
2785            public SocialActivityAchievement fetchByG_U_F_Last(long groupId,
2786                    long userId, boolean firstInGroup,
2787                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
2788                    int count = countByG_U_F(groupId, userId, firstInGroup);
2789    
2790                    if (count == 0) {
2791                            return null;
2792                    }
2793    
2794                    List<SocialActivityAchievement> list = findByG_U_F(groupId, userId,
2795                                    firstInGroup, count - 1, count, orderByComparator);
2796    
2797                    if (!list.isEmpty()) {
2798                            return list.get(0);
2799                    }
2800    
2801                    return null;
2802            }
2803    
2804            /**
2805             * Returns the social activity achievements before and after the current social activity achievement in the ordered set where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2806             *
2807             * @param activityAchievementId the primary key of the current social activity achievement
2808             * @param groupId the group ID
2809             * @param userId the user ID
2810             * @param firstInGroup the first in group
2811             * @param orderByComparator the comparator to order the set by (optionally <code>null</code>)
2812             * @return the previous, current, and next social activity achievement
2813             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
2814             */
2815            @Override
2816            public SocialActivityAchievement[] findByG_U_F_PrevAndNext(
2817                    long activityAchievementId, long groupId, long userId,
2818                    boolean firstInGroup,
2819                    OrderByComparator<SocialActivityAchievement> orderByComparator)
2820                    throws NoSuchActivityAchievementException {
2821                    SocialActivityAchievement socialActivityAchievement = findByPrimaryKey(activityAchievementId);
2822    
2823                    Session session = null;
2824    
2825                    try {
2826                            session = openSession();
2827    
2828                            SocialActivityAchievement[] array = new SocialActivityAchievementImpl[3];
2829    
2830                            array[0] = getByG_U_F_PrevAndNext(session,
2831                                            socialActivityAchievement, groupId, userId, firstInGroup,
2832                                            orderByComparator, true);
2833    
2834                            array[1] = socialActivityAchievement;
2835    
2836                            array[2] = getByG_U_F_PrevAndNext(session,
2837                                            socialActivityAchievement, groupId, userId, firstInGroup,
2838                                            orderByComparator, false);
2839    
2840                            return array;
2841                    }
2842                    catch (Exception e) {
2843                            throw processException(e);
2844                    }
2845                    finally {
2846                            closeSession(session);
2847                    }
2848            }
2849    
2850            protected SocialActivityAchievement getByG_U_F_PrevAndNext(
2851                    Session session, SocialActivityAchievement socialActivityAchievement,
2852                    long groupId, long userId, boolean firstInGroup,
2853                    OrderByComparator<SocialActivityAchievement> orderByComparator,
2854                    boolean previous) {
2855                    StringBundler query = null;
2856    
2857                    if (orderByComparator != null) {
2858                            query = new StringBundler(6 +
2859                                            (orderByComparator.getOrderByFields().length * 6));
2860                    }
2861                    else {
2862                            query = new StringBundler(3);
2863                    }
2864    
2865                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE);
2866    
2867                    query.append(_FINDER_COLUMN_G_U_F_GROUPID_2);
2868    
2869                    query.append(_FINDER_COLUMN_G_U_F_USERID_2);
2870    
2871                    query.append(_FINDER_COLUMN_G_U_F_FIRSTINGROUP_2);
2872    
2873                    if (orderByComparator != null) {
2874                            String[] orderByConditionFields = orderByComparator.getOrderByConditionFields();
2875    
2876                            if (orderByConditionFields.length > 0) {
2877                                    query.append(WHERE_AND);
2878                            }
2879    
2880                            for (int i = 0; i < orderByConditionFields.length; i++) {
2881                                    query.append(_ORDER_BY_ENTITY_ALIAS);
2882                                    query.append(orderByConditionFields[i]);
2883    
2884                                    if ((i + 1) < orderByConditionFields.length) {
2885                                            if (orderByComparator.isAscending() ^ previous) {
2886                                                    query.append(WHERE_GREATER_THAN_HAS_NEXT);
2887                                            }
2888                                            else {
2889                                                    query.append(WHERE_LESSER_THAN_HAS_NEXT);
2890                                            }
2891                                    }
2892                                    else {
2893                                            if (orderByComparator.isAscending() ^ previous) {
2894                                                    query.append(WHERE_GREATER_THAN);
2895                                            }
2896                                            else {
2897                                                    query.append(WHERE_LESSER_THAN);
2898                                            }
2899                                    }
2900                            }
2901    
2902                            query.append(ORDER_BY_CLAUSE);
2903    
2904                            String[] orderByFields = orderByComparator.getOrderByFields();
2905    
2906                            for (int i = 0; i < orderByFields.length; i++) {
2907                                    query.append(_ORDER_BY_ENTITY_ALIAS);
2908                                    query.append(orderByFields[i]);
2909    
2910                                    if ((i + 1) < orderByFields.length) {
2911                                            if (orderByComparator.isAscending() ^ previous) {
2912                                                    query.append(ORDER_BY_ASC_HAS_NEXT);
2913                                            }
2914                                            else {
2915                                                    query.append(ORDER_BY_DESC_HAS_NEXT);
2916                                            }
2917                                    }
2918                                    else {
2919                                            if (orderByComparator.isAscending() ^ previous) {
2920                                                    query.append(ORDER_BY_ASC);
2921                                            }
2922                                            else {
2923                                                    query.append(ORDER_BY_DESC);
2924                                            }
2925                                    }
2926                            }
2927                    }
2928                    else {
2929                            query.append(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
2930                    }
2931    
2932                    String sql = query.toString();
2933    
2934                    Query q = session.createQuery(sql);
2935    
2936                    q.setFirstResult(0);
2937                    q.setMaxResults(2);
2938    
2939                    QueryPos qPos = QueryPos.getInstance(q);
2940    
2941                    qPos.add(groupId);
2942    
2943                    qPos.add(userId);
2944    
2945                    qPos.add(firstInGroup);
2946    
2947                    if (orderByComparator != null) {
2948                            Object[] values = orderByComparator.getOrderByConditionValues(socialActivityAchievement);
2949    
2950                            for (Object value : values) {
2951                                    qPos.add(value);
2952                            }
2953                    }
2954    
2955                    List<SocialActivityAchievement> list = q.list();
2956    
2957                    if (list.size() == 2) {
2958                            return list.get(1);
2959                    }
2960                    else {
2961                            return null;
2962                    }
2963            }
2964    
2965            /**
2966             * Removes all the social activity achievements where groupId = &#63; and userId = &#63; and firstInGroup = &#63; from the database.
2967             *
2968             * @param groupId the group ID
2969             * @param userId the user ID
2970             * @param firstInGroup the first in group
2971             */
2972            @Override
2973            public void removeByG_U_F(long groupId, long userId, boolean firstInGroup) {
2974                    for (SocialActivityAchievement socialActivityAchievement : findByG_U_F(
2975                                    groupId, userId, firstInGroup, QueryUtil.ALL_POS,
2976                                    QueryUtil.ALL_POS, null)) {
2977                            remove(socialActivityAchievement);
2978                    }
2979            }
2980    
2981            /**
2982             * Returns the number of social activity achievements where groupId = &#63; and userId = &#63; and firstInGroup = &#63;.
2983             *
2984             * @param groupId the group ID
2985             * @param userId the user ID
2986             * @param firstInGroup the first in group
2987             * @return the number of matching social activity achievements
2988             */
2989            @Override
2990            public int countByG_U_F(long groupId, long userId, boolean firstInGroup) {
2991                    FinderPath finderPath = FINDER_PATH_COUNT_BY_G_U_F;
2992    
2993                    Object[] finderArgs = new Object[] { groupId, userId, firstInGroup };
2994    
2995                    Long count = (Long)FinderCacheUtil.getResult(finderPath, finderArgs,
2996                                    this);
2997    
2998                    if (count == null) {
2999                            StringBundler query = new StringBundler(4);
3000    
3001                            query.append(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE);
3002    
3003                            query.append(_FINDER_COLUMN_G_U_F_GROUPID_2);
3004    
3005                            query.append(_FINDER_COLUMN_G_U_F_USERID_2);
3006    
3007                            query.append(_FINDER_COLUMN_G_U_F_FIRSTINGROUP_2);
3008    
3009                            String sql = query.toString();
3010    
3011                            Session session = null;
3012    
3013                            try {
3014                                    session = openSession();
3015    
3016                                    Query q = session.createQuery(sql);
3017    
3018                                    QueryPos qPos = QueryPos.getInstance(q);
3019    
3020                                    qPos.add(groupId);
3021    
3022                                    qPos.add(userId);
3023    
3024                                    qPos.add(firstInGroup);
3025    
3026                                    count = (Long)q.uniqueResult();
3027    
3028                                    FinderCacheUtil.putResult(finderPath, finderArgs, count);
3029                            }
3030                            catch (Exception e) {
3031                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
3032    
3033                                    throw processException(e);
3034                            }
3035                            finally {
3036                                    closeSession(session);
3037                            }
3038                    }
3039    
3040                    return count.intValue();
3041            }
3042    
3043            private static final String _FINDER_COLUMN_G_U_F_GROUPID_2 = "socialActivityAchievement.groupId = ? AND ";
3044            private static final String _FINDER_COLUMN_G_U_F_USERID_2 = "socialActivityAchievement.userId = ? AND ";
3045            private static final String _FINDER_COLUMN_G_U_F_FIRSTINGROUP_2 = "socialActivityAchievement.firstInGroup = ?";
3046    
3047            public SocialActivityAchievementPersistenceImpl() {
3048                    setModelClass(SocialActivityAchievement.class);
3049            }
3050    
3051            /**
3052             * Caches the social activity achievement in the entity cache if it is enabled.
3053             *
3054             * @param socialActivityAchievement the social activity achievement
3055             */
3056            @Override
3057            public void cacheResult(SocialActivityAchievement socialActivityAchievement) {
3058                    EntityCacheUtil.putResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3059                            SocialActivityAchievementImpl.class,
3060                            socialActivityAchievement.getPrimaryKey(), socialActivityAchievement);
3061    
3062                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_U_N,
3063                            new Object[] {
3064                                    socialActivityAchievement.getGroupId(),
3065                                    socialActivityAchievement.getUserId(),
3066                                    socialActivityAchievement.getName()
3067                            }, socialActivityAchievement);
3068    
3069                    socialActivityAchievement.resetOriginalValues();
3070            }
3071    
3072            /**
3073             * Caches the social activity achievements in the entity cache if it is enabled.
3074             *
3075             * @param socialActivityAchievements the social activity achievements
3076             */
3077            @Override
3078            public void cacheResult(
3079                    List<SocialActivityAchievement> socialActivityAchievements) {
3080                    for (SocialActivityAchievement socialActivityAchievement : socialActivityAchievements) {
3081                            if (EntityCacheUtil.getResult(
3082                                                    SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3083                                                    SocialActivityAchievementImpl.class,
3084                                                    socialActivityAchievement.getPrimaryKey()) == null) {
3085                                    cacheResult(socialActivityAchievement);
3086                            }
3087                            else {
3088                                    socialActivityAchievement.resetOriginalValues();
3089                            }
3090                    }
3091            }
3092    
3093            /**
3094             * Clears the cache for all social activity achievements.
3095             *
3096             * <p>
3097             * The {@link com.liferay.portal.kernel.dao.orm.EntityCache} and {@link com.liferay.portal.kernel.dao.orm.FinderCache} are both cleared by this method.
3098             * </p>
3099             */
3100            @Override
3101            public void clearCache() {
3102                    if (_HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE) {
3103                            CacheRegistryUtil.clear(SocialActivityAchievementImpl.class.getName());
3104                    }
3105    
3106                    EntityCacheUtil.clearCache(SocialActivityAchievementImpl.class);
3107    
3108                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_ENTITY);
3109                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
3110                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
3111            }
3112    
3113            /**
3114             * Clears the cache for the social activity achievement.
3115             *
3116             * <p>
3117             * The {@link com.liferay.portal.kernel.dao.orm.EntityCache} and {@link com.liferay.portal.kernel.dao.orm.FinderCache} are both cleared by this method.
3118             * </p>
3119             */
3120            @Override
3121            public void clearCache(SocialActivityAchievement socialActivityAchievement) {
3122                    EntityCacheUtil.removeResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3123                            SocialActivityAchievementImpl.class,
3124                            socialActivityAchievement.getPrimaryKey());
3125    
3126                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
3127                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
3128    
3129                    clearUniqueFindersCache(socialActivityAchievement);
3130            }
3131    
3132            @Override
3133            public void clearCache(
3134                    List<SocialActivityAchievement> socialActivityAchievements) {
3135                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
3136                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
3137    
3138                    for (SocialActivityAchievement socialActivityAchievement : socialActivityAchievements) {
3139                            EntityCacheUtil.removeResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3140                                    SocialActivityAchievementImpl.class,
3141                                    socialActivityAchievement.getPrimaryKey());
3142    
3143                            clearUniqueFindersCache(socialActivityAchievement);
3144                    }
3145            }
3146    
3147            protected void cacheUniqueFindersCache(
3148                    SocialActivityAchievement socialActivityAchievement) {
3149                    if (socialActivityAchievement.isNew()) {
3150                            Object[] args = new Object[] {
3151                                            socialActivityAchievement.getGroupId(),
3152                                            socialActivityAchievement.getUserId(),
3153                                            socialActivityAchievement.getName()
3154                                    };
3155    
3156                            FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_U_N, args,
3157                                    Long.valueOf(1));
3158                            FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_U_N, args,
3159                                    socialActivityAchievement);
3160                    }
3161                    else {
3162                            SocialActivityAchievementModelImpl socialActivityAchievementModelImpl =
3163                                    (SocialActivityAchievementModelImpl)socialActivityAchievement;
3164    
3165                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3166                                            FINDER_PATH_FETCH_BY_G_U_N.getColumnBitmask()) != 0) {
3167                                    Object[] args = new Object[] {
3168                                                    socialActivityAchievement.getGroupId(),
3169                                                    socialActivityAchievement.getUserId(),
3170                                                    socialActivityAchievement.getName()
3171                                            };
3172    
3173                                    FinderCacheUtil.putResult(FINDER_PATH_COUNT_BY_G_U_N, args,
3174                                            Long.valueOf(1));
3175                                    FinderCacheUtil.putResult(FINDER_PATH_FETCH_BY_G_U_N, args,
3176                                            socialActivityAchievement);
3177                            }
3178                    }
3179            }
3180    
3181            protected void clearUniqueFindersCache(
3182                    SocialActivityAchievement socialActivityAchievement) {
3183                    SocialActivityAchievementModelImpl socialActivityAchievementModelImpl = (SocialActivityAchievementModelImpl)socialActivityAchievement;
3184    
3185                    Object[] args = new Object[] {
3186                                    socialActivityAchievement.getGroupId(),
3187                                    socialActivityAchievement.getUserId(),
3188                                    socialActivityAchievement.getName()
3189                            };
3190    
3191                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U_N, args);
3192                    FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_U_N, args);
3193    
3194                    if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3195                                    FINDER_PATH_FETCH_BY_G_U_N.getColumnBitmask()) != 0) {
3196                            args = new Object[] {
3197                                            socialActivityAchievementModelImpl.getOriginalGroupId(),
3198                                            socialActivityAchievementModelImpl.getOriginalUserId(),
3199                                            socialActivityAchievementModelImpl.getOriginalName()
3200                                    };
3201    
3202                            FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U_N, args);
3203                            FinderCacheUtil.removeResult(FINDER_PATH_FETCH_BY_G_U_N, args);
3204                    }
3205            }
3206    
3207            /**
3208             * Creates a new social activity achievement with the primary key. Does not add the social activity achievement to the database.
3209             *
3210             * @param activityAchievementId the primary key for the new social activity achievement
3211             * @return the new social activity achievement
3212             */
3213            @Override
3214            public SocialActivityAchievement create(long activityAchievementId) {
3215                    SocialActivityAchievement socialActivityAchievement = new SocialActivityAchievementImpl();
3216    
3217                    socialActivityAchievement.setNew(true);
3218                    socialActivityAchievement.setPrimaryKey(activityAchievementId);
3219    
3220                    return socialActivityAchievement;
3221            }
3222    
3223            /**
3224             * Removes the social activity achievement with the primary key from the database. Also notifies the appropriate model listeners.
3225             *
3226             * @param activityAchievementId the primary key of the social activity achievement
3227             * @return the social activity achievement that was removed
3228             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
3229             */
3230            @Override
3231            public SocialActivityAchievement remove(long activityAchievementId)
3232                    throws NoSuchActivityAchievementException {
3233                    return remove((Serializable)activityAchievementId);
3234            }
3235    
3236            /**
3237             * Removes the social activity achievement with the primary key from the database. Also notifies the appropriate model listeners.
3238             *
3239             * @param primaryKey the primary key of the social activity achievement
3240             * @return the social activity achievement that was removed
3241             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
3242             */
3243            @Override
3244            public SocialActivityAchievement remove(Serializable primaryKey)
3245                    throws NoSuchActivityAchievementException {
3246                    Session session = null;
3247    
3248                    try {
3249                            session = openSession();
3250    
3251                            SocialActivityAchievement socialActivityAchievement = (SocialActivityAchievement)session.get(SocialActivityAchievementImpl.class,
3252                                            primaryKey);
3253    
3254                            if (socialActivityAchievement == null) {
3255                                    if (_log.isWarnEnabled()) {
3256                                            _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + primaryKey);
3257                                    }
3258    
3259                                    throw new NoSuchActivityAchievementException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
3260                                            primaryKey);
3261                            }
3262    
3263                            return remove(socialActivityAchievement);
3264                    }
3265                    catch (NoSuchActivityAchievementException nsee) {
3266                            throw nsee;
3267                    }
3268                    catch (Exception e) {
3269                            throw processException(e);
3270                    }
3271                    finally {
3272                            closeSession(session);
3273                    }
3274            }
3275    
3276            @Override
3277            protected SocialActivityAchievement removeImpl(
3278                    SocialActivityAchievement socialActivityAchievement) {
3279                    socialActivityAchievement = toUnwrappedModel(socialActivityAchievement);
3280    
3281                    Session session = null;
3282    
3283                    try {
3284                            session = openSession();
3285    
3286                            if (!session.contains(socialActivityAchievement)) {
3287                                    socialActivityAchievement = (SocialActivityAchievement)session.get(SocialActivityAchievementImpl.class,
3288                                                    socialActivityAchievement.getPrimaryKeyObj());
3289                            }
3290    
3291                            if (socialActivityAchievement != null) {
3292                                    session.delete(socialActivityAchievement);
3293                            }
3294                    }
3295                    catch (Exception e) {
3296                            throw processException(e);
3297                    }
3298                    finally {
3299                            closeSession(session);
3300                    }
3301    
3302                    if (socialActivityAchievement != null) {
3303                            clearCache(socialActivityAchievement);
3304                    }
3305    
3306                    return socialActivityAchievement;
3307            }
3308    
3309            @Override
3310            public SocialActivityAchievement updateImpl(
3311                    com.liferay.portlet.social.model.SocialActivityAchievement socialActivityAchievement) {
3312                    socialActivityAchievement = toUnwrappedModel(socialActivityAchievement);
3313    
3314                    boolean isNew = socialActivityAchievement.isNew();
3315    
3316                    SocialActivityAchievementModelImpl socialActivityAchievementModelImpl = (SocialActivityAchievementModelImpl)socialActivityAchievement;
3317    
3318                    Session session = null;
3319    
3320                    try {
3321                            session = openSession();
3322    
3323                            if (socialActivityAchievement.isNew()) {
3324                                    session.save(socialActivityAchievement);
3325    
3326                                    socialActivityAchievement.setNew(false);
3327                            }
3328                            else {
3329                                    session.merge(socialActivityAchievement);
3330                            }
3331                    }
3332                    catch (Exception e) {
3333                            throw processException(e);
3334                    }
3335                    finally {
3336                            closeSession(session);
3337                    }
3338    
3339                    FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
3340    
3341                    if (isNew ||
3342                                    !SocialActivityAchievementModelImpl.COLUMN_BITMASK_ENABLED) {
3343                            FinderCacheUtil.clearCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
3344                    }
3345    
3346                    else {
3347                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3348                                            FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_GROUPID.getColumnBitmask()) != 0) {
3349                                    Object[] args = new Object[] {
3350                                                    socialActivityAchievementModelImpl.getOriginalGroupId()
3351                                            };
3352    
3353                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_GROUPID, args);
3354                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_GROUPID,
3355                                            args);
3356    
3357                                    args = new Object[] {
3358                                                    socialActivityAchievementModelImpl.getGroupId()
3359                                            };
3360    
3361                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_GROUPID, args);
3362                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_GROUPID,
3363                                            args);
3364                            }
3365    
3366                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3367                                            FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U.getColumnBitmask()) != 0) {
3368                                    Object[] args = new Object[] {
3369                                                    socialActivityAchievementModelImpl.getOriginalGroupId(),
3370                                                    socialActivityAchievementModelImpl.getOriginalUserId()
3371                                            };
3372    
3373                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U, args);
3374                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U,
3375                                            args);
3376    
3377                                    args = new Object[] {
3378                                                    socialActivityAchievementModelImpl.getGroupId(),
3379                                                    socialActivityAchievementModelImpl.getUserId()
3380                                            };
3381    
3382                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U, args);
3383                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U,
3384                                            args);
3385                            }
3386    
3387                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3388                                            FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_N.getColumnBitmask()) != 0) {
3389                                    Object[] args = new Object[] {
3390                                                    socialActivityAchievementModelImpl.getOriginalGroupId(),
3391                                                    socialActivityAchievementModelImpl.getOriginalName()
3392                                            };
3393    
3394                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_N, args);
3395                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_N,
3396                                            args);
3397    
3398                                    args = new Object[] {
3399                                                    socialActivityAchievementModelImpl.getGroupId(),
3400                                                    socialActivityAchievementModelImpl.getName()
3401                                            };
3402    
3403                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_N, args);
3404                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_N,
3405                                            args);
3406                            }
3407    
3408                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3409                                            FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_F.getColumnBitmask()) != 0) {
3410                                    Object[] args = new Object[] {
3411                                                    socialActivityAchievementModelImpl.getOriginalGroupId(),
3412                                                    socialActivityAchievementModelImpl.getOriginalFirstInGroup()
3413                                            };
3414    
3415                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_F, args);
3416                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_F,
3417                                            args);
3418    
3419                                    args = new Object[] {
3420                                                    socialActivityAchievementModelImpl.getGroupId(),
3421                                                    socialActivityAchievementModelImpl.getFirstInGroup()
3422                                            };
3423    
3424                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_F, args);
3425                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_F,
3426                                            args);
3427                            }
3428    
3429                            if ((socialActivityAchievementModelImpl.getColumnBitmask() &
3430                                            FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U_F.getColumnBitmask()) != 0) {
3431                                    Object[] args = new Object[] {
3432                                                    socialActivityAchievementModelImpl.getOriginalGroupId(),
3433                                                    socialActivityAchievementModelImpl.getOriginalUserId(),
3434                                                    socialActivityAchievementModelImpl.getOriginalFirstInGroup()
3435                                            };
3436    
3437                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U_F, args);
3438                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U_F,
3439                                            args);
3440    
3441                                    args = new Object[] {
3442                                                    socialActivityAchievementModelImpl.getGroupId(),
3443                                                    socialActivityAchievementModelImpl.getUserId(),
3444                                                    socialActivityAchievementModelImpl.getFirstInGroup()
3445                                            };
3446    
3447                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_BY_G_U_F, args);
3448                                    FinderCacheUtil.removeResult(FINDER_PATH_WITHOUT_PAGINATION_FIND_BY_G_U_F,
3449                                            args);
3450                            }
3451                    }
3452    
3453                    EntityCacheUtil.putResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3454                            SocialActivityAchievementImpl.class,
3455                            socialActivityAchievement.getPrimaryKey(),
3456                            socialActivityAchievement, false);
3457    
3458                    clearUniqueFindersCache(socialActivityAchievement);
3459                    cacheUniqueFindersCache(socialActivityAchievement);
3460    
3461                    socialActivityAchievement.resetOriginalValues();
3462    
3463                    return socialActivityAchievement;
3464            }
3465    
3466            protected SocialActivityAchievement toUnwrappedModel(
3467                    SocialActivityAchievement socialActivityAchievement) {
3468                    if (socialActivityAchievement instanceof SocialActivityAchievementImpl) {
3469                            return socialActivityAchievement;
3470                    }
3471    
3472                    SocialActivityAchievementImpl socialActivityAchievementImpl = new SocialActivityAchievementImpl();
3473    
3474                    socialActivityAchievementImpl.setNew(socialActivityAchievement.isNew());
3475                    socialActivityAchievementImpl.setPrimaryKey(socialActivityAchievement.getPrimaryKey());
3476    
3477                    socialActivityAchievementImpl.setActivityAchievementId(socialActivityAchievement.getActivityAchievementId());
3478                    socialActivityAchievementImpl.setGroupId(socialActivityAchievement.getGroupId());
3479                    socialActivityAchievementImpl.setCompanyId(socialActivityAchievement.getCompanyId());
3480                    socialActivityAchievementImpl.setUserId(socialActivityAchievement.getUserId());
3481                    socialActivityAchievementImpl.setCreateDate(socialActivityAchievement.getCreateDate());
3482                    socialActivityAchievementImpl.setName(socialActivityAchievement.getName());
3483                    socialActivityAchievementImpl.setFirstInGroup(socialActivityAchievement.isFirstInGroup());
3484    
3485                    return socialActivityAchievementImpl;
3486            }
3487    
3488            /**
3489             * Returns the social activity achievement with the primary key or throws a {@link com.liferay.portal.NoSuchModelException} if it could not be found.
3490             *
3491             * @param primaryKey the primary key of the social activity achievement
3492             * @return the social activity achievement
3493             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
3494             */
3495            @Override
3496            public SocialActivityAchievement findByPrimaryKey(Serializable primaryKey)
3497                    throws NoSuchActivityAchievementException {
3498                    SocialActivityAchievement socialActivityAchievement = fetchByPrimaryKey(primaryKey);
3499    
3500                    if (socialActivityAchievement == null) {
3501                            if (_log.isWarnEnabled()) {
3502                                    _log.warn(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY + primaryKey);
3503                            }
3504    
3505                            throw new NoSuchActivityAchievementException(_NO_SUCH_ENTITY_WITH_PRIMARY_KEY +
3506                                    primaryKey);
3507                    }
3508    
3509                    return socialActivityAchievement;
3510            }
3511    
3512            /**
3513             * Returns the social activity achievement with the primary key or throws a {@link com.liferay.portlet.social.NoSuchActivityAchievementException} if it could not be found.
3514             *
3515             * @param activityAchievementId the primary key of the social activity achievement
3516             * @return the social activity achievement
3517             * @throws com.liferay.portlet.social.NoSuchActivityAchievementException if a social activity achievement with the primary key could not be found
3518             */
3519            @Override
3520            public SocialActivityAchievement findByPrimaryKey(
3521                    long activityAchievementId) throws NoSuchActivityAchievementException {
3522                    return findByPrimaryKey((Serializable)activityAchievementId);
3523            }
3524    
3525            /**
3526             * Returns the social activity achievement with the primary key or returns <code>null</code> if it could not be found.
3527             *
3528             * @param primaryKey the primary key of the social activity achievement
3529             * @return the social activity achievement, or <code>null</code> if a social activity achievement with the primary key could not be found
3530             */
3531            @Override
3532            public SocialActivityAchievement fetchByPrimaryKey(Serializable primaryKey) {
3533                    SocialActivityAchievement socialActivityAchievement = (SocialActivityAchievement)EntityCacheUtil.getResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3534                                    SocialActivityAchievementImpl.class, primaryKey);
3535    
3536                    if (socialActivityAchievement == _nullSocialActivityAchievement) {
3537                            return null;
3538                    }
3539    
3540                    if (socialActivityAchievement == null) {
3541                            Session session = null;
3542    
3543                            try {
3544                                    session = openSession();
3545    
3546                                    socialActivityAchievement = (SocialActivityAchievement)session.get(SocialActivityAchievementImpl.class,
3547                                                    primaryKey);
3548    
3549                                    if (socialActivityAchievement != null) {
3550                                            cacheResult(socialActivityAchievement);
3551                                    }
3552                                    else {
3553                                            EntityCacheUtil.putResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3554                                                    SocialActivityAchievementImpl.class, primaryKey,
3555                                                    _nullSocialActivityAchievement);
3556                                    }
3557                            }
3558                            catch (Exception e) {
3559                                    EntityCacheUtil.removeResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3560                                            SocialActivityAchievementImpl.class, primaryKey);
3561    
3562                                    throw processException(e);
3563                            }
3564                            finally {
3565                                    closeSession(session);
3566                            }
3567                    }
3568    
3569                    return socialActivityAchievement;
3570            }
3571    
3572            /**
3573             * Returns the social activity achievement with the primary key or returns <code>null</code> if it could not be found.
3574             *
3575             * @param activityAchievementId the primary key of the social activity achievement
3576             * @return the social activity achievement, or <code>null</code> if a social activity achievement with the primary key could not be found
3577             */
3578            @Override
3579            public SocialActivityAchievement fetchByPrimaryKey(
3580                    long activityAchievementId) {
3581                    return fetchByPrimaryKey((Serializable)activityAchievementId);
3582            }
3583    
3584            @Override
3585            public Map<Serializable, SocialActivityAchievement> fetchByPrimaryKeys(
3586                    Set<Serializable> primaryKeys) {
3587                    if (primaryKeys.isEmpty()) {
3588                            return Collections.emptyMap();
3589                    }
3590    
3591                    Map<Serializable, SocialActivityAchievement> map = new HashMap<Serializable, SocialActivityAchievement>();
3592    
3593                    if (primaryKeys.size() == 1) {
3594                            Iterator<Serializable> iterator = primaryKeys.iterator();
3595    
3596                            Serializable primaryKey = iterator.next();
3597    
3598                            SocialActivityAchievement socialActivityAchievement = fetchByPrimaryKey(primaryKey);
3599    
3600                            if (socialActivityAchievement != null) {
3601                                    map.put(primaryKey, socialActivityAchievement);
3602                            }
3603    
3604                            return map;
3605                    }
3606    
3607                    Set<Serializable> uncachedPrimaryKeys = null;
3608    
3609                    for (Serializable primaryKey : primaryKeys) {
3610                            SocialActivityAchievement socialActivityAchievement = (SocialActivityAchievement)EntityCacheUtil.getResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3611                                            SocialActivityAchievementImpl.class, primaryKey);
3612    
3613                            if (socialActivityAchievement == null) {
3614                                    if (uncachedPrimaryKeys == null) {
3615                                            uncachedPrimaryKeys = new HashSet<Serializable>();
3616                                    }
3617    
3618                                    uncachedPrimaryKeys.add(primaryKey);
3619                            }
3620                            else {
3621                                    map.put(primaryKey, socialActivityAchievement);
3622                            }
3623                    }
3624    
3625                    if (uncachedPrimaryKeys == null) {
3626                            return map;
3627                    }
3628    
3629                    StringBundler query = new StringBundler((uncachedPrimaryKeys.size() * 2) +
3630                                    1);
3631    
3632                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE_PKS_IN);
3633    
3634                    for (Serializable primaryKey : uncachedPrimaryKeys) {
3635                            query.append(String.valueOf(primaryKey));
3636    
3637                            query.append(StringPool.COMMA);
3638                    }
3639    
3640                    query.setIndex(query.index() - 1);
3641    
3642                    query.append(StringPool.CLOSE_PARENTHESIS);
3643    
3644                    String sql = query.toString();
3645    
3646                    Session session = null;
3647    
3648                    try {
3649                            session = openSession();
3650    
3651                            Query q = session.createQuery(sql);
3652    
3653                            for (SocialActivityAchievement socialActivityAchievement : (List<SocialActivityAchievement>)q.list()) {
3654                                    map.put(socialActivityAchievement.getPrimaryKeyObj(),
3655                                            socialActivityAchievement);
3656    
3657                                    cacheResult(socialActivityAchievement);
3658    
3659                                    uncachedPrimaryKeys.remove(socialActivityAchievement.getPrimaryKeyObj());
3660                            }
3661    
3662                            for (Serializable primaryKey : uncachedPrimaryKeys) {
3663                                    EntityCacheUtil.putResult(SocialActivityAchievementModelImpl.ENTITY_CACHE_ENABLED,
3664                                            SocialActivityAchievementImpl.class, primaryKey,
3665                                            _nullSocialActivityAchievement);
3666                            }
3667                    }
3668                    catch (Exception e) {
3669                            throw processException(e);
3670                    }
3671                    finally {
3672                            closeSession(session);
3673                    }
3674    
3675                    return map;
3676            }
3677    
3678            /**
3679             * Returns all the social activity achievements.
3680             *
3681             * @return the social activity achievements
3682             */
3683            @Override
3684            public List<SocialActivityAchievement> findAll() {
3685                    return findAll(QueryUtil.ALL_POS, QueryUtil.ALL_POS, null);
3686            }
3687    
3688            /**
3689             * Returns a range of all the social activity achievements.
3690             *
3691             * <p>
3692             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
3693             * </p>
3694             *
3695             * @param start the lower bound of the range of social activity achievements
3696             * @param end the upper bound of the range of social activity achievements (not inclusive)
3697             * @return the range of social activity achievements
3698             */
3699            @Override
3700            public List<SocialActivityAchievement> findAll(int start, int end) {
3701                    return findAll(start, end, null);
3702            }
3703    
3704            /**
3705             * Returns an ordered range of all the social activity achievements.
3706             *
3707             * <p>
3708             * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link com.liferay.portlet.social.model.impl.SocialActivityAchievementModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
3709             * </p>
3710             *
3711             * @param start the lower bound of the range of social activity achievements
3712             * @param end the upper bound of the range of social activity achievements (not inclusive)
3713             * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
3714             * @return the ordered range of social activity achievements
3715             */
3716            @Override
3717            public List<SocialActivityAchievement> findAll(int start, int end,
3718                    OrderByComparator<SocialActivityAchievement> orderByComparator) {
3719                    boolean pagination = true;
3720                    FinderPath finderPath = null;
3721                    Object[] finderArgs = null;
3722    
3723                    if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS) &&
3724                                    (orderByComparator == null)) {
3725                            pagination = false;
3726                            finderPath = FINDER_PATH_WITHOUT_PAGINATION_FIND_ALL;
3727                            finderArgs = FINDER_ARGS_EMPTY;
3728                    }
3729                    else {
3730                            finderPath = FINDER_PATH_WITH_PAGINATION_FIND_ALL;
3731                            finderArgs = new Object[] { start, end, orderByComparator };
3732                    }
3733    
3734                    List<SocialActivityAchievement> list = (List<SocialActivityAchievement>)FinderCacheUtil.getResult(finderPath,
3735                                    finderArgs, this);
3736    
3737                    if (list == null) {
3738                            StringBundler query = null;
3739                            String sql = null;
3740    
3741                            if (orderByComparator != null) {
3742                                    query = new StringBundler(2 +
3743                                                    (orderByComparator.getOrderByFields().length * 3));
3744    
3745                                    query.append(_SQL_SELECT_SOCIALACTIVITYACHIEVEMENT);
3746    
3747                                    appendOrderByComparator(query, _ORDER_BY_ENTITY_ALIAS,
3748                                            orderByComparator);
3749    
3750                                    sql = query.toString();
3751                            }
3752                            else {
3753                                    sql = _SQL_SELECT_SOCIALACTIVITYACHIEVEMENT;
3754    
3755                                    if (pagination) {
3756                                            sql = sql.concat(SocialActivityAchievementModelImpl.ORDER_BY_JPQL);
3757                                    }
3758                            }
3759    
3760                            Session session = null;
3761    
3762                            try {
3763                                    session = openSession();
3764    
3765                                    Query q = session.createQuery(sql);
3766    
3767                                    if (!pagination) {
3768                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
3769                                                            getDialect(), start, end, false);
3770    
3771                                            Collections.sort(list);
3772    
3773                                            list = Collections.unmodifiableList(list);
3774                                    }
3775                                    else {
3776                                            list = (List<SocialActivityAchievement>)QueryUtil.list(q,
3777                                                            getDialect(), start, end);
3778                                    }
3779    
3780                                    cacheResult(list);
3781    
3782                                    FinderCacheUtil.putResult(finderPath, finderArgs, list);
3783                            }
3784                            catch (Exception e) {
3785                                    FinderCacheUtil.removeResult(finderPath, finderArgs);
3786    
3787                                    throw processException(e);
3788                            }
3789                            finally {
3790                                    closeSession(session);
3791                            }
3792                    }
3793    
3794                    return list;
3795            }
3796    
3797            /**
3798             * Removes all the social activity achievements from the database.
3799             *
3800             */
3801            @Override
3802            public void removeAll() {
3803                    for (SocialActivityAchievement socialActivityAchievement : findAll()) {
3804                            remove(socialActivityAchievement);
3805                    }
3806            }
3807    
3808            /**
3809             * Returns the number of social activity achievements.
3810             *
3811             * @return the number of social activity achievements
3812             */
3813            @Override
3814            public int countAll() {
3815                    Long count = (Long)FinderCacheUtil.getResult(FINDER_PATH_COUNT_ALL,
3816                                    FINDER_ARGS_EMPTY, this);
3817    
3818                    if (count == null) {
3819                            Session session = null;
3820    
3821                            try {
3822                                    session = openSession();
3823    
3824                                    Query q = session.createQuery(_SQL_COUNT_SOCIALACTIVITYACHIEVEMENT);
3825    
3826                                    count = (Long)q.uniqueResult();
3827    
3828                                    FinderCacheUtil.putResult(FINDER_PATH_COUNT_ALL,
3829                                            FINDER_ARGS_EMPTY, count);
3830                            }
3831                            catch (Exception e) {
3832                                    FinderCacheUtil.removeResult(FINDER_PATH_COUNT_ALL,
3833                                            FINDER_ARGS_EMPTY);
3834    
3835                                    throw processException(e);
3836                            }
3837                            finally {
3838                                    closeSession(session);
3839                            }
3840                    }
3841    
3842                    return count.intValue();
3843            }
3844    
3845            /**
3846             * Initializes the social activity achievement persistence.
3847             */
3848            public void afterPropertiesSet() {
3849            }
3850    
3851            public void destroy() {
3852                    EntityCacheUtil.removeCache(SocialActivityAchievementImpl.class.getName());
3853                    FinderCacheUtil.removeCache(FINDER_CLASS_NAME_ENTITY);
3854                    FinderCacheUtil.removeCache(FINDER_CLASS_NAME_LIST_WITH_PAGINATION);
3855                    FinderCacheUtil.removeCache(FINDER_CLASS_NAME_LIST_WITHOUT_PAGINATION);
3856            }
3857    
3858            private static final String _SQL_SELECT_SOCIALACTIVITYACHIEVEMENT = "SELECT socialActivityAchievement FROM SocialActivityAchievement socialActivityAchievement";
3859            private static final String _SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE_PKS_IN =
3860                    "SELECT socialActivityAchievement FROM SocialActivityAchievement socialActivityAchievement WHERE activityAchievementId IN (";
3861            private static final String _SQL_SELECT_SOCIALACTIVITYACHIEVEMENT_WHERE = "SELECT socialActivityAchievement FROM SocialActivityAchievement socialActivityAchievement WHERE ";
3862            private static final String _SQL_COUNT_SOCIALACTIVITYACHIEVEMENT = "SELECT COUNT(socialActivityAchievement) FROM SocialActivityAchievement socialActivityAchievement";
3863            private static final String _SQL_COUNT_SOCIALACTIVITYACHIEVEMENT_WHERE = "SELECT COUNT(socialActivityAchievement) FROM SocialActivityAchievement socialActivityAchievement WHERE ";
3864            private static final String _ORDER_BY_ENTITY_ALIAS = "socialActivityAchievement.";
3865            private static final String _NO_SUCH_ENTITY_WITH_PRIMARY_KEY = "No SocialActivityAchievement exists with the primary key ";
3866            private static final String _NO_SUCH_ENTITY_WITH_KEY = "No SocialActivityAchievement exists with the key {";
3867            private static final boolean _HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE = com.liferay.portal.util.PropsValues.HIBERNATE_CACHE_USE_SECOND_LEVEL_CACHE;
3868            private static final Log _log = LogFactoryUtil.getLog(SocialActivityAchievementPersistenceImpl.class);
3869            private static final SocialActivityAchievement _nullSocialActivityAchievement =
3870                    new SocialActivityAchievementImpl() {
3871                            @Override
3872                            public Object clone() {
3873                                    return this;
3874                            }
3875    
3876                            @Override
3877                            public CacheModel<SocialActivityAchievement> toCacheModel() {
3878                                    return _nullSocialActivityAchievementCacheModel;
3879                            }
3880                    };
3881    
3882            private static final CacheModel<SocialActivityAchievement> _nullSocialActivityAchievementCacheModel =
3883                    new CacheModel<SocialActivityAchievement>() {
3884                            @Override
3885                            public SocialActivityAchievement toEntityModel() {
3886                                    return _nullSocialActivityAchievement;
3887                            }
3888                    };
3889    }