You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/02/28 10:34:42 UTC
svn commit: r155679 -
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
Author: andreas
Date: Mon Feb 28 01:34:39 2005
New Revision: 155679
URL: http://svn.apache.org/viewcvs?view=rev&rev=155679
Log:
added delete(...) methods to DocumentManager
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java?view=diff&r1=155678&r2=155679
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManager.java Mon Feb 28 01:34:39 2005
@@ -146,4 +146,20 @@
*/
public void copyAllLanguageVersions(Document source, Document target)
throws PublicationException;
+
+ /**
+ * Deletes a document, incl. all requiring documents. If
+ * a sitetree is used, this means that the whole subtree is deleted.
+ * @param document The document.
+ * @throws PublicationException if an error occurs.
+ */
+ public void deleteAll(Document document) throws PublicationException;
+
+ /**
+ * Deletes all language versions of a document.
+ * @param document The document.
+ * @throws PublicationException if the documents could not be copied.
+ */
+ public void deleteAllLanguageVersions(Document document) throws PublicationException;
+
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?view=diff&r1=155678&r2=155679
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Mon Feb 28 01:34:39 2005
@@ -45,8 +45,8 @@
*
* @version $Id:$
*/
-public class DocumentManagerImpl extends AbstractLogEnabled implements
- DocumentManager, Serviceable, Contextualizable {
+public class DocumentManagerImpl extends AbstractLogEnabled implements DocumentManager,
+ Serviceable, Contextualizable {
/**
* @see org.apache.lenya.cms.publication.DocumentManager#addDocument(org.apache.lenya.cms.publication.Document)
@@ -105,13 +105,12 @@
WorkflowResolver workflowResolver = null;
try {
resourcesManager.copyResourcesTo(destinationDocument);
-
+
workflowResolver = (WorkflowResolver) this.manager.lookup(WorkflowResolver.ROLE);
copyWorkflow(workflowResolver, sourceDocument, destinationDocument);
} catch (Exception e) {
throw new PublicationException(e);
- }
- finally {
+ } finally {
if (workflowResolver != null) {
this.manager.release(workflowResolver);
}
@@ -387,7 +386,7 @@
*/
public void copyDocumentSource(Document sourceDocument, Document destinationDocument)
throws PublicationException {
-
+
SourceResolver sourceResolver = null;
try {
sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
@@ -397,8 +396,7 @@
destinationDocument.getDublinCore().replaceBy(sourceDocument.getDublinCore());
} catch (Exception e) {
throw new PublicationException(e);
- }
- finally {
+ } finally {
if (sourceResolver != null) {
this.manager.release(sourceResolver);
}
@@ -411,7 +409,7 @@
* @throws PublicationException when something went wrong.
*/
protected void deleteDocumentSource(Document document) throws PublicationException {
-
+
SourceResolver sourceResolver = null;
try {
sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
@@ -419,19 +417,18 @@
((ModifiableSource) source).delete();
} catch (Exception e) {
throw new PublicationException(e);
- }
- finally {
+ } finally {
if (sourceResolver != null) {
this.manager.release(sourceResolver);
}
}
}
-
+
/**
* Abstract base class for document visitors which operate on a source and
* target document.
*/
- public abstract class Visitor implements DocumentVisitor {
+ public abstract class SourceTargetVisitor implements DocumentVisitor {
private Document rootSource;
private Document rootTarget;
@@ -443,7 +440,7 @@
* @param source The root source.
* @param target The root target.
*/
- public Visitor(DocumentManager manager, Document source, Document target) {
+ public SourceTargetVisitor(DocumentManager manager, Document source, Document target) {
this.manager = manager;
this.rootSource = source;
this.rootTarget = target;
@@ -481,7 +478,7 @@
/**
* DocumentVisitor to move documents.
*/
- public class MoveVisitor extends Visitor {
+ public class MoveVisitor extends SourceTargetVisitor {
/**
* Ctor.
@@ -506,7 +503,7 @@
/**
* DocumentVisitor to copy documents.
*/
- public class CopyVisitor extends Visitor {
+ public class CopyVisitor extends SourceTargetVisitor {
/**
* Ctor.
@@ -528,4 +525,65 @@
}
+ /**
+ * @see org.apache.lenya.cms.publication.DocumentManager#deleteAll(org.apache.lenya.cms.publication.Document)
+ */
+ public void deleteAll(Document document) throws PublicationException {
+ DocumentIdentityMap identityMap = document.getIdentityMap();
+ SiteManager manager = identityMap.getPublication().getSiteManager(identityMap);
+ Document[] descendantsArray = manager.getRequiringResources(document);
+ OrderedDocumentSet descendants = new OrderedDocumentSet(descendantsArray);
+ descendants.add(document);
+
+ DocumentVisitor visitor = new DeleteVisitor(this, document);
+ descendants.visitDescending(visitor);
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.DocumentManager#deleteAllLanguageVersions(org.apache.lenya.cms.publication.Document)
+ */
+ public void deleteAllLanguageVersions(Document document) throws PublicationException {
+ DocumentIdentityMap identityMap = document.getIdentityMap();
+ String[] languages = document.getLanguages();
+ for (int i = 0; i < languages.length; i++) {
+
+ Document version = identityMap.getFactory().getLanguageVersion(document, languages[i]);
+ deleteDocument(version);
+ }
+ }
+
+ /**
+ * Visitor to delete documents.
+ */
+ public class DeleteVisitor implements DocumentVisitor {
+
+ private Document rootSource;
+ private DocumentManager manager;
+
+ /**
+ * Ctor.
+ * @param manager The document manager.
+ * @param source The root source.
+ */
+ public DeleteVisitor(DocumentManager manager, Document source) {
+ this.manager = manager;
+ this.rootSource = source;
+ }
+
+ protected Document getRootSource() {
+ return rootSource;
+ }
+
+ protected DocumentManager getDocumentManager() {
+ return this.manager;
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.util.DocumentVisitor#visitDocument(org.apache.lenya.cms.publication.Document)
+ */
+ public void visitDocument(Document document) throws PublicationException {
+ getDocumentManager().deleteAllLanguageVersions(document);
+ }
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org