dpillot     2005/10/19 16:24:53 CEST

  Modified files:
    core/src/java/org/jahia/engines/importexport 
                                                 ManageContentPicker.java 
  Log:
  content pick final enhancements
  
  Revision  Changes    Path
  1.40      +227 -88   
jahia/core/src/java/org/jahia/engines/importexport/ManageContentPicker.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/importexport/ManageContentPicker.java.diff?r1=1.39&r2=1.40&f=h
  
  
  
  Index: ManageContentPicker.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/importexport/ManageContentPicker.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- ManageContentPicker.java  19 Oct 2005 14:02:10 -0000      1.39
  +++ ManageContentPicker.java  19 Oct 2005 14:24:53 -0000      1.40
  @@ -2,7 +2,6 @@
   
   import org.jahia.content.ContainerDefinitionKey;
   import org.jahia.content.ContentObject;
  -import org.jahia.content.JahiaObject;
   import org.jahia.data.containers.JahiaContainerDefinition;
   import org.jahia.data.search.JahiaContainerSearchHit;
   import org.jahia.data.search.JahiaSearchHit;
  @@ -35,7 +34,7 @@
    *
    * @author Thomas Draier, joe Pillot
    * @author ${User}
  - * @version $Id: ManageContentPicker.java,v 1.39 2005/10/19 14:02:10 tdraier 
Exp $
  + * @version $Id: ManageContentPicker.java,v 1.40 2005/10/19 14:24:53 dpillot 
