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;
               }
   
  

Reply via email to