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