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