Author: bpapez
Date: Fri Nov  9 14:29:00 2007
New Revision: 19107

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19107&repname=
=3Djahia
Log:
JAHIA-2525: 30'000 pages DB: problem with the delete engine: list all sub-p=
ages without a max limit
1.) Optimize checkWriteAccess-check to not iterate through sub pages but ra=
ther iterate through child ACLs
2.) Remove the checkValidationAccess, which is illogical here (MIN-289 seem=
s to be a bug in the workflow handling and has to be solved there)
3.) Limit the number of displayed sub-pages to ~30 (subpages are always rea=
d as a whole set, iteration is stopped when at least 31 pages are reached)

Modified:
    trunk/core/src/conf/java/JahiaEnginesResources.properties
    trunk/core/src/conf/java/JahiaEnginesResources_de.properties
    trunk/core/src/conf/java/JahiaEnginesResources_en.properties
    trunk/core/src/java/org/jahia/engines/deletecontainer/DeleteContainer_E=
ngine.java
    trunk/core/src/webapp/jsp/jahia/engines/deletecontainer/deletecontainer=
.jsp

Modified: trunk/core/src/conf/java/JahiaEnginesResources.properties
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/conf/j=
ava/JahiaEnginesResources.properties&rev=3D19107&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
--- trunk/core/src/conf/java/JahiaEnginesResources.properties (original)
+++ trunk/core/src/conf/java/JahiaEnginesResources.properties Fri Nov  9 14=
:29:00 2007
@@ -634,6 +634,7 @@
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delLinks.label =
=3D The following links will be deleted
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delObj.label =3D =
Delete the Jahia object and close window
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPages.label =
=3D The following pages will be deleted
+org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPagesPartialLi=
st.label =3D All subpages and the links to those pages will also be deleted=
. The following list is just partial:
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.futureBrokenLinks=
.label =3D The following content objects contain hardcoded links to the del=
eted content
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.id.label =3D ID
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.name.label =3D Na=
me

Modified: trunk/core/src/conf/java/JahiaEnginesResources_de.properties
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/conf/j=
ava/JahiaEnginesResources_de.properties&rev=3D19107&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
--- trunk/core/src/conf/java/JahiaEnginesResources_de.properties (original)
+++ trunk/core/src/conf/java/JahiaEnginesResources_de.properties Fri Nov  9=
 14:29:00 2007
@@ -633,6 +633,7 @@
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delLinks.label =
=3D Die folgenden Links werden gel\u00F6scht
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delObj.label =3D =
Jahia-Objekt l\u00F6schen und Fenster schlie\u00DFen.
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPages.label =
=3D Die folgenden Seiten werden gel\u00F6scht
+org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPagesPartialLi=
st.label =3D Alle Unterseiten und Verweise zu diesen Seiten werden mitgel\u=
00F6scht. Die folgende Liste ist nur ein Auszug: =

 org.jahia.engines.deletecontainer.DeleteContainer_Engine.futureBrokenLinks=
.label =3D Die folgenden Content-Objekte enthalten fest programmierte Links=
 zu gel\u00F6schtem Content
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.id.label =3D ID
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.name.label =3D Na=
me

Modified: trunk/core/src/conf/java/JahiaEnginesResources_en.properties
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/conf/j=
ava/JahiaEnginesResources_en.properties&rev=3D19107&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
--- trunk/core/src/conf/java/JahiaEnginesResources_en.properties (original)
+++ trunk/core/src/conf/java/JahiaEnginesResources_en.properties Fri Nov  9=
 14:29:00 2007
@@ -633,6 +633,7 @@
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delLinks.label =
=3D The following links will be deleted
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delObj.label =3D =
Delete the Jahia object and close window
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPages.label =
=3D The following pages will be deleted
+org.jahia.engines.deletecontainer.DeleteContainer_Engine.delPagesPartialLi=
st.label =3D All sub pages and the links to those pages will also be delete=
d. The following list is just partial:
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.futureBrokenLinks=
.label =3D The following content objects contain hardcoded links to the del=
eted content
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.id.label =3D ID
 org.jahia.engines.deletecontainer.DeleteContainer_Engine.name.label =3D Na=
