a bit more cleaning up
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / TaxonServiceImpl.java
index 8f42471185b59ef2e0a56b7ba0d3a0f5bba4c9c2..beb58134b1fb3c581363cba49f01a47b690821bf 100644 (file)
@@ -1155,99 +1155,64 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
             directorySelectClass = clazz;\r
         }\r
 \r
-//        queryString = queryString.toLowerCase();\r
 \r
-        StringBuilder luceneQueryTemplate = new StringBuilder();\r
         BooleanQuery finalQuery = new BooleanQuery();\r
         BooleanQuery textQuery = new BooleanQuery();\r
-        Set<String> freetextFields = new HashSet<String>();\r
 \r
         LuceneSearch luceneSearch = new LuceneSearch(getSession(), directorySelectClass);\r
-        QueryFactory queryBuilder = new QueryFactory(luceneSearch);\r
+        QueryFactory queryFactory = new QueryFactory(luceneSearch);\r
 \r
         // ---- search criteria\r
-\r
-//        luceneQueryTemplate.append("+(");\r
-//        luceneQueryTemplate.append("titleCache:(%1$s) ");\r
-        freetextFields.add("titleCache");\r
-        textQuery.add(queryBuilder.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
+        textQuery.add(queryFactory.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
 \r
         // common name\r
-        freetextFields.add("name");\r
-\r
         Query nameQuery;\r
         if(languages == null || languages.size() == 0){\r
-//            luceneQueryTemplate.append("name:(%1$s) ");\r
-            nameQuery = queryBuilder.newTermQuery("name", queryString);\r
+            nameQuery = queryFactory.newTermQuery("name", queryString);\r
         } else {\r
             nameQuery = new BooleanQuery();\r
             BooleanQuery languageSubQuery = new BooleanQuery();\r
-//            luceneQueryTemplate.append("(+name:(%1$s) ");\r
             for(Language lang : languages){\r
-//             luceneQueryTemplate.append(" +language.uuid:" + lang.getUuid().toString());\r
-                languageSubQuery.add(queryBuilder.newTermQuery("language.uuid",  lang.getUuid().toString()), Occur.SHOULD);\r
+                languageSubQuery.add(queryFactory.newTermQuery("language.uuid",  lang.getUuid().toString()), Occur.SHOULD);\r
             }\r
-            ((BooleanQuery) nameQuery).add(queryBuilder.newTermQuery("name", queryString), Occur.MUST);\r
+            ((BooleanQuery) nameQuery).add(queryFactory.newTermQuery("name", queryString), Occur.MUST);\r
             ((BooleanQuery) nameQuery).add(languageSubQuery, Occur.MUST);\r
-//            luceneQueryTemplate.append(")");\r
         }\r
         textQuery.add(nameQuery, Occur.SHOULD);\r
 \r
 \r
         // text field from TextData\r
-        freetextFields.add("text.ALL");\r
-//        appendLocalizedFieldQuery("text", languages, luceneQueryTemplate).append(" ");\r
-        textQuery.add(queryBuilder.newLocalizedTermQuery("text", queryString, languages), Occur.SHOULD);\r
+        textQuery.add(queryFactory.newLocalizedTermQuery("text", queryString, languages), Occur.SHOULD);\r
 \r
         // --- TermBase fields - by representation ----\r
         // state field from CategoricalData\r
-        freetextFields.add("states.state.representation.ALL");\r
-//        appendLocalizedFieldQuery("states.state.representation", languages, luceneQueryTemplate).append(" ");\r
-        textQuery.add(queryBuilder.newLocalizedTermQuery("states.state.representation", queryString, languages), Occur.SHOULD);\r
+        textQuery.add(queryFactory.newLocalizedTermQuery("states.state.representation", queryString, languages), Occur.SHOULD);\r
 \r
         // state field from CategoricalData\r
-        freetextFields.add("states.modifyingText.ALL");\r
-//        appendLocalizedFieldQuery("states.modifyingText", languages, luceneQueryTemplate).append(" ");\r
-        textQuery.add(queryBuilder.newLocalizedTermQuery("states.modifyingText", queryString, languages), Occur.SHOULD);\r
-//        luceneQueryTemplate.append(") ");\r
+        textQuery.add(queryFactory.newLocalizedTermQuery("states.modifyingText", queryString, languages), Occur.SHOULD);\r
 \r
         finalQuery.add(textQuery, Occur.MUST);\r
         // --- classification ----\r
 \r
         if(classification != null){\r
-//            luceneQueryTemplate.append("+inDescription.taxon.taxonNodes.classification.id:").append(PaddedIntegerBridge.paddInteger(classification.getId())).append(" ");\r
-            finalQuery.add(queryBuilder.newEntityIdQuery("inDescription.taxon.taxonNodes.classification.id", classification), Occur.MUST);\r
+            finalQuery.add(queryFactory.newEntityIdQuery("inDescription.taxon.taxonNodes.classification.id", classification), Occur.MUST);\r
         }\r
 \r
         // --- IdentifieableEntity fields - by uuid\r
         if(features != null && features.size() > 0 ){\r
-            finalQuery.add(queryBuilder.newEntityUuidQuery("feature.uuid", features), Occur.MUST);\r
-//            luceneQueryTemplate.append("+feature.uuid:(");\r
-//            for(Feature feature : features){\r
-//                luceneQueryTemplate.append(feature.getUuid()).append(" ");\r
-//            }\r
-//            luceneQueryTemplate.append(") ");\r
+            finalQuery.add(queryFactory.newEntityUuidQuery("feature.uuid", features), Occur.MUST);\r
         }\r
 \r
         // the description must be associated with a taxon\r
-//        luceneQueryTemplate.append("+inDescription.taxon.id:[ " + PaddedIntegerBridge.paddInteger(0) + " TO " + PaddedIntegerBridge.paddInteger(Integer.MAX_VALUE) + "] ");\r
-        //luceneQueryTemplate.append("-inDescription.taxon.id:" + PaddedIntegerBridge.NULL_STRING);\r
-        finalQuery.add(queryBuilder.newIdNotNullQuery("inDescription.taxon.id"), Occur.MUST);\r
-\r
-//        String luceneQueryStr = String.format(luceneQueryTemplate.toString(), queryString);\r
+        finalQuery.add(queryFactory.newIdNotNullQuery("inDescription.taxon.id"), Occur.MUST);\r
 \r
-        // --- sort fields\r
         SortField[] sortFields = new  SortField[]{SortField.FIELD_SCORE, new SortField("inDescription.taxon.titleCache__sort", false)};\r
 \r
-        // ---- execute criteria\r
-\r
-\r
-//        Query luceneQuery = luceneSearch.parse(luceneQueryStr);\r
         TopDocs topDocsResultSet = luceneSearch.executeSearch(finalQuery, clazz, pageSize, pageNumber, sortFields);\r
 \r
         String[] highlightFields = null;\r
         if(highlightFragments){\r
-            highlightFields = freetextFields.toArray(new String[freetextFields.size()]);\r
+            highlightFields = queryFactory.getTextFieldNames().toArray(new String[queryFactory.getTextFieldNames().size()]);\r
         }\r
 \r
         // initialize taxa, thighlight matches ....\r