Example usage for com.liferay.portal.kernel.util StringPool LIKE

List of usage examples for com.liferay.portal.kernel.util StringPool LIKE

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.util StringPool LIKE.

Prototype

String LIKE

To view the source code for com.liferay.portal.kernel.util StringPool LIKE.

Click Source Link

Usage

From source file:com.liferay.dynamic.data.mapping.service.persistence.impl.DDMFormInstanceFinderImpl.java

License:Open Source License

protected int doCountByC_G_N_D(long companyId, long groupId, String[] names, String[] descriptions,
        boolean andOperator, boolean inlineSQLHelper) {

    names = CustomSQLUtil.keywords(names);
    descriptions = CustomSQLUtil.keywords(descriptions, false);

    Session session = null;//from w  w  w.j av  a 2 s  . c  om

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), COUNT_BY_C_G_N_D);

        if (inlineSQLHelper) {
            sql = InlineSQLHelperUtil.replacePermissionCheck(sql, DDMFormInstance.class.getName(),
                    "DDMFormInstance.formInstanceId", groupId);
        }

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(DDMFormInstance.groupId = ?) AND", StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(DDMFormInstance.name)", StringPool.LIKE, false, names);
        sql = CustomSQLUtil.replaceKeywords(sql, "DDMFormInstance.description", StringPool.LIKE, true,
                descriptions);
        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(names, 2);
        qPos.add(descriptions, 2);

        Iterator<Long> itr = q.iterate();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.dynamic.data.mapping.service.persistence.impl.DDMFormInstanceFinderImpl.java

License:Open Source License