me

Modified: trunk/core/src/java/org/jahia/engines/deletecontainer/DeleteConta=
iner_Engine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/deletecontainer/DeleteContainer_Engine.java&rev=3D19107&re=
pname=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
--- trunk/core/src/java/org/jahia/engines/deletecontainer/DeleteContainer_E=
ngine.java (original)
+++ trunk/core/src/java/org/jahia/engines/deletecontainer/DeleteContainer_E=
ngine.java Fri Nov  9 14:29:00 2007
@@ -48,9 +48,8 @@
 import org.jahia.services.lock.LockService;
 import org.jahia.services.lock.LockPrerequisitesResult;
 import org.jahia.services.lock.LockPrerequisites;
-import org.jahia.services.pages.ContentPage;
 import org.jahia.services.pages.JahiaPage;
-import org.jahia.services.pages.PageLoadFlags;
+import org.jahia.services.pages.JahiaPageService;
 import org.jahia.services.usermanager.JahiaUser;
 import org.jahia.services.version.ContentObjectEntryState;
 import org.jahia.services.version.EntryLoadRequest;
@@ -67,6 +66,8 @@
      * The engine's name
      */
     public static final String ENGINE_NAME =3D "deletecontainer";
+    =

+    public static final int PAGE_LIST_SIZE_LIMIT =3D 30;    =

 =

     /**
      * logging
@@ -504,9 +505,8 @@
         engineMap.put("warning", Boolean.FALSE);
         engineMap.put("errorMessage", Boolean.FALSE);
         Enumeration theFields =3D theContainer.getFields();
-
-        JahiaPage page =3D ServicesRegistry.getInstance().getJahiaPageServ=
ice().
-                lookupPage(theContainer.getPageID(), jParams);
+        JahiaPageService pageService =3D ServicesRegistry.getInstance().ge=
tJahiaPageService();
+        JahiaPage page =3D pageService.lookupPage(theContainer.getPageID()=
, jParams);
         int pageDefID =3D page.getPageTemplateID();
 =

         Set objectKeysPointingToDeletedContent =3D new HashSet();
@@ -520,73 +520,49 @@
             if (fieldType =3D=3D FieldTypes.PAGE) {
                 JahiaPage thePage =3D (JahiaPage) theField.getObject();
                 if (thePage !=3D null) {
-                    if (!(thePage.getContentPage().checkWriteAccess(jParam=
s.getUser(), true, true) &&
-                            thePage.getContentPage().checkValidationAccess=
(jParams.getUser()))) {
+                    if (!thePage.getContentPage().checkWriteAccess(jParams=
.getUser(), true, true)) {
                         engineMap.put("errorMessage", Boolean.TRUE);
                         break;
                     }
                     objectKeysPointingToDeletedContent.addAll(
                             contentObjectPointingOnPage(thePage.getID()));
 =

-                    Vector deletedPages =3D ServicesRegistry.getInstance().
-                            getJahiaPageService().
-                            getPageSubTree(thePage.getID(),
-                                    PageLoadFlags.DIRECT, jParams);
-
-                    // now let's check if some of these pages have already=
 been
-                    // deleted or marked for deletion.
-                    /**
-                     * todo this shouldn't be necessary, we should have a =
way
-                     * to specify we only want non-deleted or marked for
-                     * deletion pages
-                     */
-                    Vector pageChildsWithoutDeleted =3D new Vector();
-                    for (int i =3D 0; i < deletedPages.size(); i++) {
-                        JahiaPage curJahiaPage =3D (JahiaPage) deletedPage=
s.get(i);
-                        ContentPage curContentPage =3D curJahiaPage.getCon=
tentPage();
-                        if ((curContentPage.getDeleteVersionID() =3D=3D -1=
)) {
-                            // we must now still check if the page has bee=
n marked
-                            // for deletion in all the languages.
-                            Map languageStates =3D curContentPage.getLangu=
agesStates(false);
-                            boolean markedInAllLanguages =3D true;
-                            Iterator languageCodeIter =3D languageStates.k=
eySet().iterator();
-                            while (languageCodeIter.hasNext()) {
-                                String curLanguageCode =3D (String) langua=
geCodeIter.next();
-                                if (!curContentPage.isStagedEntryMarkedFor=
Deletion(curLanguageCode)) {
-                                    markedInAllLanguages =3D false;
-                                    break;
-                                }
-                            }
-                            if (!markedInAllLanguages) {
-                                pageChildsWithoutDeleted.add(curJahiaPage);
-                            }
+                    Set deletedPageIDs =3D pageService.getUncheckedPageSub=
TreeIDs(thePage.getID(),
+                                    true, PAGE_LIST_SIZE_LIMIT + 1);
+                    List deletedPages =3D new ArrayList(deletedPageIDs.siz=
e());
+                    List deletedLinks =3D new ArrayList();
+                    =

+                    if (deletedPageIDs.size() <=3D PAGE_LIST_SIZE_LIMIT) {
+                        deletedLinks =3D new ArrayList(ServicesRegistry
+                                .getInstance().getJahiaPageService()
+                                .getPagesPointingOnPage(thePage.getID(),
+                                        jParams));
+
+                        for (Iterator it =3D deletedPageIDs.iterator(); it
+                                .hasNext();) {
+                            int aPageID =3D ((Integer) it.next()).intValue=
();
+                            objectKeysPointingToDeletedContent
+                                    .addAll(contentObjectPointingOnPage(aP=
ageID));
+                            deletedLinks.addAll(pageService.getPagesPointi=
ngOnPage(aPageID, jParams));
+                            deletedPages.add(pageService.lookupPage(aPageI=
D, jParams));                            =

+                        }
+                    } else {
+                        for (Iterator it =3D deletedPageIDs.iterator(); it
+                                .hasNext();) {
+                           deletedPages.add(pageService.lookupPage(((Integ=
er)it.next()).intValue(), jParams));
                         }
                     }
-                    deletedPages =3D pageChildsWithoutDeleted;
-
-                    Vector deletedLinks =3D new Vector();
-                    deletedLinks.addAll(ServicesRegistry.getInstance().
-                            getJahiaPageService().
-                            getPagesPointingOnPage(thePage.getID(),
-                            jParams));
-                    for (int i =3D 0; i < deletedPages.size(); i++) {
-                        JahiaPage aPage =3D (JahiaPage) deletedPages.eleme=
ntAt(i);
-                        objectKeysPointingToDeletedContent.addAll(
-                                contentObjectPointingOnPage(aPage.getID())=
);
-                        deletedLinks.addAll(ServicesRegistry.getInstance().
-                                getJahiaPageService().
-                                getPagesPointingOnPage(aPage.getID(),
-                                jParams));
-                    }
+                    =

                     engineMap.put("deletedPages", deletedPages);
                     engineMap.put("deletedLinks", deletedLinks);
+                    =

                     ArrayList hardcodedLinkSourceObject =3D
                             buildHardcodedSourceInfo(
                                     objectKeysPointingToDeletedContent, jP=
arams);
                     engineMap.put("futureBrokenLinkObjects",
                             hardcodedLinkSourceObject);
-                    if ((deletedPages.size() > 0) || (deletedLinks.size() =
> 0) ||
-                            (objectKeysPointingToDeletedContent.size() > 0=
)) {
+                    if (!deletedPages.isEmpty() || !deletedLinks.isEmpty()=
 ||
+                            !objectKeysPointingToDeletedContent.isEmpty())=
 {
                         engineMap.put("warning", Boolean.TRUE);
                     }
                 }

Modified: trunk/core/src/webapp/jsp/jahia/engines/deletecontainer/deletecon=
tainer.jsp
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/jsp/jahia/engines/deletecontainer/deletecontainer.jsp&rev=3D19107&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
--- trunk/core/src/webapp/jsp/jahia/engines/deletecontainer/deletecontainer=
.jsp (original)
+++ trunk/core/src/webapp/jsp/jahia/engines/deletecontainer/deletecontainer=
.jsp Fri Nov  9 14:29:00 2007
@@ -31,6 +31,7 @@
 <%@ page import=3D"org.jahia.services.acl.JahiaBaseACL" %>
 <%@ taglib uri=3D"JahiaLib" prefix=3D"jahia" %>
 <[EMAIL PROTECTED] import=3D"org.jahia.services.containers.ContentContainer"%>
+<[EMAIL PROTECTED] 
import=3D"org.jahia.engines.deletecontainer.DeleteContainer_Engine=
"%>
 <jahia:i18n/>
 =

 <%
@@ -38,9 +39,9 @@
     final JahiaContainer theContainer =3D (JahiaContainer) engineMap.get("=
theContainer");
     final ParamBean jParams =3D (ParamBean) request.getAttribute("org.jahi=
a.params.ParamBean");
 =

-    final Vector deletedPages =3D (Vector) engineMap.get("deletedPages");
-    final Vector deletedLinks =3D (Vector) engineMap.get("deletedLinks");
-    final ArrayList futureBrokenLinkObjects =3D (ArrayList) engineMap.get(=
"futureBrokenLinkObjects");
+    final List deletedPages =3D (List) engineMap.get("deletedPages");
+    final List deletedLinks =3D (List) engineMap.get("deletedLinks");
+    final List futureBrokenLinkObjects =3D (List) engineMap.get("futureBro=
kenLinkObjects");
     final boolean warning =3D ((Boolean) engineMap.get("warning")).boolean=
Value();
     final boolean error =3D ((Boolean) engineMap.get("errorMessage")).bool=
eanValue();
     final int pageDefID =3D jParams.getPage().getPageTemplateID();
@@ -137,12 +138,17 @@
 <p class=3D"errorbold">
     <jahia:engineResourceBundle resourceName=3D"org.jahia.warning.label"/>:
 </p>
-<% if (deletedPages.size() > 0) { %>
+<% if (!deletedPages.isEmpty()) { =

+    if (deletedPages.size() > DeleteContainer_Engine.PAGE_LIST_SIZE_LIMIT)=
 { =

+%>
+<jahia:engineResourceBundle resourceName=3D"org.jahia.engines.deletecontai=
ner.DeleteContainer_Engine.delPagesPartialList.label"/>:
+<%  } else {%>
 <jahia:engineResourceBundle resourceName=3D"org.jahia.engines.deletecontai=
ner.DeleteContainer_Engine.delPages.label"/>:
+<%  } %>
 <ul>
     <%
-        for (int i =3D 0; i < deletedPages.size(); i++) {
-            final JahiaPage aPage =3D (JahiaPage) deletedPages.elementAt(i=
);
+        for (Iterator it =3D deletedPages.iterator(); it.hasNext(); ) {
+            final JahiaPage aPage =3D (JahiaPage) it.next();
             if (aPage !=3D null && aPage.getACL().getPermission(jParams.ge=
tUser(),
                     JahiaBaseACL.READ_RIGHTS, true)) {%>
     <li><a target=3D"_blank" href=3D"<%=3DaPage.getURL(jParams)%>"><%=3DaP=
age.getTitle()%></a></li>
@@ -153,13 +159,13 @@
 </ul>
 <%
     }
-    if (deletedLinks.size() > 0) {
+    if (!deletedLinks.isEmpty()) {
 %>
 <jahia:engineResourceBundle resourceName=3D"org.jahia.engines.deletecontai=
ner.DeleteContainer_Engine.delLinks.label"/>:
 <ul>
     <%
-        for (int i =3D 0; i < deletedLinks.size(); i++) {
-            final JahiaPage aPage =3D (JahiaPage) deletedLinks.elementAt(i=
);
+        for (Iterator it =3D deletedLinks.iterator(); it.hasNext(); ) {    =

+            final JahiaPage aPage =3D (JahiaPage) it.next();
             if (aPage !=3D null && aPage.getACL().getPermission(jParams.ge=
tUser(),
                     JahiaBaseACL.READ_RIGHTS, true)) { %>
     <li><a target=3D"_blank" href=3D"<%=3DaPage.getURL(jParams)%>"><%=3DaP=
age.getTitle()%></a>&nbsp;(<jahia:engineResourceBundle

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to