knguyen 2005/07/05 11:07:53 CEST
Modified files: (Branch: JAHIA-4-0-BRANCH)
src/java/org/jahia/services/containers ContainerFactory.java
Log:
- adding chaining searchers to allow combination of and, or, xor between
several searcher
Revision Changes Path
1.13.2.7 +34 -12
jahia/src/java/org/jahia/services/containers/ContainerFactory.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/src/java/org/jahia/services/containers/ContainerFactory.java.diff?r1=1.13.2.6&r2=1.13.2.7&f=h
Index: ContainerFactory.java
===================================================================
RCS file:
/home/cvs/repository/jahia/src/java/org/jahia/services/containers/Attic/ContainerFactory.java,v
retrieving revision 1.13.2.6
retrieving revision 1.13.2.7
diff -u -r1.13.2.6 -r1.13.2.7
--- ContainerFactory.java 26 Apr 2005 08:37:31 -0000 1.13.2.6
+++ ContainerFactory.java 5 Jul 2005 09:07:53 -0000 1.13.2.7
@@ -53,6 +53,8 @@
import org.jahia.services.cache.CacheFactory;
import org.jahia.data.fields.JahiaField;
import org.jahia.services.search.ContainerSearcher;
+import org.jahia.services.search.JahiaSearcher;
+import org.jahia.services.search.ChainedJahiaSearcher;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.services.usermanager.JahiaUser;
@@ -307,7 +309,7 @@
BitSet resultBitSet = null;
BitSet filterBitSet = null;
- ContainerSearcher cSearcher = null;
+ JahiaSearcher cSearcher = null;
JahiaSearchResult searchResult = null;
ContainerFilters cFilters = null;
boolean resultHasChanged = false;
@@ -344,8 +346,11 @@
}
+ /*
resultHasChanged = ((cSearcher != null &&
cSearcher.getUpdateStatus ()) ||
+ (cFilters != null && cFilters.getUpdateStatus ()));*/
+ resultHasChanged = ((cSearcher != null) ||
(cFilters != null && cFilters.getUpdateStatus ()));
if (resultHasChanged) {
@@ -439,21 +444,21 @@
*
* @author NK
*/
- private ContainerSearcher getCtnListSearcher (ParamBean params,
+ private JahiaSearcher getCtnListSearcher (ParamBean params,
String containerListName,
int clistID)
throws JahiaException {
- ContainerSearcher cSearcher = (ContainerSearcher) params.getRequest
()
+ JahiaSearcher cSearcher = (JahiaSearcher) params.getRequest ()
.getAttribute (containerListName +
"_search_handler");
// retrieve the previous searcher cached in session
- ContainerSearcher cachedContainerSearcher = null;
+ JahiaSearcher cachedContainerSearcher = null;
HttpSession session = params.getSession ();
if (session != null) {
cachedContainerSearcher =
- (ContainerSearcher) session.getAttribute (clistID + "_"
+ (JahiaSearcher) session.getAttribute (clistID + "_"
+ params.getPageID () + "_" + containerListName +
"_search_handler" + "_" +
params.getEntryLoadRequest().toString());
}
@@ -466,23 +471,40 @@
+ containerListName);
*/
- if (cSearcher == null || !cSearcher.isQueryValid ()) {
+ if (cSearcher == null || cSearcher.getQuery() == null ||
"".equals(cSearcher.getQuery().trim())) {
// create a fake searcher
cSearcher = new ContainerSearcher (clistID, "",
params.getEntryLoadRequest ());
- cSearcher.setUpdateStatus();
+ ((ContainerSearcher)cSearcher).setUpdateStatus();
} else {
boolean doNewSearch = true;
String searchQuery = cSearcher.getQuery();
- ContainerSearcher customSearcher = null;
- if (!cSearcher.isSiteModeSearching ()) {
+ JahiaSearcher customSearcher = null;
+ if ( cSearcher instanceof ContainerSearcher ){
+ ContainerSearcher cs = (ContainerSearcher)cSearcher;
+ if (!cs.isSiteModeSearching ()) {
customSearcher = new ContainerSearcher (clistID,
- cSearcher.getContainerLevel (),
- cSearcher.getQuery (),
- cSearcher.getEntryLoadRequest ());
+ cs.getContainerLevel (),
+ cs.getQuery (),
+ cs.getEntryLoadRequest ());
} else {
+ customSearcher = cs;
+ }
+ } else if ( cSearcher instanceof ChainedJahiaSearcher ){
+ JahiaSearcher[] ar =
((ChainedJahiaSearcher)cSearcher).getChain();
+ ContainerSearcher cs = null;
+ for ( int i=0; i<ar.length; i++ ){
+ cs = (ContainerSearcher)ar[i];
+ if (!cs.isSiteModeSearching ()) {
+ customSearcher = new ContainerSearcher (clistID,
+ cs.getContainerLevel (),
+ cs.getQuery (),
+ cs.getEntryLoadRequest ());
+ ar[i] = cs;
+ }
+ }
customSearcher = cSearcher;
}