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 2007/04/02 16:51:23 UTC

svn commit: r524798 - /lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java

Author: andreas
Date: Mon Apr  2 07:51:22 2007
New Revision: 524798

URL: http://svn.apache.org/viewvc?view=rev&rev=524798
Log:
Simplified DocumentManagerImpl, this should fix bug 40061.

Modified:
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?view=diff&rev=524798&r1=524797&r2=524798
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Mon Apr  2 07:51:22 2007
@@ -82,36 +82,27 @@
 
     /**
      * Copies meta data from one document to another.
+     * If the destination document is a different area version, the meta data
+     * are duplicated (i.e., onCopy = delete is neglected).
      * @param source
      * @param destination
      * @throws PublicationException
      */
     protected void copyMetaData(Document source, Document destination) throws PublicationException {
-        try {
-            String[] uris = source.getMetaDataNamespaceUris();
-            for (int i = 0; i < uris.length; i++) {
-                destination.getMetaData(uris[i]).replaceBy(source.getMetaData(uris[i]));
-            }
-        } catch (MetaDataException e) {
-            throw new PublicationException(e);
-        }
-    }
 
-    /**
-     * Copies meta data from one document to another, whereas both documents
-     * will have completely identical meta data afterwards (including workflow
-     * etc.). This is only useful if the source document will be deleted
-     * afterwards or for creating a new area version (e.g., during publishing).
-     * @param source
-     * @param destination
-     * @throws PublicationException
-     */
-    protected void duplicateMetaData(Document source, Document destination)
-            throws PublicationException {
+        boolean duplicate = source.getUUID().equals(destination.getUUID())
+                && source.getLanguage().equals(destination.getLanguage())
+                && !source.getArea().equals(destination.getArea());
+
         try {
             String[] uris = source.getMetaDataNamespaceUris();
             for (int i = 0; i < uris.length; i++) {
-                destination.getMetaData(uris[i]).forcedReplaceBy(source.getMetaData(uris[i]));
+                if (duplicate) {
+                    destination.getMetaData(uris[i]).forcedReplaceBy(source.getMetaData(uris[i]));
+                }
+                else {
+                    destination.getMetaData(uris[i]).replaceBy(source.getMetaData(uris[i]));
+                }
             }
         } catch (MetaDataException e) {
             throw new PublicationException(e);
@@ -408,12 +399,7 @@
             destinationDoc = sourceDoc.getAreaVersion(destinationArea);
             copyDocumentSource(sourceDoc, destinationDoc);
         } else {
-            if (language.equals(sourceDoc.getLanguage()) && !destinationArea.equals(sourceDoc.getArea())) {
-                destinationDoc = duplicateVersion(sourceDoc, destinationArea, language);
-            }
-            else {
-                destinationDoc = addVersion(sourceDoc, destinationArea, language);
-            }
+            destinationDoc = addVersion(sourceDoc, destinationArea, language);
         }
 
         SiteStructure destSite = sourceDoc.getPublication().getArea(destinationArea).getSite();
@@ -537,7 +523,7 @@
             if (sourceArea.getName().equals(targetArea.getName())) {
                 targetDoc = sourceDoc;
             } else {
-                targetDoc = duplicateVersion(sourceDoc, targetArea.getName(), sourceDoc
+                targetDoc = addVersion(sourceDoc, targetArea.getName(), sourceDoc
                         .getLanguage());
                 sourceDoc.delete();
             }
@@ -605,19 +591,8 @@
         copyMetaData(sourceDocument, destinationDocument);
     }
 
-    /**
-     * Duplicates a document source. Meta data are duplicated as they are.
-     * @param sourceDocument The source document.
-     * @param destinationDocument The destination document.
-     * @throws PublicationException when something went wrong.
-     */
-    public void duplicateDocumentSource(Document sourceDocument, Document destinationDocument)
+    protected void copyContent(Document sourceDocument, Document destinationDocument)
             throws PublicationException {
-        copyContent(sourceDocument, destinationDocument);
-        copyMetaData(sourceDocument, destinationDocument);
-    }
-
-    protected void copyContent(Document sourceDocument, Document destinationDocument) throws PublicationException {
         boolean useBuffer = true;
 
         OutputStream destOutputStream = null;
@@ -943,15 +918,6 @@
                         .getPublication(), area, language, sourceDocument.getSourceExtension());
         copyMetaData(sourceDocument, document);
 
-        return document;
-    }
-
-    protected Document duplicateVersion(Document sourceDocument, String area, String language)
-            throws DocumentBuildException, DocumentException, PublicationException {
-        Document document = add(sourceDocument.getFactory(), sourceDocument.getResourceType(),
-                sourceDocument.getUUID(), sourceDocument.getInputStream(), sourceDocument
-                        .getPublication(), area, language, sourceDocument.getSourceExtension());
-        duplicateMetaData(sourceDocument, document);
         return document;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org