Example usage for com.liferay.portal.kernel.search BooleanQuery addTerms

List of usage examples for com.liferay.portal.kernel.search BooleanQuery addTerms

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search BooleanQuery addTerms.

Prototype

public Map<String, Query> addTerms(String[] fields, String value, boolean like) throws ParseException;

Source Link

Usage

From source file:vn.com.ecopharma.emp.service.impl.EmpLocalServiceImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Document> filterEmployeeByFields(SearchContext searchContext, Map<String, Object> filters,
        Sort sort, long companyId, int start, int end) throws ParseException {
    final List<Query> queries = new ArrayList<>();
    if (filters != null) {
        Date joinedDateFrom = filters.get(EmpField.JOINED_DATE_FROM) != null
                ? (Date) filters.get(EmpField.JOINED_DATE_FROM)
                : null;/*from  w ww.  j a v a 2 s.  c  om*/

        Date joinedDateTo = filters.get(EmpField.JOINED_DATE_TO) != null
                ? (Date) filters.get(EmpField.JOINED_DATE_TO)
                : null;

        for (Map.Entry<String, Object> filter : filters.entrySet()) {
            final String filterProperty = filter.getKey();
            final Object filterValue = filter.getValue();
            LOGGER.info("Filter Property: " + filterProperty);

            if (filterValue instanceof String) {
                LOGGER.info("Filter Property Value: " + filterValue);
                if (filterProperty.equalsIgnoreCase(GLOBAL_FILTER)) {
                    final BooleanQuery globalFilterBooleanQuery = BooleanQueryFactoryUtil.create(searchContext);
                    globalFilterBooleanQuery.addTerms(getGlobalSearchFields(), (String) filterValue, true);
                    queries.add(globalFilterBooleanQuery);
                } else {
                    // TODO
                    BooleanQuery stringFilterQuery = BooleanQueryFactoryUtil.create(searchContext);
                    stringFilterQuery.addTerm(filterProperty, (String) filterValue, true,
                            BooleanClauseOccur.MUST);
                    queries.add(stringFilterQuery);
                }
            } else if (filterValue instanceof List<?>) {
                if ((filterProperty.equalsIgnoreCase(EmpField.GENDER))
                        || filterProperty.equalsIgnoreCase(EmpField.STATUS)) {
                    queries.add(
                            createStringListQuery(filterProperty, (List<String>) filterValue, searchContext));
                } else if (isOrganizationFilter(filterProperty)) {
                    queries.add(createOrganizationFilterQuery(filterProperty, (List<String>) filterValue,
                            searchContext));
                }
            } else if (filterValue instanceof Date) {
                Query dateRangeQuery = createDateTermRangeQuery(EmpField.JOINED_DATE, joinedDateFrom,
                        joinedDateTo, true, true, searchContext);
                if (dateRangeQuery != null)
                    queries.add(dateRangeQuery);
            } else if (filterValue instanceof Map.Entry<?, ?>) { // for
                // autoComplete
                // filter
                final Map.Entry<String[], String> autoCompleteFilterEntry = (Map.Entry<String[], String>) filterValue;

                final BooleanQuery autoCompleteFilterBooleanQuery = BooleanQueryFactoryUtil
                        .create(searchContext);
                autoCompleteFilterBooleanQuery.addTerms(autoCompleteFilterEntry.getKey(),
                        autoCompleteFilterEntry.getValue(), true);
                queries.add(autoCompleteFilterBooleanQuery);

            }
        }
    }
    /* SORT */
    if (sort == null) {
        sort = new Sort(EmpField.EMP_ID, false);
    }
    return searchAllUnDeletedEmpIndexedDocument(searchContext, queries, companyId, sort, start, end);
}