Exp $
    */
   public class ManageContentPicker {
       private static org.apache.log4j.Logger logger =
  @@ -138,9 +137,7 @@
       private boolean save(ProcessingContext jParams, HashMap engineMap, 
ContentObject object)
               throws JahiaException {
           String op = jParams.getParameter("contentPickOp");
  -        logger.debug("saving mode");
  -
  -        logger.debug("pickoperation:");
  +        logger.debug("saving mode:pickop="+op);
   
           try {
   
  @@ -169,7 +166,7 @@
       private void doSearch(ContentObject object, ProcessingContext 
processingContext, HashMap engineMap)
               throws Exception {
   
  -
  +        //domain scope
           Enumeration sites = siteService.getSites();
           int siteCount = siteService.getNbSites();
           engineMap.put("sitecount", "" + siteCount);
  @@ -181,81 +178,261 @@
           String smode = (String) processingContext.getParameter("condition1");
           String query_concat_mode=(String) 
processingContext.getParameter("concat");
   
  -        // checking NPE & emptyness
  +        // checking NPE & emptyness of important params
           if(searchString ==null) searchString="";
  +        String query1=searchString;
           if(smode==null || smode.equalsIgnoreCase("")) smode="or";
           if(query_concat_mode==null || 
query_concat_mode.equalsIgnoreCase("")) query_concat_mode="or";
   
  -        // alt queries non-use for now
  -        String query2=(String) processingContext.getParameter("query2");
  +        //get alt queries
  +        //query2
  +        //String query2=(String) processingContext.getParameter("query2");
  +        String query21=(String) processingContext.getParameter("query21");
  +        String query22=(String) processingContext.getParameter("query22");
  +        String query23=(String) processingContext.getParameter("query23");
  +        String query24=(String) 
processingContext.getParameter("condition24");
  +        String query244=(String) 
processingContext.getParameter("condition244");
           String smode2=(String) processingContext.getParameter("condition2");
  -        String query3=(String) processingContext.getParameter("query3");
  +        //query3
  +        //String query3=(String) processingContext.getParameter("query3");
  +        String query31=(String) processingContext.getParameter("query31");
  +        String query32=(String) processingContext.getParameter("query32");
  +        String query33=(String) processingContext.getParameter("query33");
  +        String query34=(String) 
processingContext.getParameter("condition34");
  +        String query344=(String) 
processingContext.getParameter("condition344");
           String smode3=(String) processingContext.getParameter("condition3");
  -        String query4=(String) processingContext.getParameter("query4");
  +        //query4
  +        //String query4=(String) processingContext.getParameter("query4");
  +        String query41=(String) processingContext.getParameter("query41");
  +        String query42=(String) processingContext.getParameter("query42");
  +        String query43=(String) processingContext.getParameter("query43");
  +        String query44=(String) 
processingContext.getParameter("condition44");
  +        String query444=(String) 
processingContext.getParameter("condition444");
           String smode4=(String) processingContext.getParameter("condition4");
   
   
  +
  +        //check NPE on alt queries and alt modes
  +        //if(query2==null) query2="";
  +        if(query21==null) query21="";
  +        if(query22==null) query22="";
  +        if(query23==null) query23="";
  +        if(query244==null) query244="-";
  +
  +        //if(query3==null) query3="";
  +        if(query31==null) query31="";
  +        if(query32==null) query32="";
  +        if(query33==null) query33="";
  +        if(query344==null) query344="-";
  +
  +        //if(query4==null) query4="";
  +        if(query41==null) query41="";
  +        if(query42==null) query42="";
  +        if(query43==null) query43="";
  +        if(query444==null) query444="-";
  +
  +        //conditions
  +        if(smode2==null) smode2="creator";//default
  +        if(smode3==null) smode3="creator";
  +        if(smode4==null) smode4="creator";
  +        engineMap.put("smode2",smode2);
  +        engineMap.put("smode3",smode3);
  +        engineMap.put("smode4",smode4);
  +
  +        //order
  +        String orderBy = (String) 
processingContext.getParameter("orderby");//orderby parameter
  +        if (orderBy == null || orderBy.equalsIgnoreCase("")) {
  +            orderBy = "score";
  +            logger.warn("order set on default score");
  +        }
  +
          //check on emptyness of queries
  -        if ((searchString == null || searchString.equalsIgnoreCase(""))
  -                && (query2==null || query2.equalsIgnoreCase(""))
  -                && (query3==null || query3.equalsIgnoreCase(""))
  -                && (query4==null || query4.equalsIgnoreCase(""))) {
  +        if (searchString.equalsIgnoreCase("")
  +                && (query21.equalsIgnoreCase("") || 
query22.equalsIgnoreCase("") || query23.equalsIgnoreCase("") || 
query244.equalsIgnoreCase("-"))
  +                && (query31.equalsIgnoreCase("") || 
query32.equalsIgnoreCase("") || query33.equalsIgnoreCase("") || 
query344.equalsIgnoreCase("-"))
  +                && (query41.equalsIgnoreCase("") || 
query42.equalsIgnoreCase("") || query43.equalsIgnoreCase("") || 
query444.equalsIgnoreCase("-"))
  +                ) {
   
  +            logger.debug("initialization of primary parameters to default 
values");
               engineMap.put("searchString", "");
               engineMap.put("smode","or");
               engineMap.put("concat","or");
               engineMap.put("orderby","score");
  -            logger.warn("searching string is empty");
  +
               //return;
           }
   
  +        //store alt queries non-null in engineMap
  +        //if(!query2.equalsIgnoreCase("")) engineMap.put("query2",query2);
  +        String query2="";
  +        String query3="";
  +        String query4="";
  +        long now=System.currentTimeMillis();
  +        long day=3600*1000*24;
  +        long aweek=now-(day*7);
  +        long amonth=now-(day*30);
  +        long amonths=now-(day*180);
  +        String[] 
scopedate={"jahia.metadata_lastpublishingdate:","jahia.metadata_lastmodificationdate:","jahia.metadata_creationdate:"};
  +        //query2s
  +        if(!query21.equalsIgnoreCase("")) {
  +            engineMap.put("query21",query21);
  +            String subcondition=(String) 
processingContext.getParameter("condition21");
  +            if(subcondition!=null && 
subcondition.equalsIgnoreCase("creator")){
  +               query2="jahia.metadata_creator:"+query21;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("contributor")){
  +               query2="jahia.metadata_lastcontributor:"+query21;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("all")){
  +               query2="(jahia.metadata_creator:"+query21+" OR 
jahia.metadata_lastcontributor:"+query21+")";
  +            }
  +        }
  +        if(!query22.equalsIgnoreCase("")) {
  +            engineMap.put("query22",query22);
  +            query2="jahia.metadata_keywords:"+query22;
  +        }
  +        if(!query23.equalsIgnoreCase("")) {
  +            engineMap.put("query23",query23);
  +            query2="jahia.page_id:"+query23;
  +        }
  +        if(!query244.equalsIgnoreCase("-")) {
  +            engineMap.put("condition24",query24);
  +            engineMap.put("condition244",query244);
  +            int valscope=0;
  +            if(query24.equalsIgnoreCase("pub")) valscope=0;
  +                if(query24.equalsIgnoreCase("mod")) valscope=1;
  +                if(query24.equalsIgnoreCase("cre")) valscope=2;
  +            if(query244.equalsIgnoreCase("week")){
  +                query2=scopedate[valscope]+"["+NumberPadding.pad(aweek)+" TO 
"+NumberPadding.pad(now)+"]";
  +            } else if(query244.equalsIgnoreCase("month")){
  +                query2=scopedate[valscope]+"["+NumberPadding.pad(amonth)+" 
TO "+NumberPadding.pad(now)+"]";
  +            } else if(query244.equalsIgnoreCase("months")){
  +                query2=scopedate[valscope]+"["+NumberPadding.pad(amonths)+" 
TO "+NumberPadding.pad(now)+"]";
  +            }
  +
  +        }
   
  +        //query3s
  +        if(!query31.equalsIgnoreCase("")) {
  +            engineMap.put("query31",query31);
  +            String subcondition=(String) 
processingContext.getParameter("condition31");
  +            if(subcondition!=null && 
subcondition.equalsIgnoreCase("creator")){
  +               query3="jahia.metadata_creator:"+query31;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("contributor")){
  +               query3="jahia.metadata_lastcontributor:"+query31;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("all")){
  +               query3="(jahia.metadata_creator:"+query31+" OR 
jahia.metadata_lastcontributor:"+query31+")";
  +            }
  +        }
  +        if(!query32.equalsIgnoreCase("")) {
  +            engineMap.put("query32",query32);
  +            query3="jahia.metadata_keywords:"+query32;
  +        }
  +        if(!query33.equalsIgnoreCase("")) {
  +            engineMap.put("query33",query33);
  +            query3="jahia.page_id:"+query33;
  +        }
  +        if(!query344.equalsIgnoreCase("-")) {
  +            engineMap.put("condition34",query34);
  +            engineMap.put("condition344",query344);
  +            int valscope=0;
  +            if(query34.equalsIgnoreCase("pub")) valscope=0;
  +                if(query34.equalsIgnoreCase("mod")) valscope=1;
  +                if(query34.equalsIgnoreCase("cre")) valscope=2;
  +            if(query344.equalsIgnoreCase("week")){
  +                query3=scopedate[valscope]+"["+NumberPadding.pad(aweek)+" TO 
"+NumberPadding.pad(now)+"]";
  +            } else if(query344.equalsIgnoreCase("month")){
  +                query3=scopedate[valscope]+"["+NumberPadding.pad(amonth)+" 
TO "+NumberPadding.pad(now)+"]";
  +            } else if(query344.equalsIgnoreCase("months")){
  +                query3=scopedate[valscope]+"["+NumberPadding.pad(amonths)+" 
TO "+NumberPadding.pad(now)+"]";
  +            }
  +
  +        }
  +        //query4s
  +        if(!query41.equalsIgnoreCase("")) {
  +            engineMap.put("query41",query41);
  +            String subcondition=(String) 
processingContext.getParameter("condition41");
  +            if(subcondition!=null && 
subcondition.equalsIgnoreCase("creator")){
  +               query4="jahia.metadata_creator:"+query41;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("contributor")){
  +               query4="jahia.metadata_lastcontributor:"+query41;
  +            } else if(subcondition!=null && 
subcondition.equalsIgnoreCase("all")){
  +               query4="(jahia.metadata_creator:"+query41+" OR 
jahia.metadata_lastcontributor:"+query41+")";
  +            }
  +        }
  +        if(!query42.equalsIgnoreCase("")) {
  +            engineMap.put("query42",query42);
  +            query4="jahia.metadata_keywords:"+query42;
  +        }
  +        if(!query43.equalsIgnoreCase("")) {
  +            engineMap.put("query43",query43);
  +            query4="jahia.page_id:"+query43;
  +        }
  +        if(!query444.equalsIgnoreCase("-")) {
  +            engineMap.put("condition44",query44);
  +            engineMap.put("condition444",query444);
  +            int valscope=0;
  +            if(query44.equalsIgnoreCase("pub")) valscope=0;
  +                if(query44.equalsIgnoreCase("mod")) valscope=1;
  +                if(query44.equalsIgnoreCase("cre")) valscope=2;
  +            if(query444.equalsIgnoreCase("week")){
  +                query4=scopedate[valscope]+"["+NumberPadding.pad(aweek)+" TO 
"+NumberPadding.pad(now)+"]";
  +            } else if(query444.equalsIgnoreCase("month")){
  +                query4=scopedate[valscope]+"["+NumberPadding.pad(amonth)+" 
TO "+NumberPadding.pad(now)+"]";
  +            } else if(query444.equalsIgnoreCase("months")){
  +                query4=scopedate[valscope]+"["+NumberPadding.pad(amonths)+" 
TO "+NumberPadding.pad(now)+"]";
  +            }
   
  -        //orderby parameter
  -        String orderBy = (String) processingContext.getParameter("orderby");
  -        if (orderBy == null || orderBy.equalsIgnoreCase("")) {
  -            orderBy = "score";
  -            logger.warn("order set on default score");
           }
   
  +
  +        //summary of alt queries
  +        logger.debug("query2:"+query2+" cond2:"+smode2);
  +        logger.debug("query3:"+query3+" cond3:"+smode3);
  +        logger.debug("query4:"+query4+" cond4:"+smode4);
  +
  +
  +
           //domain scope
           String scope = (String) processingContext.getParameter("searchSite");
  -        if (scope == null && siteService.getNbSites() > 1) scope = "all";
  +        if (scope == null && siteService.getNbSites() > 1) scope = "all"; 
