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> (<jahia:engineResourceBundle
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list