From source file:vn.com.ecopharma.hrm.rc.service.impl.CandidateLocalServiceImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Document> filterByFields(SearchContext searchContext, Map<String, Object> filters, Sort sort,
        long companyId, int start, int end) throws ParseException {
    final List<Query> queries = new ArrayList<>();
    Date dateFrom = filters.get(CandidateField.APPLY_DATE_FROM) != null
            ? (Date) filters.get(CandidateField.APPLY_DATE_FROM)
            : null;/*www .j  av  a  2  s  .  c o m*/
    Date dateTo = filters.get(CandidateField.APPLY_DATE_TO) != null
            ? (Date) filters.get(CandidateField.APPLY_DATE_TO)
            : null;
    for (Map.Entry<String, Object> filter : filters.entrySet()) {
        String filterProperty = filter.getKey();
        Object filterValue = filter.getValue();
        LOGGER.info(filterProperty);
        LOGGER.info(filterValue);
        if (filterValue instanceof String) {
            if (filterProperty.equalsIgnoreCase(CandidateField.GLOBAL)) {
                final BooleanQuery globalFilterBooleanQuery = BooleanQueryFactoryUtil.create(searchContext);
                globalFilterBooleanQuery.addTerms(getGlobalSearchableFields(), (String) filterValue, true);
                queries.add(globalFilterBooleanQuery);
            } else {
                BooleanQuery stringFilterQuery = BooleanQueryFactoryUtil.create(searchContext);
                stringFilterQuery.addTerm(filterProperty, (String) filterValue, true, BooleanClauseOccur.MUST);
                queries.add(stringFilterQuery);
            }
        } else if (filterValue instanceof List<?>) {
            queries.add(EmpLocalServiceUtil.createStringListQuery(filterProperty, (List<String>) filterValue,
                    searchContext));
        } else if (filterValue instanceof Date) {
            // Query applicationDateRangeQuery = EmpLocalServiceUtil
            // .createDateTermRangeQuery(
            // CandidateField.APPLICATION_DATE, dateFrom,
            // dateTo, true, true, searchContext);
            Query applicationDateRangeQuery = createDateTermRangeQuery(CandidateField.APPLICATION_DATE,
                    dateFrom, dateTo, searchContext);
            if (applicationDateRangeQuery != null)
                queries.add(applicationDateRangeQuery);
        }
    }
    /* SORT */
    if (sort == null) {
        sort = new Sort(CandidateField.CANDIDATE_ID, false);
    }
    return searchAllUnDeletedCandidatesIndexedDocument(searchContext, queries, companyId, sort, start, end);
}

From source file:vn.com.ecopharma.hrm.rc.service.impl.VacancyLocalServiceImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Document> filterByFields(SearchContext searchContext, Map<String, Object> filters, Sort sort,
        long companyId, int start, int end) throws ParseException {
    final List<Query> queries = new ArrayList<>();

    for (Map.Entry<String, Object> filter : filters.entrySet()) {
        String filterProperty = filter.getKey();
        Object filterValue = filter.getValue();

        if (filterValue instanceof String) {
            if (filterProperty.equalsIgnoreCase(VacancyField.GLOBAL)) {
                final BooleanQuery globalFilterBooleanQuery = BooleanQueryFactoryUtil.create(searchContext);
                globalFilterBooleanQuery.addTerms(getGlobalSearchableFields(), (String) filterValue, true);
                queries.add(globalFilterBooleanQuery);
            } else if (filterProperty.equalsIgnoreCase(CandidateField.APPLY_DATE_FROM)
                    || filterProperty.equalsIgnoreCase(CandidateField.APPLY_DATE_TO)) {
                // final String dateFrom = filters
                // .get(CandidateField.APPLY_DATE_FROM) != null ? (String)
                // filters
                // .get(CandidateField.APPLY_DATE_FROM)
                // : StringUtils.EMPTY;
                // final String dateTo = filters
                // .get(CandidateField.APPLY_DATE_TO) != null ? (String)
                // filters
                // .get(CandidateField.APPLY_DATE_TO)
                // : StringUtils.EMPTY;
                //
                // EmpLocalServiceUtil.createDateTermRangeQuery(
                // CandidateField.APPLICATION_DATE, queries, dateFrom,
                // dateTo, searchContext);
                // Query dateRangeQuery =
                // candidateLocalService.createDateTermRangeQuery(filterProperty,
                // dateFrom, dateTo, searchContext)
            } else {
                BooleanQuery stringFilterQuery = BooleanQueryFactoryUtil.create(searchContext);
                stringFilterQuery.addTerm(filterProperty, (String) filterValue, true, BooleanClauseOccur.MUST);
                queries.add(stringFilterQuery);
            }/*from  www  .j  a va  2  s  .  c om*/
        } else if (filterValue instanceof List<?>) {
            queries.add(EmpLocalServiceUtil.createStringListQuery(filterProperty, (List<String>) filterValue,
                    searchContext));
        }
    }
    return searchAllUnDeletedVacanciesIndexedDocument(searchContext, queries, companyId, sort, start, end);
}