private Query createSearchPageQuery(QueryCriteria queryCriteria, QueryManager queryManager) throws Exception { SQLQueryBuilder queryBuilder = new SQLQueryBuilder(); List<String> mopPages = this.searchPageByTitle(queryCriteria.getSiteName(), queryCriteria.getKeyword()); List<QueryProperty> queryProps = new ArrayList<QueryCriteria.QueryProperty>(); for (String page : mopPages) { QueryProperty prop = queryCriteria.new QueryProperty(); prop.setName("mop:page"); prop.setValue(page); prop.setComparisonType(COMPARISON_TYPE.EQUAL); queryProps.add(prop); } QueryProperty prop = queryCriteria.new QueryProperty(); prop.setName("exo:name"); prop.setValue("mop:" + queryCriteria.getKeyword().toLowerCase()); queryProps.add(prop); queryCriteria.setQueryMetadatas(queryProps.toArray(new QueryProperty[queryProps.size()])); mapQueryTypes(queryCriteria, queryBuilder); if (queryCriteria.isFulltextSearch()) { mapQueryPath(queryCriteria, queryBuilder); mapFulltextQueryTearm(queryCriteria, queryBuilder, LOGICAL.OR); } else { searchByNodeName(queryCriteria, queryBuilder); } mapCategoriesCondition(queryCriteria, queryBuilder); mapDatetimeRangeSelected(queryCriteria, queryBuilder); mapMetadataProperties(queryCriteria, queryBuilder, LOGICAL.OR); orderBy(queryCriteria, queryBuilder); String queryStatement = queryBuilder.createQueryStatement(); Query query = queryManager.createQuery(queryStatement, Query.SQL); return query; }
/** * Search site content. * * @param queryCriteria the query criteria * @param queryManager the query manager * @return the query result * @throws Exception the exception */ private Query createQuery(QueryCriteria queryCriteria, QueryManager queryManager) throws Exception { SQLQueryBuilder queryBuilder = new SQLQueryBuilder(); mapQueryTypes(queryCriteria, queryBuilder); if (queryCriteria.isFulltextSearch()) { mapQueryPath(queryCriteria, queryBuilder); mapFulltextQueryTearm(queryCriteria, queryBuilder, LOGICAL.OR); } else { searchByNodeName(queryCriteria, queryBuilder); } mapCategoriesCondition(queryCriteria, queryBuilder); mapDatetimeRangeSelected(queryCriteria, queryBuilder); mapMetadataProperties(queryCriteria, queryBuilder, LOGICAL.AND); orderBy(queryCriteria, queryBuilder); String queryStatement = queryBuilder.createQueryStatement(); Query query = queryManager.createQuery(queryStatement, Query.SQL); return query; }