protected List<DDMFormInstance> doFindByC_G_N_D(long companyId, long groupId, String[] names,
        String[] descriptions, boolean andOperator, int start, int end,
        OrderByComparator<DDMFormInstance> orderByComparator, boolean inlineSQLHelper) {

    names = CustomSQLUtil.keywords(names);
    descriptions = CustomSQLUtil.keywords(descriptions, false);

    Session session = null;/*from  w ww  .j a  v  a2 s . co  m*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), FIND_BY_C_G_N_D);

        if (inlineSQLHelper) {
            sql = InlineSQLHelperUtil.replacePermissionCheck(sql, DDMFormInstance.class.getName(),
                    "DDMFormInstance.formInstanceId", groupId);
        }

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(DDMFormInstance.groupId = ?) AND", StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(DDMFormInstance.name)", StringPool.LIKE, false, names);
        sql = CustomSQLUtil.replaceKeywords(sql, "DDMFormInstance.description", StringPool.LIKE, true,
                descriptions);
        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);
        sql = CustomSQLUtil.replaceOrderBy(sql, orderByComparator);

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addEntity("DDMFormInstance", DDMFormInstanceImpl.class);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(names, 2);
        qPos.add(descriptions, 2);

        return (List<DDMFormInstance>) QueryUtil.list(q, getDialect(), start, end);
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.journal.service.persistence.impl.JournalArticleFinderImpl.java

License:Open Source License

protected int doCountByC_G_F_C_A_V_T_D_C_S_T_D_R(long companyId, long groupId, List<Long> folderIds,
        long classNameId, String[] articleIds, Double version, String[] titles, String[] descriptions,
        String[] contents, String[] ddmStructureKeys, String[] ddmTemplateKeys, Date displayDateGT,
        Date displayDateLT, Date reviewDate, boolean andOperator,
        QueryDefinition<JournalArticle> queryDefinition, boolean inlineSQLHelper) {

    articleIds = CustomSQLUtil.keywords(articleIds, false);
    titles = CustomSQLUtil.keywords(titles);
    descriptions = CustomSQLUtil.keywords(descriptions, false);
    contents = CustomSQLUtil.keywords(contents, false);
    ddmStructureKeys = CustomSQLUtil.keywords(ddmStructureKeys, false);
    ddmTemplateKeys = CustomSQLUtil.keywords(ddmTemplateKeys, false);
    Timestamp displayDateGT_TS = CalendarUtil.getTimestamp(displayDateGT);
    Timestamp displayDateLT_TS = CalendarUtil.getTimestamp(displayDateLT);
    Timestamp reviewDate_TS = CalendarUtil.getTimestamp(reviewDate);

    Session session = null;/*from   w ww . ja va 2s .c  om*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), COUNT_BY_C_G_F_C_A_V_T_D_C_S_T_D_R, queryDefinition,
                "JournalArticle");

        sql = replaceStatusJoin(sql, queryDefinition);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(JournalArticle.groupId = ?) AND", StringPool.BLANK);
        }

        if (folderIds.isEmpty()) {
            sql = StringUtil.replace(sql, "([$FOLDER_ID$]) AND", StringPool.BLANK);
        } else {
            sql = StringUtil.replace(sql, "[$FOLDER_ID$]",
                    getFolderIds(folderIds, JournalArticleImpl.TABLE_NAME));
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.articleId", StringPool.LIKE, false,
                articleIds);

        if ((version == null) || (version <= 0)) {
            sql = StringUtil.replace(sql, "(JournalArticle.version = ?) [$AND_OR_CONNECTOR$]",
                    StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(JournalArticleLocalization.title)", StringPool.LIKE,
                false, titles);
        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticleLocalization.description", StringPool.LIKE,
                false, descriptions);
        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.content", StringPool.LIKE, false, contents);

        sql = replaceStructureTemplate(sql, ddmStructureKeys, ddmTemplateKeys);

        if (!isNullArray(ddmStructureKeys)) {
            sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.DDMStructureKey", StringPool.LIKE, false,
                    ddmStructureKeys);
        }

        if (!isNullArray(ddmTemplateKeys)) {
            sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.DDMTemplateKey", StringPool.LIKE, false,
                    ddmTemplateKeys);
        }

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        if (inlineSQLHelper) {
            sql = InlineSQLHelperUtil.replacePermissionCheck(sql, JournalArticle.class.getName(),
                    "JournalArticle.resourcePrimKey", groupId);

            sql = StringUtil.replace(sql, "(companyId", "(JournalArticle.companyId");
        }

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        for (long folderId : folderIds) {
            qPos.add(folderId);
        }

        qPos.add(classNameId);
        qPos.add(queryDefinition.getStatus());

        if (!isNullArray(ddmStructureKeys)) {
            qPos.add(ddmStructureKeys, 2);
        }

        if (!isNullArray(ddmTemplateKeys)) {
            qPos.add(ddmTemplateKeys, 2);
        }

        qPos.add(articleIds, 2);

        if ((version != null) && (version > 0)) {
            qPos.add(version);
        }

        qPos.add(titles, 2);
        qPos.add(descriptions, 2);
        qPos.add(contents, 2);
        qPos.add(displayDateGT_TS);
        qPos.add(displayDateGT_TS);
        qPos.add(displayDateLT_TS);
        qPos.add(displayDateLT_TS);
        qPos.add(reviewDate_TS);
        qPos.add(reviewDate_TS);

        Iterator<Long> itr = q.iterate();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.journal.service.persistence.impl.JournalArticleFinderImpl.java

License:Open Source License

protected List<JournalArticle> doFindByC_G_F_C_A_V_T_D_C_S_T_D_R(long companyId, long groupId,
        List<Long> folderIds, long classNameId, String[] articleIds, Double version, String[] titles,
        String[] descriptions, String[] contents, String[] ddmStructureKeys, String[] ddmTemplateKeys,
        Date displayDateGT, Date displayDateLT, Date reviewDate, boolean andOperator,
        QueryDefinition<JournalArticle> queryDefinition, boolean inlineSQLHelper) {

    articleIds = CustomSQLUtil.keywords(articleIds, false);
    titles = CustomSQLUtil.keywords(titles);
    descriptions = CustomSQLUtil.keywords(descriptions, false);
    contents = CustomSQLUtil.keywords(contents, false);
    ddmStructureKeys = CustomSQLUtil.keywords(ddmStructureKeys, false);
    ddmTemplateKeys = CustomSQLUtil.keywords(ddmTemplateKeys, false);
    Timestamp displayDateGT_TS = CalendarUtil.getTimestamp(displayDateGT);
    Timestamp displayDateLT_TS = CalendarUtil.getTimestamp(displayDateLT);
    Timestamp reviewDate_TS = CalendarUtil.getTimestamp(reviewDate);

    Session session = null;/*w  w  w. j  a va2s  .  c o  m*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), FIND_BY_C_G_F_C_A_V_T_D_C_S_T_D_R, queryDefinition,
                "JournalArticle");

        sql = replaceStatusJoin(sql, queryDefinition);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(JournalArticle.groupId = ?) AND", StringPool.BLANK);
        }

        if (folderIds.isEmpty()) {
            sql = StringUtil.replace(sql, "([$FOLDER_ID$]) AND", StringPool.BLANK);
        } else {
            sql = StringUtil.replace(sql, "[$FOLDER_ID$]",
                    getFolderIds(folderIds, JournalArticleImpl.TABLE_NAME));
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.articleId", StringPool.LIKE, false,
                articleIds);

        if ((version == null) || (version <= 0)) {
            sql = StringUtil.replace(sql, "(JournalArticle.version = ?) [$AND_OR_CONNECTOR$]",
                    StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticleLocalization.title", StringPool.LIKE, false,
                titles);
        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticleLocalization.description", StringPool.LIKE,
                true, descriptions);
        sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.content", StringPool.LIKE, false, contents);

        sql = replaceStructureTemplate(sql, ddmStructureKeys, ddmTemplateKeys);

        if (!isNullArray(ddmStructureKeys)) {
            sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.DDMStructureKey", StringPool.LIKE, false,
                    ddmStructureKeys);
        }

        if (!isNullArray(ddmTemplateKeys)) {
            sql = CustomSQLUtil.replaceKeywords(sql, "JournalArticle.DDMTemplateKey", StringPool.LIKE, false,
                    ddmTemplateKeys);
        }

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);
        sql = CustomSQLUtil.replaceOrderBy(sql, queryDefinition.getOrderByComparator("JournalArticle"));

        if (inlineSQLHelper) {
            sql = InlineSQLHelperUtil.replacePermissionCheck(sql, JournalArticle.class.getName(),
                    "JournalArticle.resourcePrimKey", groupId);

            sql = StringUtil.replace(sql, "(companyId", "(JournalArticle.companyId");
        }

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addEntity(JournalArticleImpl.TABLE_NAME, JournalArticleImpl.class);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(titles, 2);
        qPos.add(descriptions, 2);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        for (long folderId : folderIds) {
            qPos.add(folderId);
        }

        qPos.add(classNameId);
        qPos.add(queryDefinition.getStatus());

        if (!isNullArray(ddmStructureKeys)) {
            qPos.add(ddmStructureKeys, 2);
        }

        if (!isNullArray(ddmTemplateKeys)) {
            qPos.add(ddmTemplateKeys, 2);
        }

        qPos.add(articleIds, 2);

        if ((version != null) && (version > 0)) {
            qPos.add(version);
        }

        qPos.add(contents, 2);
        qPos.add(displayDateGT_TS);
        qPos.add(displayDateGT_TS);
        qPos.add(displayDateLT_TS);
        qPos.add(displayDateLT_TS);
        qPos.add(reviewDate_TS);
        qPos.add(reviewDate_TS);

        return (List<JournalArticle>) QueryUtil.list(q, getDialect(), queryDefinition.getStart(),
                queryDefinition.getEnd());
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.journal.service.persistence.impl.JournalFeedFinderImpl.java

License:Open Source License

@Override
public int countByC_G_F_N_D(long companyId, long groupId, String[] feedIds, String[] names,
        String[] descriptions, boolean andOperator) {

    feedIds = CustomSQLUtil.keywords(feedIds, false);
    names = CustomSQLUtil.keywords(names);
    descriptions = CustomSQLUtil.keywords(descriptions);

    Session session = null;/*from   ww w  . j ava2 s.c o  m*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), COUNT_BY_C_G_F_N_D);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "feedId", StringPool.LIKE, false, feedIds);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(description)", StringPool.LIKE, true, descriptions);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(feedIds, 2);
        qPos.add(names, 2);
        qPos.add(descriptions, 2);

        Iterator<Long> itr = q.iterate();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.journal.service.persistence.impl.JournalFeedFinderImpl.java

License:Open Source License

@Override
public List<JournalFeed> findByC_G_F_N_D(long companyId, long groupId, String[] feedIds, String[] names,
        String[] descriptions, boolean andOperator, int start, int end, OrderByComparator<JournalFeed> obc) {

    feedIds = CustomSQLUtil.keywords(feedIds, false);
    names = CustomSQLUtil.keywords(names);
    descriptions = CustomSQLUtil.keywords(descriptions);

    Session session = null;/*  ww  w.  j  a  v  a  2 s.  c  om*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(getClass(), FIND_BY_C_G_F_N_D);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", StringPool.BLANK);
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "feedId", StringPool.LIKE, false, feedIds);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(description)", StringPool.LIKE, true, descriptions);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);
        sql = CustomSQLUtil.replaceOrderBy(sql, obc);

        SQLQuery q = session.createSynchronizedSQLQuery(sql);

        q.addEntity("JournalFeed", JournalFeedImpl.class);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(feedIds, 2);
        qPos.add(names, 2);
        qPos.add(descriptions, 2);

        return (List<JournalFeed>) QueryUtil.list(q, getDialect(), start, end);
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.newsletter.service.persistence.NewsletterContactFinderImpl.java

License:Open Source License

protected int doCountByC_G_C_E_N(long companyId, long groupId, long campaignId, String[] emails, String[] names,
        boolean andOperator, int start, int end, OrderByComparator orderByComparator) throws SystemException {

    names = CustomSQLUtil.keywords(names);
    emails = CustomSQLUtil.keywords(emails);

    Session session = null;/*from ww  w  . j  a v  a 2  s . c  om*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(COUNT_BY_C_G_C_E_N);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", "");
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(email)", StringPool.LIKE, false, emails);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        SQLQuery q = session.createSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(campaignId);
        qPos.add(emails, 2);
        qPos.add(names, 2);

        Iterator<Long> itr = q.list().iterator();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.newsletter.service.persistence.NewsletterContactFinderImpl.java

License:Open Source License

protected int doCountByC_G_C_E_N_S(long companyId, long groupId, long campaignId, String[] emails,
        String[] names, boolean sent, boolean andOperator, int start, int end,
        OrderByComparator orderByComparator) throws SystemException {

    names = CustomSQLUtil.keywords(names);
    emails = CustomSQLUtil.keywords(emails);

    Session session = null;//from   w  w  w  . ja v a 2s .  c  o m

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(COUNT_BY_C_G_C_E_N_S);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", "");
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(email)", StringPool.LIKE, false, emails);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        SQLQuery q = session.createSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(campaignId);
        qPos.add(emails);
        qPos.add(names);
        qPos.add(sent);

        Iterator<Long> itr = q.list().iterator();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.newsletter.service.persistence.NewsletterContactFinderImpl.java

License:Open Source License

protected int doCountByC_G_N_E(long companyId, long groupId, String[] names, String[] emails,
        boolean andOperator, int start, int end, OrderByComparator orderByComparator) throws SystemException {

    names = CustomSQLUtil.keywords(names);
    emails = CustomSQLUtil.keywords(emails);

    Session session = null;//from   ww  w .  j  ava  2  s . co m

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(COUNT_BY_C_G_N_E);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", "");
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(email)", StringPool.LIKE, false, emails);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);

        SQLQuery q = session.createSQLQuery(sql);

        q.addScalar(COUNT_COLUMN_NAME, Type.LONG);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(emails);
        qPos.add(names);

        Iterator<Long> itr = q.list().iterator();

        if (itr.hasNext()) {
            Long count = itr.next();

            if (count != null) {
                return count.intValue();
            }
        }

        return 0;
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}

From source file:com.liferay.newsletter.service.persistence.NewsletterContactFinderImpl.java

License:Open Source License

protected List<NewsletterContact> doFindByC_G_C_E_N(long companyId, long groupId, long campaignId,
        String[] emails, String[] names, boolean andOperator, int start, int end,
        OrderByComparator orderByComparator) throws SystemException {

    names = CustomSQLUtil.keywords(names);
    emails = CustomSQLUtil.keywords(emails);

    Session session = null;/*from  w  w w . j ava2s  .  c  om*/

    try {
        session = openSession();

        String sql = CustomSQLUtil.get(FIND_BY_C_G_C_E_N);

        if (groupId <= 0) {
            sql = StringUtil.replace(sql, "(groupId = ?) AND", "");
        }

        sql = CustomSQLUtil.replaceKeywords(sql, "lower(email)", StringPool.LIKE, false, emails);
        sql = CustomSQLUtil.replaceKeywords(sql, "lower(name)", StringPool.LIKE, false, names);

        sql = CustomSQLUtil.replaceAndOperator(sql, andOperator);
        sql = CustomSQLUtil.replaceOrderBy(sql, orderByComparator);

        SQLQuery q = session.createSQLQuery(sql);

        q.addEntity("NewsletterContact", NewsletterContactImpl.class);

        QueryPos qPos = QueryPos.getInstance(q);

        qPos.add(companyId);

        if (groupId > 0) {
            qPos.add(groupId);
        }

        qPos.add(campaignId);
        qPos.add(emails, 2);
        qPos.add(names, 2);

        return (List<NewsletterContact>) QueryUtil.list(q, getDialect(), start, end);
    } catch (Exception e) {
        throw new SystemException(e);
    } finally {
        closeSession(session);
    }
}