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/01/07 17:21:15 UTC

svn commit: r124533 - /lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java

Author: andreas
Date: Fri Jan  7 08:21:11 2005
New Revision: 124533

URL: http://svn.apache.org/viewcvs?view=rev&rev=124533
Log:
implemented Create usecase
Modified:
   lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java?view=diff&rev=124533&p1=lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java&r1=124532&p2=lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java&r2=124533
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java	Fri Jan  7 08:21:11 2005
@@ -16,6 +16,10 @@
  */
 package org.apache.lenya.cms.site.usecases;
 
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.GregorianCalendar;
 import java.util.Map;
 
 import org.apache.cocoon.components.ContextHelper;
@@ -24,9 +28,17 @@
 import org.apache.cocoon.environment.Session;
 import org.apache.lenya.ac.Identity;
 import org.apache.lenya.ac.User;
+import org.apache.lenya.cms.authoring.ParentChildCreatorInterface;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.DocumentException;
+import org.apache.lenya.cms.publication.DocumentType;
+import org.apache.lenya.cms.publication.DocumentTypeBuilder;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.site.SiteManager;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
+import org.apache.lenya.cms.workflow.WorkflowFactory;
 
 /**
  * Usecase to create a resource.
@@ -34,13 +46,18 @@
  * @version $Id: Create.java 123982 2005-01-03 15:01:19Z andreas $
  */
 public class Create extends DocumentUsecase {
-    
-    protected static final String USER = "user";
+
     protected static final String LANGUAGE = "language";
+
     protected static final String LANGUAGES = "languages";
+
     protected static final String PARENT_ID = "parentId";
 
-	/**
+    protected static final String DOCUMENT_ID = "documentId";
+
+    protected static final String DOCUMENT_TYPE = "doctype";
+
+    /**
      * Ctor.
      */
     public Create() {
@@ -48,24 +65,30 @@
     }
 
     /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doInitialize()
-     */
-    protected void doInitialize() {
-        super.doInitialize();
-    }
-            
-     /**
-     * Validates the request parameters.
-     * @throws UsecaseException if an error occurs.
-     */
-    void validate() throws UsecaseException {
-    }
-
-    /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckExecutionConditions()
      */
     protected void doCheckExecutionConditions() throws Exception {
-        validate();
+        String documentId = getParameterAsString(DOCUMENT_ID);
+        String navigationTitle = getParameterAsString(DublinCore.ELEMENT_TITLE);
+
+        if (documentId.equals("")) {
+            addErrorMessage("The document ID is required.");
+        }
+
+        if (documentId.matches("[^a-zA-Z0-9\\-]+")) {
+            addErrorMessage("The document ID is not valid.");
+        }
+
+        if (navigationTitle.equals("")) {
+            addErrorMessage("The navigation title is required.");
+        }
+
+        /*
+         * DocumentIdentityMap map = getSourceDocument().getIdentityMap();
+         * SiteManager manager = null; try { manager =
+         * getSourceDocument().getPublication().getSiteManager(map); } catch
+         * (SiteException e) { throw new UsecaseException(e); }
+         */
     }
 
     /**
@@ -74,32 +97,94 @@
     protected void doExecute() throws Exception {
         super.doExecute();
 
+        Document parent = getSourceDocument();
+
+        String documentId = parent.getId() + "/" + getParameterAsString(DOCUMENT_ID);
+        String navigationTitle = getParameterAsString(DublinCore.ELEMENT_TITLE);
+        String documentTypeName = getParameterAsString(DOCUMENT_TYPE);
+        String language = getParameterAsString(LANGUAGE);
+
+        if (getLogger().isDebugEnabled()) {
+            getLogger().debug("Creating document");
+            getLogger().debug("    Parent document:   [" + parent.getId() + "]");
+            getLogger().debug("    Child document:    [" + documentId + "]");
+            getLogger().debug("    Language:          [" + language + "]");
+            getLogger().debug("    Document Type:     [" + documentTypeName + "]");
+            getLogger().debug("    Navigation Title:  [" + navigationTitle + "]");
+        }
+
+        Publication publication = parent.getPublication();
+        String area = parent.getArea();
+        Document document = parent.getIdentityMap().getFactory().get(area, documentId, language);
+
+        DocumentType documentType = DocumentTypeBuilder.buildDocumentType(documentTypeName,
+                publication);
+
+        String parentId = parent.getId().substring(1);
+        String childId = document.getNodeId();
+
+        File doctypesDirectory = new File(publication.getDirectory(),
+                DocumentTypeBuilder.DOCTYPE_DIRECTORY);
+
+        documentType.getCreator().create(new File(doctypesDirectory, "samples"),
+                new File(publication.getContentDirectory(area), parentId),
+                childId,
+                ParentChildCreatorInterface.BRANCH_NODE,
+                navigationTitle,
+                language,
+                Collections.EMPTY_MAP);
+
+        SiteManager manager = publication.getSiteManager(document.getIdentityMap());
+        manager.add(document);
+        manager.setLabel(document, navigationTitle);
+
+        WorkflowFactory.initHistory(document, documentType.getWorkflowFileName(), getSituation());
+
+        setMetaData(document);
+        setTargetDocument(document);
     }
 
     /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setParameter(java.lang.String, java.lang.Object)
-     */
-    public void setParameter(String name, Object value) {
-        super.setParameter(name, value);
-
+     * Sets the meta data of the created document.
+     * @param document The document.
+     * @throws DocumentException if an error occurs.
+     */
+    protected void setMetaData(Document document) throws DocumentException {
+        DublinCore dublinCore = document.getDublinCore();
+        dublinCore.setValue(DublinCore.ELEMENT_TITLE,
+                getParameterAsString(DublinCore.ELEMENT_TITLE));
+        dublinCore.setValue(DublinCore.ELEMENT_CREATOR,
+                getParameterAsString(DublinCore.ELEMENT_CREATOR));
+        dublinCore.setValue(DublinCore.ELEMENT_PUBLISHER,
+                getParameterAsString(DublinCore.ELEMENT_PUBLISHER));
+        dublinCore.setValue(DublinCore.ELEMENT_SUBJECT,
+                getParameterAsString(DublinCore.ELEMENT_SUBJECT));
+        dublinCore.setValue(DublinCore.ELEMENT_DATE, getParameterAsString(DublinCore.ELEMENT_DATE));
+        dublinCore.setValue(DublinCore.ELEMENT_RIGHTS,
+                getParameterAsString(DublinCore.ELEMENT_RIGHTS));
+        dublinCore.setValue(DublinCore.ELEMENT_LANGUAGE, getParameterAsString(LANGUAGE));
+        dublinCore.save();
     }
-    
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
      */
     protected void initParameters() {
         super.initParameters();
-        
+
         Document parent = getSourceDocument();
         setParameter(PARENT_ID, parent.getId());
-        
+
         Map objectModel = ContextHelper.getObjectModel(getContext());
         Request request = ObjectModelHelper.getRequest(objectModel);
         Session session = request.getSession(false);
         Identity identity = (Identity) session.getAttribute(Identity.class.getName());
         User user = identity.getUser();
-        setParameter(USER, user.getId());
-        
+        setParameter(DublinCore.ELEMENT_CREATOR, user.getId());
+
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+        setParameter(DublinCore.ELEMENT_DATE, format.format(new GregorianCalendar().getTime()));
+
         String[] languages = parent.getPublication().getLanguages();
         setParameter(LANGUAGES, languages);
     }

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