Author: sshyrkov
Date: Tue Oct 30 09:15:59 2007
New Revision: 18993
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18993&repname=
=3Djahia
Log:
[r18974] Resolve issue http://www.jahia.net/jira/browse/POSTE-23: Tri sur l=
e site map
Use the JahiaPageComparator to sort the pages
Added:
branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/utils/compara=
tor/JahiaPageComparator.java
- copied unchanged from r18974, trunk/core/src/java/org/jahia/utils/c=
omparator/JahiaPageComparator.java
Modified:
branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/sitemap/=
GetChildPages.java
branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/data/viewhelp=
er/sitemap/SiteMapViewHelper.java
Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/si=
temap/GetChildPages.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/ajax/sitemap/GetChildPages.java&rev=3D=
18993&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/sitemap/=
GetChildPages.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/ajax/sitemap/=
GetChildPages.java Tue Oct 30 09:15:59 2007
@@ -20,16 +20,10 @@
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
-import org.jahia.content.ContentObject;
-import org.jahia.exceptions.JahiaException;
import org.jahia.params.ProcessingContext;
-import org.jahia.services.containers.ContainerFactory;
-import org.jahia.services.containers.ContentContainer;
-import org.jahia.services.containers.ContentContainerList;
import org.jahia.services.pages.ContentPage;
import org.jahia.services.usermanager.JahiaUser;
-import org.jahia.services.version.EntryLoadRequest;
-import org.jahia.data.containers.JahiaContainer;
+import org.jahia.utils.comparator.JahiaPageComparator;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
=
@@ -38,17 +32,15 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.TreeSet;
=
/**
* Struts AJAX based Action that collects all the direct child pages from =
a given parent page. This action would typically be used for a
* basic and simple sitemap
- * =
+ *
* @author Xavier Lawrence
*/
public class GetChildPages extends SiteMapAbstractAction {
@@ -57,9 +49,10 @@
.getLogger(GetChildPages.class);
=
public ActionForward execute(final ActionMapping mapping,
- final ActionForm form, final HttpServletRequest request,
- final HttpServletResponse response) throws IOException,
- ServletException {
+ final ActionForm form,
+ final HttpServletRequest request,
+ final HttpServletResponse response)
+ throws IOException, ServletException {
try {
// Contains params that will have to given to the ParamBean Co=
nstructor for correct
// initialization of the latter
@@ -70,17 +63,13 @@
final JahiaUser currentUser =3D jParams.getUser();
=
final String key =3D getXmlNodeValue(request, response, KEY);
- final String isVersionning =3D getParameter(request, DISPLAY_P=
ARAM,
- "");
- final int mode =3D (isVersionning.indexOf("versionning") > -1 =
? VERSIONNING
- : NORMAL);
+ final String isVersionning =3D getParameter(request, DISPLAY_P=
ARAM, "");
+ final int mode =3D (isVersionning.indexOf("versionning") > -1 =
? VERSIONNING : NORMAL);
final ContentPage currentObject =3D (ContentPage) getContentOb=
jectFromString(key);
if (currentObject =3D=3D null) {
- logger.warn("Unable to Get Child Pages ! Object '" + key
- + "' doesn't exist");
+ logger.warn("Unable to Get Child Pages ! Object '" + key +=
"' doesn't exist");
response.sendError(HttpServletResponse.SC_NOT_FOUND,
- "Unable to Get Child Pages ! Msg: Page '" + key
- + "' doesn't exist");
+ "Unable to Get Child Pages ! Msg: Page '" + key + =
"' doesn't exist");
return null;
}
=
@@ -103,14 +92,11 @@
loadFlags =3D ContentPage.ACTIVE_PAGE_INFOS;
}
=
- final Iterator children =3D currentObject.getContentPageChilds(
- currentUser, loadFlags, null, true);
- final TreeSet orderedPage =3D new TreeSet(new PageSorter(jPara=
ms,
- new HashMap()));
+ final Iterator children =3D currentObject.getContentPageChilds=
(currentUser, loadFlags, null, true);
+ final TreeSet orderedPage =3D new TreeSet(new JahiaPageCompara=
tor(jParams, new HashMap()));
while (children.hasNext()) {
final ContentPage child =3D (ContentPage) children.next();
- if (getParameter(request, "noPickers", "false")
- .equalsIgnoreCase("false")
+ if (getParameter(request, "noPickers", "false").equalsIgno=
reCase("false")
|| child.getPickedObject() =3D=3D null) {
if (child.checkReadAccess(currentUser))
orderedPage.add(child);
@@ -130,102 +116,10 @@
} catch (Exception e) {
logger.error("Unable to process the request !", e);
if (!response.isCommitted()) {
- response.sendError(
- HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_=
ERROR,
"Unable to Get Child Pages ! Msg: " + e.getMessage=
());
}
}
return null;
}
-
- final class PageSorter implements Comparator {
- private ProcessingContext jParams;
- private Map cachedContainerLists;
-
- public PageSorter(ProcessingContext jParams, Map cachedContainerLi=
sts) {
- this.jParams =3D jParams;
- this.cachedContainerLists =3D cachedContainerLists;
- }
-
- /**
- * Simple comparator that Compares 2 pages and returns the correct=
value regarding their corresponding ranking.
- */
- public int compare(final Object o1, final Object o2) {
- final ContentPage p1 =3D (ContentPage) o1;
- final ContentPage p2 =3D (ContentPage) o2;
- final EntryLoadRequest elr =3D jParams.getEntryLoadRequest();
-
- try {
- final ContentObject pageField1 =3D p1.getParent(elr);
- if (pageField1 =3D=3D null)
- return 1;
- final ContentContainer cont1 =3D (ContentContainer) pageFi=
eld1
- .getParent(elr);
- final ContentContainerList cList1 =3D (ContentContainerLis=
t) cont1
- .getParent(elr);
- final String property =3D cList1
- .getProperty("automatic_sort_handler");
- if (property !=3D null && property.trim().length() > 0) {
- final ContentObject pageField2 =3D p2.getParent(elr);
- if (pageField2 =3D=3D null)
- return -1;
- final ContentContainer cont2 =3D (ContentContainer) pa=
geField2
- .getParent(elr);
- final ContentContainerList cList2 =3D (ContentContaine=
rList) cont2
- .getParent(elr);
- if (cList1.getID() !=3D cList2.getID())
- return -1;
- else {
- Integer cListID =3D new Integer(cList1.getID());
- List ctnIds =3D (List) cachedContainerLists.get(cL=
istID);
- if (ctnIds =3D=3D null) {
- ctnIds =3D ContainerFactory.getInstance()
- .getSorteredAndFilteredCtnIds(
- jParams,
- elr,
- cList1.getJahiaContainerList(
- jParams, elr), null);
- cachedContainerLists.put(cListID, ctnIds);
- }
-
- return new Integer(ctnIds.indexOf(new Integer(cont1
- .getID()))).compareTo(new Integer(ctnIds
- .indexOf(new Integer(cont2.getID()))));
- }
- } else {
- final JahiaContainer jahiaContainer1 =3D cont1
- .getJahiaContainer(jParams, elr);
- if (jahiaContainer1 =3D=3D null)
- return 1;
- final int rank1 =3D jahiaContainer1.getRank();
-
- final ContentObject pageField2 =3D p2.getParent(elr);
- if (pageField2 =3D=3D null)
- return -1;
- final ContentContainer cont2 =3D (ContentContainer) pa=
geField2
- .getParent(elr);
- final JahiaContainer jahiaContainer2 =3D cont2
- .getJahiaContainer(jParams, elr);
- if (jahiaContainer2 =3D=3D null)
- return -1;
- final int rank2 =3D jahiaContainer2.getRank();
-
- if (rank1 > rank2) {
- return 1;
- } else if (rank1 <=3D rank2) {
- return -1;
- } else {
- return new Integer(jahiaContainer1.getID())
- .compareTo(new Integer(jahiaContainer2.get=
ID()));
- }
- }
- } catch (ClassCastException ce) {
- logger.debug("ClassCastException: " + ce);
- return -1;
- } catch (JahiaException je) {
- logger.error("Error in Comparator", je);
- return -1;
- }
- }
- }
}
Modified: branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/data/vi=
ewhelper/sitemap/SiteMapViewHelper.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-INCLUD=
E-TAG-BRANCH/core/src/java/org/jahia/data/viewhelper/sitemap/SiteMapViewHel=
per.java&rev=3D18993&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/data/viewhelp=
er/sitemap/SiteMapViewHelper.java (original)
+++ branches/JAHIA-INCLUDE-TAG-BRANCH/core/src/java/org/jahia/data/viewhelp=
er/sitemap/SiteMapViewHelper.java Tue Oct 30 09:15:59 2007
@@ -59,6 +59,7 @@
import org.jahia.services.pages.JahiaPageService;
import org.jahia.services.usermanager.JahiaUser;
import org.jahia.services.version.EntryLoadRequest;
+import org.jahia.utils.comparator.JahiaPageComparator;
=
import java.io.Serializable;
import java.util.*;
@@ -256,7 +257,7 @@
=
if (childObject instanceof ContentPage) {
final int pageID =3D childObject.getID();
- final ContentPage contentPage =3D (ContentPage)childObject;
+ final ContentPage contentPage =3D (ContentPage) childObjec=
t;
// Stop loop if page has a deleted entry only.
if (this._pageInfosFlag < ContentPage.ARCHIVED_PAGE_INFOS
&& contentPage.hasEntries(ContentPage.ARCHIVED_PAG=
E_INFOS) &&
@@ -335,19 +336,25 @@
protected Iterator getPageChilds(ContentObject object) {
final ContentPage page =3D (ContentPage) object;
try {
- Iterator pageChildsEnum =3D page.getContentPageChilds(_user, _=
pageInfosFlag, _languageCode, _directPageOnly);
+ final Iterator pageChildsEnum =3D page.getContentPageChilds(_u=
ser, _pageInfosFlag, _languageCode, _directPageOnly);
if (pageChildsEnum =3D=3D null) {
- pageChildsEnum =3D new ArrayList(0).iterator();
+ return new ArrayList(0).iterator();
}
+ final ProcessingContext jParams =3D Jahia.getThreadParamBean();
+ // We need to take care of the ranking and the sorters in orde=
r to deliver the pages in the correct order
+ final TreeSet orderedPage =3D new TreeSet(new JahiaPageCompara=
tor(jParams, new HashMap()));
+ while (pageChildsEnum.hasNext()) {
+ orderedPage.add(pageChildsEnum.next());
+ }
+
if (_pageInfosFlag =3D=3D (ContentPage.STAGING_PAGE_INFOS)) {
- return pageChildsEnum; // In this case shortcut the next s=
teps for optmization.
+ return orderedPage.iterator(); // In this case shortcut th=
e next steps for optmization.
}
=
// time based publishing state check
- final ProcessingContext context =3D Jahia.getThreadParamBean();
final String operationMode;
- if (context !=3D null) {
- operationMode =3D context.getOperationMode();
+ if (jParams !=3D null) {
+ operationMode =3D jParams.getOperationMode();
} else {
operationMode =3D ParamBean.EDIT;
}
@@ -358,8 +365,9 @@
JahiaObjectDelegate delegate;
boolean paramBeanTest =3D ParamBean.NORMAL.equals(operationMod=
e) || ParamBean.PREVIEW.equals(operationMode);
boolean pageInfosFlagTest =3D (_pageInfosFlag =3D=3D (ContentP=
age.ACTIVE_PAGE_INFOS | ContentPage.STAGING_PAGE_INFOS));
- while (pageChildsEnum.hasNext()) {
- final ContentPage contentPage =3D (ContentPage) pageChilds=
Enum.next();
+ final Iterator iterator =3D orderedPage.iterator();
+ while (iterator.hasNext()) {
+ final ContentPage contentPage =3D (ContentPage) iterator.n=
ext();
if (_languageCode !=3D null) {
if (!contentPage.hasEntries(_pageInfosFlag)) {
continue; // This page does not fill the criterions
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list