dpillot 2005/11/09 16:30:52 CET
Modified files:
core/src/java/org/jahia/engines/importexport
ManageContentPicker.java
Log:
order enhancement
Revision Changes Path
1.48 +29 -23
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.47&r2=1.48&f=h
Index: ManageContentPicker.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/importexport/ManageContentPicker.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- ManageContentPicker.java 9 Nov 2005 14:12:08 -0000 1.47
+++ ManageContentPicker.java 9 Nov 2005 15:30:52 -0000 1.48
@@ -2,7 +2,6 @@
import org.jahia.content.ContainerDefinitionKey;
import org.jahia.content.ContentObject;
-import org.jahia.content.ObjectKey;
import org.jahia.data.containers.JahiaContainerDefinition;
import org.jahia.data.search.JahiaContainerSearchHit;
import org.jahia.data.search.JahiaSearchHit;
@@ -43,7 +42,7 @@
*
* @author Thomas Draier, joe Pillot
* @author ${User}
- * @version $Id: ManageContentPicker.java,v 1.47 2005/11/09 14:12:08 tdraier
Exp $
+ * @version $Id: ManageContentPicker.java,v 1.48 2005/11/09 15:30:52 dpillot
Exp $
*/
public class ManageContentPicker {
private static org.apache.log4j.Logger logger =
@@ -56,7 +55,7 @@
private static JahiaSearchService searchService;
private static JahiaSitesService siteService;
//private static MetadataService metaservice;
-
+ private boolean ascOrder=true;
private ManageContentPicker() {
}
@@ -115,7 +114,7 @@
&& !o.equalsIgnoreCase((String) engineMap.get("orderby"))
&& engineMap.get("searchResults") != null
) {
- orderBy(o, engineMap);
+ orderBy(o, engineMap, true);
//engineMap.remove("orderby");
engineMap.put("orderby",o);
return true;
@@ -536,7 +535,7 @@
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
@@ -707,7 +706,7 @@
}//end big loop.
*/
//sorting
- orderBy(orderBy, engineMap, myResults, results);
+ orderBy(orderBy, engineMap, myResults, results,true);
}
}
@@ -758,7 +757,7 @@
* @param myResults output results
* @param results input results
*/
- private void orderBy(String key, HashMap engineMap, JahiaSearchResult
myResults, Map results) {
+ private void orderBy(String key, HashMap engineMap, JahiaSearchResult
myResults, Map results,boolean order) {
logger.debug("sort searching by" + key);
@@ -766,19 +765,19 @@
//by id
}else if(key.equalsIgnoreCase("creator")) {
//by creator
- orderBy("creator",engineMap);
+ orderBy("creator",engineMap, order);
}else if(key.equalsIgnoreCase("lastpublishingdate")) {
//by last pub date
- orderBy("lastpublishingdate",engineMap);
+ orderBy("lastpublishingdate",engineMap, order);
}else if(key.equalsIgnoreCase("creationdate")) {
//by creationdate
- orderBy("creationdate",engineMap);
+ orderBy("creationdate",engineMap, order);
}else if(key.equalsIgnoreCase("lastmodificationdate")) {
//by modif date
- orderBy("lastmodificationdate",engineMap);
+ orderBy("lastmodificationdate",engineMap, order);
}else if(key.equalsIgnoreCase("lastcontributor")) {
//by contributor
- orderBy("lastcontributor",engineMap);
+ orderBy("lastcontributor",engineMap, order);
}else {
// by score (default comparable interface)
for (Iterator iterator = new
TreeSet(results.values()).iterator(); iterator.hasNext();) {
@@ -796,11 +795,13 @@
*
* @param key
* @param engineMap
+ * @param order
*/
- private void orderBy(final String key, HashMap engineMap) {
+ public void orderBy(final String key, HashMap engineMap, final boolean
order) {
logger.debug("sort by" + key);
JahiaSearchResult myResults = (JahiaSearchResult)
engineMap.get("searchResults");
+
// create a comparator to compare from key and score
Comparator comp = new Comparator() {
@@ -816,35 +817,40 @@
int sc1 = ((JahiaSearchHit) o1).getScore();
String metadata2 = ((JahiaSearchHit)
o2).getParsedObject().getValue(key);
int sc2 = ((JahiaSearchHit) o2).getScore();
-
+ int o=1;
+ if(!order) o=-1;
// possibly metadata could be null
- if (metadata1 == null) return -1;
- if (metadata2 == null) return 1;
-
+ if (metadata1 == null && metadata2 != null) return (-1*o);
+ if (metadata2 == null && metadata1 != null) return (1*o);
+ if(metadata2 == null && metadata1 == null) return 0;
//comparaison
if (metadata1.equalsIgnoreCase(metadata2)) {
- if (sc1 <= sc2) return 1;// second object is less than
1st
+ //equality case (use the score)
+ if (sc1 <= sc2) return (1*o);// second object is less
than 1st
else
- return -1; //opposite
+ return (-1*o); //opposite
}
- if (metadata1.compareTo(metadata2) < 0) return 1;// second
object is less than 1st
+ if (metadata1.compareTo(metadata2) < 0) return (1*o);//
second object is less than 1st
else
- return -1; //opposite
+ return (-1*o); //opposite
}
};
- if (myResults.results() != null) {
+ if (myResults.results() != null && myResults.results().size()>1) {
Collections.sort(myResults.results(), comp);
engineMap.put("searchResults", myResults);
} else {
- logger.debug("results null!!!");
+ logger.debug("results null or too small");
}
}
}
/**
* $Log: ManageContentPicker.java,v $
+ * Revision 1.48 2005/11/09 15:30:52 dpillot
+ * order enhancement
+ *
* Revision 1.47 2005/11/09 14:12:08 tdraier
* contentpick as a background job, simplified api
*