From: <ssk...@vh...> - 2005-12-05 15:49:54
|
Author: sskracic Date: 2005-12-05 16:47:43 +0100 (Mon, 05 Dec 2005) New Revision: 1026 Modified: trunk/ccm-cms/src/com/arsdigita/cms/search/LuceneQueryEngine.java Log: In CMS, we search for categorised bundles, so the addCategoryFilter is overridden, alla IntermediaQueryEngine. Modified: trunk/ccm-cms/src/com/arsdigita/cms/search/LuceneQueryEngine.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/search/LuceneQueryEngine.java 2005-12-05 15:45:52 UTC (rev 1025) +++ trunk/ccm-cms/src/com/arsdigita/cms/search/LuceneQueryEngine.java 2005-12-05 15:47:43 UTC (rev 1026) @@ -18,28 +18,28 @@ */ package com.arsdigita.cms.search; +import com.arsdigita.categorization.Category; import com.arsdigita.cms.ContentType; +import com.arsdigita.cms.search.ContentTypeFilterSpecification; +import com.arsdigita.cms.search.ContentTypeFilterType; +import com.arsdigita.kernel.PartyCollection; +import com.arsdigita.search.FilterSpecification; import com.arsdigita.search.FilterType; -import com.arsdigita.search.FilterSpecification; +import com.arsdigita.search.filters.CategoryFilterSpecification; +import com.arsdigita.search.filters.DateRangeFilterSpecification; +import com.arsdigita.search.filters.PartyFilterSpecification; import com.arsdigita.search.lucene.BaseQueryEngine; -import com.arsdigita.search.lucene.UnionFilter; -import com.arsdigita.search.lucene.UnionFilter; +import com.arsdigita.search.lucene.CategoryFilter; +import com.arsdigita.search.lucene.Document; import com.arsdigita.search.lucene.ObjectTypeFilter; import com.arsdigita.search.lucene.PartyFilter; import com.arsdigita.search.lucene.TypeSpecificFilter; -import com.arsdigita.search.lucene.Document; -import com.arsdigita.search.filters.DateRangeFilterSpecification; -import com.arsdigita.search.filters.PartyFilterSpecification; -import com.arsdigita.cms.search.ContentTypeFilterSpecification; -import com.arsdigita.cms.search.ContentTypeFilterType; -import com.arsdigita.kernel.PartyCollection; - -import java.util.List; +import com.arsdigita.search.lucene.UnionFilter; import java.util.ArrayList; import java.util.Date; - +import java.util.List; +import org.apache.lucene.search.DateFilter; import org.apache.lucene.search.Filter; -import org.apache.lucene.search.DateFilter; public class LuceneQueryEngine extends BaseQueryEngine { @@ -49,18 +49,18 @@ super.addFilter(list, filter); FilterType type = filter.getType(); - + if (ContentTypeFilterType.KEY.equals(type.getKey())) { addContentTypeFilter(list, (ContentTypeFilterSpecification)filter); } else if (VersionFilterType.KEY.equals(type.getKey())) { addVersionFilter(list, (VersionFilterSpecification)filter); } else if (LastModifiedDateFilterType.KEY.equals(type.getKey())) { - addDateRangeFilter(list, - (DateRangeFilterSpecification)filter, + addDateRangeFilter(list, + (DateRangeFilterSpecification)filter, Document.LAST_MODIFIED_DATE); } else if (CreationDateFilterType.KEY.equals(type.getKey())) { - addDateRangeFilter(list, - (DateRangeFilterSpecification)filter, + addDateRangeFilter(list, + (DateRangeFilterSpecification)filter, Document.CREATION_DATE); } else if (LastModifiedUserFilterType.KEY.equals(type.getKey())) { addPartyFilter(list, (PartyFilterSpecification)filter, @@ -82,7 +82,7 @@ list.add(DateFilter.After(paramName, startDate)); } else if (endDate != null) { list.add(DateFilter.Before(paramName, startDate)); - } + } } protected void addPartyFilter(List list, @@ -116,9 +116,18 @@ } Filter[] filters = new Filter[types.length]; - for (int i = 0 ; i < types.length ; i++) { + for (int i = 0 ; i < types.length ; i++) { filters[i] = new ObjectTypeFilter(types[i].getAssociatedObjectType()); } list.add(new UnionFilter(filters)); - } + } + + protected void addCategoryFilter(List list, + CategoryFilterSpecification filterSpec) { + Category[] cats = filterSpec.getCategories(); + if (cats == null || cats.length == 0) { + return; + } + list.add(new CategoryFilter(cats, "com.arsdigita.cms.searchCategoryObjects")); + } } |