dpillot 2005/09/26 19:06:04 CEST
Modified files:
core/src/java/org/jahia/engines/importexport
ManageContentPicker.java
Log:
code cleaning
Revision Changes Path
1.19 +116 -8
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.18&r2=1.19&f=h
Index: ManageContentPicker.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/importexport/ManageContentPicker.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ManageContentPicker.java 26 Sep 2005 09:34:42 -0000 1.18
+++ ManageContentPicker.java 26 Sep 2005 17:06:03 -0000 1.19
@@ -3,6 +3,7 @@
import org.jahia.content.ContainerDefinitionKey;
import org.jahia.content.ContentObject;
import org.jahia.content.ContentObjectKey;
+import org.jahia.content.JahiaObject;
import org.jahia.data.JahiaData;
import org.jahia.data.containers.JahiaContainerDefinition;
import org.jahia.data.search.JahiaContainerSearchHit;
@@ -27,6 +28,7 @@
import org.jahia.services.fields.ContentSmallTextField;
import org.jahia.services.fields.ContentPageField;
import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.services.metadata.MetadataService;
import org.jahia.utils.JahiaTools;
import java.util.*;
@@ -37,9 +39,9 @@
* Created by IntelliJ IDEA.
* Date: ${Date} ${Time}
* Copyright Codeva 2003
- * @author Thomas Draier
+ * @author Thomas Draier, joe
* @author ${User}
- * @version $Id: ManageContentPicker.java,v 1.18 2005/09/26 09:34:42 tdraier
Exp $
+ * @version $Id: ManageContentPicker.java,v 1.19 2005/09/26 17:06:03 dpillot
Exp $
*/
public class ManageContentPicker {
private static org.apache.log4j.Logger logger =
@@ -47,6 +49,10 @@
private static ManageContentPicker instance = null;
private static final String JSP =
"/jsp/jahia/engines/importexport/contentpick.jsp";
+ private static ImportExportService ie;
+ //private static JahiaUser user;
+ private static JahiaSearchService searchService;
+ //private static MetadataService metaservice;
/**
* @return a single instance of the object
@@ -55,6 +61,9 @@
{
if (instance == null) {
instance = new ManageContentPicker();
+ // ref the services
+ ie=ServicesRegistry.getInstance().getImportExportService();
+ searchService=ServicesRegistry .getInstance
().getJahiaSearchService ();
logger.debug("creating instance");
}
return instance;
@@ -106,7 +115,7 @@
String copytype = op.substring(0, op.indexOf('_'));
String sourceId = op.substring(op.indexOf('_') +1);
- ImportExportService ie =
ServicesRegistry.getInstance().getImportExportService();
+ //ImportExportService ie =
ServicesRegistry.getInstance().getImportExportService();
ContentObject source =
ContentContainer.getContainer(Integer.parseInt(sourceId));
ie.copy(source, object, jParams, EntryLoadRequest.STAGED,
"link".equals(copytype));
@@ -119,7 +128,7 @@
}
private void doSearch(ContentObject object, ProcessingContext
processingContext, HashMap engineMap) throws Exception {
- ImportExportService ie =
ServicesRegistry.getInstance().getImportExportService();
+ //ImportExportService ie =
ServicesRegistry.getInstance().getImportExportService();
engineMap.put ("sites",
ServicesRegistry.getInstance().getJahiaSitesService().getSites());
@@ -141,19 +150,19 @@
} else {
languageCodes.add (processingContext.getLocale ().toString
());
}
- logger.debug(languageCodes);
+ logger.debug("searching in what languages:"+languageCodes);
engineMap.put ("searchLanguageCodes", languageCodes);
+
String theScreen = (String)engineMap.get("screen");
JahiaSearchResult searchResults =
(JahiaSearchResult)engineMap.get("searchResults");
JahiaSearchResultBuilder resultBuilder =
new ContainerSearchResultBuilderImpl();
+ // we run the search only if there is someting to query
if (!searchString.equals("") ){
- searchResults = ServicesRegistry
- .getInstance ().getJahiaSearchService ()
- .search
(Integer.parseInt(processingContext.getParameter("searchSite")),
+ searchResults = searchService .search
(processingContext.getSiteID(),
searchString, processingContext,
languageCodes, resultBuilder);
logger.debug("# of hits in raw
searchresults:"+searchResults.getHitCount()+" "+searchResults);
@@ -162,47 +171,67 @@
JahiaSearchResult myResults = new
JahiaSearchResult(resultBuilder);
Map results = new HashMap();
+ // destination object cdk & cdfn
ContainerDefinitionKey cdk = (ContainerDefinitionKey)
((ContentContainerList)object).getDefinitionKey(null);
JahiaContainerDefinition thisJcd =
(JahiaContainerDefinition) ContentObject.getInstance(cdk);
+ logger.debug("destination cdk:"+cdk+" cdfn:"+thisJcd);
EntryLoadRequest lr = new
EntryLoadRequest(EntryLoadRequest.ACTIVE_WORKFLOW_STATE,0,processingContext.getLocaleList());
+ // big loop to test the compatibility of container type
for (Iterator iterator = searchResults.results().iterator();
iterator.hasNext();) {
JahiaSearchHit jahiaSearchHit = (JahiaSearchHit)
iterator.next();
ContentObject current =
ContentContainer.getContainer(Integer.parseInt(jahiaSearchHit.getId()));
int score = jahiaSearchHit.getScore();
while (current != null && current.hasActiveEntries()) {
if (current.getPickedObject() != null) {
+ // this object is already a copy, we ignore it
break;
}
+
+ //check if container
if (current instanceof ContentContainer) {
ContainerDefinitionKey currentCdk =
(ContainerDefinitionKey) ((ContentContainer)current).getDefinitionKey(null);
JahiaContainerDefinition currentJcd =
(JahiaContainerDefinition) ContentObject.getInstance(currentCdk);
+ logger.debug("Hit-id:"+jahiaSearchHit.getId()+"
[score:"+score+"] cdk:"+currentCdk+" cdfn:"+currentJcd);
+
+ //is compatible
if (ie.isCompatible(thisJcd, currentJcd)) {
String key =
Integer.toString(current.getID());
+ logger.debug("found compatible?"+key);
String t = key;
List l =
((ContentContainer)current).getChilds(null, lr, null);
if (!l.isEmpty()) {
t =
((ContentField)l.iterator().next()).getValue(processingContext, lr);
+ logger.debug("tkey="+t);
}
for (Iterator iterator1 = l.iterator();
iterator1.hasNext();) {
ContentField contentField =
(ContentField) iterator1.next();
if (contentField instanceof
ContentSmallTextField) {
t =
((ContentField)l.iterator().next()).getValue(processingContext, lr);
+ logger.debug("smalltext:"+t);
break;
}
}
+
+ //looping list of childs to check page type?
for (Iterator iterator1 = l.iterator();
iterator1.hasNext();) {
ContentField contentField =
(ContentField) iterator1.next();
if (contentField instanceof
ContentPageField) {
t =
((ContentPageField)l.iterator().next()).getContentPage(lr).getTitle(lr);
+ logger.debug("page:"+t);
break;
}
}
+ logger.debug("fields of
searchhit"+jahiaSearchHit.getParsedObject().getFields());
+
+
if (results.containsKey(key)) {
JahiaContainerSearchHit hit =
(JahiaContainerSearchHit) results.get(key);
hit.setScore( score + hit.getScore() );
+ logger.debug("improving score :"+key+"
new score:"+hit.getScore());
+ break;
} else {
JahiaContainerSearchHit hit = new
JahiaContainerSearchHit(jahiaSearchHit.getParsedObject());
hit.setId(key);
@@ -221,13 +250,47 @@
results.put(key, hit);
break;
}
+ } else {
+ logger.debug("no-compatible");
}
+ // end of compatible
}
current = current.getParent(null);
score /= 1.5;
}
}
+ //test for metadatas values - joe
+ for (Iterator iterator = results.values().iterator();
iterator.hasNext();) {
+ JahiaSearchHit hit = (JahiaSearchHit) iterator.next();
+ ParsedObject po=hit.getParsedObject();
+ Hashtable t=po.getFields();
+ //name of metadatas
+ for(Iterator it=t.keySet().iterator();it.hasNext();){
+ String name=(String) it.next();
+ String[] val=po.getValues(name);
+ String values="";
+ logger.debug("size:"+val.length);
+ for(int v=0;v <val.length;v++){
+ values +=val[v]+" ";
+ }
+ logger.debug(name+":"+values);
+ }
+
+ //other loops
+
+ ContentObject o =
ContentContainer.getContainer(Integer.parseInt(hit.getId()));
+ ArrayList a=o.getMetadatas();
+ for(Iterator ia=a.iterator();ia.hasNext();){
+ JahiaObject jo=(JahiaObject) ia.next();
+ ContentField cf=(ContentField) jo;
+
+ logger.debug("LOOPING
"+cf.getDisplayName(processingContext)+":"+cf.getValue(processingContext));
+ }
+
+ }
+
+
for (Iterator iterator = new
TreeSet(results.values()).iterator(); iterator.hasNext();) {
JahiaSearchHit jahiaSearchHit = (JahiaSearchHit)
iterator.next();
myResults.addHit(jahiaSearchHit);
@@ -238,11 +301,56 @@
}
}
+
+ //SOME TESTING method designed to be ajaxed
+ /**
+ * to get a subset of results from ajax
+ * @param offset from where the display start
+ * @param rcount how much results are displayed
+ * @return vector
+ */
+ public Vector getResults(int offset,int rcount){
+ logger.debug("call to getResults");
+ Vector v = new Vector();
+ v.add("funny thing");
+ return v;
+ }
+
+ /**
+ * to reorder the results displayed
+ * @param offset from where the display start
+ * @param rcount how much results are displayed
+ * @param param string key used to reorder
+ * @return vector
+ */
+ public Vector reorderResults(int offset, int rcount, String param){
+ logger.debug("call to reorderResults");
+ Vector v = new Vector();
+ v.add("funny thing");
+ return v;
+ }
+
+ private HashMap orderBy(String key,HashMap r){
+ HashMap m=new HashMap();
+ if(key.equalsIgnoreCase("score")){
+ // by score
+ } else if(key.equalsIgnoreCase("id")){
+ //by id
+ } else if(key.equalsIgnoreCase("")) {
+ // by
+ }
+ /*
+ JahiaSearchHit h;
+ if()
+ h.getId()
+ */
+ return m;
+ }
}
/**
* $Log: ManageContentPicker.java,v $
- * Revision 1.18 2005/09/26 09:34:42 tdraier
- * added content picker on virtual sites
+ * 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