[Yanel-commits] rev 24466 -
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources
michi at wyona.com
michi at wyona.com
Mon May 14 23:24:32 CEST 2007
Author: michi
Date: 2007-05-14 23:24:30 +0200 (Mon, 14 May 2007)
New Revision: 24466
Modified:
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
Log:
implement workflowable
Modified: public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
===================================================================
--- public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-05-14 21:22:27 UTC (rev 24465)
+++ public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-05-14 21:24:30 UTC (rev 24466)
@@ -28,6 +28,7 @@
import org.wyona.yanel.core.api.attributes.VersionableV2;
import org.wyona.yanel.core.api.attributes.ViewableV1;
import org.wyona.yanel.core.api.attributes.ViewableV2;
+import org.wyona.yanel.core.api.attributes.WorkflowableV1;
import org.wyona.yanel.core.attributes.translatable.TranslationException;
import org.wyona.yanel.core.attributes.translatable.TranslationManager;
import org.wyona.yanel.core.attributes.versionable.RevisionInformation;
@@ -42,9 +43,17 @@
import org.wyona.yanel.core.transformation.XIncludeTransformer;
import org.wyona.yanel.core.util.PathUtil;
import org.wyona.yanel.core.util.ResourceAttributeHelper;
+import org.wyona.yanel.core.workflow.Transition;
+import org.wyona.yanel.core.workflow.Workflow;
+import org.wyona.yanel.core.workflow.WorkflowBuilder;
+import org.wyona.yanel.core.workflow.WorkflowException;
+import org.wyona.yanel.core.workflow.WorkflowHelper;
+import org.wyona.yarep.core.NoSuchNodeException;
+import org.wyona.yarep.core.NoSuchPropertyException;
import org.wyona.yarep.core.Node;
import org.wyona.yarep.core.Repository;
+import org.wyona.yarep.core.RepositoryException;
import org.wyona.yarep.core.RepositoryFactory;
import org.wyona.yarep.core.Revision;
import org.wyona.yarep.util.RepoPath;
@@ -87,10 +96,10 @@
/**
*
*/
-public class XMLResource extends Resource implements ViewableV2, ModifiableV2, VersionableV2, CreatableV2, IntrospectableV1, TranslatableV1 {
+public class XMLResource extends Resource implements ViewableV2, ModifiableV2, VersionableV2, CreatableV2, IntrospectableV1, TranslatableV1, WorkflowableV1 {
private static Category log = Category.getInstance(XMLResource.class);
-
+
/**
*
*/
@@ -450,25 +459,7 @@
}
}
- /**
- * Get property value from resource configuration
- */
- private String getResourceConfigProperty(String name) throws Exception {
- ResourceConfiguration rc = getConfiguration();
- if (rc != null) return rc.getProperty(name);
- return getRTI().getProperty(name);
- }
-
- /**
- * Get property value from resource configuration
- */
- private String[] getResourceConfigProperties(String name) throws Exception {
- ResourceConfiguration rc = getConfiguration();
- if (rc != null) return rc.getProperties(name);
- return getRTI().getProperties(name);
- }
-
/**
*
*/
@@ -588,54 +579,8 @@
sb.append("<checkin url=\"?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
sb.append("</edit>");
- RevisionInformation[] revisions = getRevisions();
- if (revisions != null && revisions.length > 0) {
- sb.append("<versions>");
- for (int i = revisions.length - 1; i >= 0; i--) {
- sb.append("<version url=\"?yanel.resource.revision=" + revisions[i].getName() + "\">");
- sb.append("<comment>" + revisions[i].getComment() + "</comment>");
- sb.append("<date>" + revisions[i].getDate() + "</date>");
- sb.append("<user>" + revisions[i].getUser() + "</user>");
- sb.append("<revision>" + revisions[i].getName() + "</revision>");
-
- sb.append("<workflow>");
- sb.append(" <state date=\"2006-05-23T00:38:05+02:00\">REVIEW</state>");
- sb.append("<transitions>");
- sb.append("<transition id=\"publish\" to=\"LIVE\" url=\"?yanel.resource.workflow.transition=publish\" method=\"POST\">");
- sb.append("<description>Publish</description>");
- sb.append("</transition>");
- sb.append("</transitions>");
- sb.append("<history>");
- sb.append(" <state date=\"2006-05-23T00:31:05+02:00\">DRAFT</state>");
- sb.append("</history>");
- sb.append("</workflow>");
-
- sb.append("</version>");
- }
- sb.append("</versions>");
- } else {
- // TODO: Does this really make sense? Does Neutron require this?
- sb.append("<versions>");
- sb.append("<version>");
- sb.append("<comment>Only one version available!</comment>");
- sb.append("<date>" + getLastModified() + "</date>");
- sb.append("<user>DUMMY</user>");
- sb.append("<revision>NAN</revision>");
-
- sb.append("<workflow>");
- sb.append(" <state date=\"2006-05-23T00:38:05+02:00\">REVIEW</state>");
- sb.append("<transitions>");
- sb.append("<transition id=\"publish\" to=\"LIVE\" url=\"?yanel.resource.workflow.transition=publish\" method=\"POST\">");
- sb.append("<description>Publish</description>");
- sb.append("</transition>");
- sb.append("</transitions>");
- sb.append("<history>");
- sb.append(" <state date=\"2006-05-23T00:31:05+02:00\">DRAFT</state>");
- sb.append("</history>");
- sb.append("</workflow>");
- sb.append("</version>");
- sb.append("</versions>");
- }
+ sb.append(WorkflowHelper.getWorkflowIntrospection(this));
+
sb.append("</resource>");
sb.append("</introspection>");
return sb.toString();
@@ -668,4 +613,50 @@
public void removeTranslation(String language) throws TranslationException {
getTranslationManager().removeTranslation(this, language);
}
+
+ /************************************************
+ * Workflow *
+ ************************************************/
+
+ public void doTransition(String transitionID, String revision) throws WorkflowException {
+ WorkflowHelper.doTransition(this, transitionID, revision);
+ }
+
+ public View getLiveView(String viewid) throws Exception {
+ if (WorkflowHelper.isLive(this)) {
+ String liveRevision = WorkflowHelper.getLiveRevision(this);
+ return getView(viewid, liveRevision);
+ } else {
+ return null;
+ }
+ }
+
+ public boolean isLive() throws WorkflowException {
+ return WorkflowHelper.isLive(this);
+ }
+
+ public String getWorkflowVariable(String name) throws WorkflowException {
+ return WorkflowHelper.getWorkflowVariable(this, name);
+ }
+
+ public void setWorkflowVariable(String name, String value) throws WorkflowException {
+ WorkflowHelper.setWorkflowVariable(this, name, value);
+ }
+
+ public void removeWorkflowVariable(String name) throws WorkflowException {
+ WorkflowHelper.removeWorkflowVariable(this, name);
+ }
+
+ public String getWorkflowState(String revision) throws WorkflowException {
+ return WorkflowHelper.getWorkflowState(this, revision);
+ }
+
+ public void setWorkflowState(String state, String revision) throws WorkflowException {
+ WorkflowHelper.setWorkflowState(this, state, revision);
+ }
+
+ public Date getWorkflowDate(String revision) throws WorkflowException {
+ return WorkflowHelper.getWorkflowDate(this, revision);
+ }
+
}
More information about the Yanel-commits
mailing list