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