//default
           else if (siteService.getNbSites() == 1) scope = "" + 
siteService.getSite(((JahiaSite) siteService.getSites().nextElement()).getID());
   
  -        // transform queries
  -        if(smode.equalsIgnoreCase("exact")) {
  +        // transform main query(only if not empty)
  +        searchString=searchString.trim();
  +        if(smode.equalsIgnoreCase("exact") && 
!searchString.equalsIgnoreCase("")) {
               searchString="\""+searchString+"\"";
  -        } else if (smode.equalsIgnoreCase("and")) {
  -            searchString=searchString.replaceAll("\\s"," AND ");
  +        } else if (smode.equalsIgnoreCase("and") && 
!searchString.equalsIgnoreCase("")) {
  +            searchString=searchString.trim().replaceAll("\\s"," AND ");
           }
   
           //adding advanced queries
           String advplus=" OR ";
  -        if(query_concat_mode.equalsIgnoreCase("and")) advplus=" OR ";
  -        if(query2!=null && !query2.equalsIgnoreCase("")){
  -            String q="";
  -            if(smode2.equalsIgnoreCase("creator")) q="creator:"+query2;
  -            if(smode2.equalsIgnoreCase("keywords")) q="keywords:"+query2;
  -            if(smode2.equalsIgnoreCase("pageid")) 
searchString="page:"+query2;//ignore with majesty all other queries
  -            //if(smode2.equalsIgnoreCase("date")) q="keywords:"+query2;
  -            searchString=searchString+advplus+q;
  +        if(query_concat_mode.equalsIgnoreCase("and")) advplus=" AND ";
  +
  +        // constructing final BIG LUCENE query
  +        String altqueries="";
  +
  +        if(!query2.equalsIgnoreCase("")) 
altqueries=altqueries+advplus+query2;
  +        if(!query3.equalsIgnoreCase("")) 
altqueries=altqueries+advplus+query3;
  +        if(!query4.equalsIgnoreCase("")) 
altqueries=altqueries+advplus+query4;
  +
  +        if(!searchString.equalsIgnoreCase("") && 
!altqueries.equalsIgnoreCase("")) {
  +            searchString="("+searchString+")"+altqueries;
  +        } else if(searchString.equalsIgnoreCase("") && 
!altqueries.equalsIgnoreCase("")){
  +            searchString=altqueries.substring(altqueries.indexOf("AND ")+4);
           }
           //summary
           logger.warn("[init parameters from request: "
  -                + " query:" + searchString
                   + " searchSite:" + scope + " on " + siteCount + " sites"
                   + " ordered by:" + orderBy
  -
  -                + "  ---------------]");
  +                + "[-------  searchstring:"+searchString+" 
---------------]");
   
           //store all the params for subsequent requests
  -        engineMap.put("searchString", searchString);
  -        engineMap.put("smode", smode);
  -        engineMap.put("concat", query_concat_mode);
  -        engineMap.put("orderby", orderBy);
  -        engineMap.put("searchSite", scope);
  -
  +        engineMap.put("searchString", searchString);    //main query
  +        engineMap.put("query1",query1);                 //main query 
copy(used to display)
  +        engineMap.put("smode", smode);                  //string addition 
mode
  +        engineMap.put("concat", query_concat_mode);     //mode of add 
criteria
  +        engineMap.put("orderby", orderBy);              //sort order
  +        engineMap.put("searchSite", scope);             //virtual site scope
   
   
           //previous results (maybe we can store the history of results?)
  @@ -264,10 +441,10 @@
           // we search only if we have smtg to search
           if (!"".equals(searchString)) {
               JahiaSearchResultBuilder resultBuilder = new 
ContainerSearchResultBuilderImpl();
  -            searchString.trim();
  +            searchString=searchString.trim();
   
               if (searchString.startsWith("page:")) {
  -
  +                logger.debug("searching for page:"+searchString);
                   int pageId = 
Integer.parseInt(searchString.substring(5,searchString.indexOf(" ")));
                   searchResults = new JahiaSearchResult(resultBuilder);
                   ContentPage cp = 
ServicesRegistry.getInstance().getJahiaPageService().lookupContentPage(pageId, 
false);
  @@ -370,6 +547,7 @@
                                   String value = 
contentField.getValue(processingContext, lr);
                                   if (value != null && 
!value.trim().equals("") && !value.equals("<empty>")) {
                                       t = value;
  +                                    if(value.length()>12) 
t=value.substring(0,12)+" (...)";
                                       logger.debug("tkey=" + t);
                                       break;
                                   }
  @@ -400,7 +578,7 @@
                                   }
                               }
                               if (jahiaSearchHit.getParsedObject()!= null) {
  -                                logger.debug("fields of searchhit" + 
jahiaSearchHit.getParsedObject().getFields());
  +                                //logger.debug("fields of searchhit" + 
jahiaSearchHit.getParsedObject().getFields());
                               }
   
                               if (results.containsKey(key)) {
  @@ -606,6 +784,9 @@
   }
   /**
    * $Log: ManageContentPicker.java,v $
  + * Revision 1.40  2005/10/19 14:24:53  dpillot
  + * content pick final enhancements
  + *
    * Revision 1.39  2005/10/19 14:02:10  tdraier
    * check rigths
    *
  @@ -630,46 +811,4 @@
    * Revision 1.32  2005/10/06 15:50:35  tdraier
    * display metadatas in content pick
    *
  - * Revision 1.31  2005/10/06 14:50:36  tdraier
  - * fixed teaser in cp
  - *
  - * Revision 1.30  2005/10/06 14:27:22  tdraier
  - * added special page search
  - *
  - * Revision 1.29  2005/10/05 08:36:08  dpillot
  - * bug fix (npe on orderby)
  - *
  - * Revision 1.28  2005/10/04 09:24:28  dpillot
  - * bug fix
  - *
  - * Revision 1.27  2005/10/03 17:03:58  dpillot
  - * view page container fix
  - *
  - * Revision 1.26  2005/10/03 15:45:29  dpillot
  - * bug fix
  - *
  - * Revision 1.25  2005/10/03 15:12:39  tdraier
  - * link on subpage in content picker results
  - *
  - * Revision 1.24  2005/09/30 16:59:21  dpillot
  - * bug fix
  - *
  - * Revision 1.23  2005/09/29 16:32:45  dpillot
  - * fix on jsp called
  - *
  - * Revision 1.22  2005/09/29 16:29:01  dpillot
  - * added comparator and new method to make sorting on metadata and other 
info available
  - *
  - * Revision 1.21  2005/09/28 15:27:28  tdraier
  - * add update menu on content picked root objects
  - *
  - * Revision 1.20  2005/09/27 16:36:51  tdraier
  - * might fix some stuff on content picker
  - *
  - * Revision 1.19  2005/09/26 17:06:03  dpillot
  - * code cleaning
  - *
  - * Revision 1.17  2005/09/16 10:43:07  dpillot
  - * my 1st commit: just added trace on this
  - *
    */
  \ No newline at end of file
  

Reply via email to