[Yanel-commits] rev 57519 - public/yanel/trunk/src/core/java/org/wyona/yanel/core/util
michi at wyona.com
michi at wyona.com
Fri Mar 25 15:18:04 CET 2011
Author: michi
Date: 2011-03-25 15:18:04 +0100 (Fri, 25 Mar 2011)
New Revision: 57519
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/util/VersioningUtil.java
Log:
set workflow if applicable
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/util/VersioningUtil.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/util/VersioningUtil.java 2011-03-25 14:16:31 UTC (rev 57518)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/util/VersioningUtil.java 2011-03-25 14:18:04 UTC (rev 57519)
@@ -19,12 +19,13 @@
import org.wyona.yanel.core.Resource;
import org.wyona.yanel.core.api.attributes.ModifiableV2;
import org.wyona.yanel.core.api.attributes.VersionableV2;
+import org.wyona.yanel.core.api.attributes.WorkflowableV1;
import org.wyona.yanel.core.attributes.versionable.RevisionInformation;
import org.apache.log4j.Logger;
/**
- *
+ * Utility class in order to roll-back to a particular revision
*/
public class VersioningUtil {
@@ -43,6 +44,14 @@
versionableRes.checkout(userName);
versionableRes.restore(revisionName);
versionableRes.checkin("Rolled back to revision '" + revisionName + "'");
+ if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Workflowable", "1")) {
+ WorkflowableV1 workflowableRes = (WorkflowableV1) resource;
+ // TBD: Should the workflow state of the old revision be used (as is) or rather workflow.getInitialState()
+ //log.debug("Revision head: " + getRevisionHead(versionableRes));
+ workflowableRes.setWorkflowState(workflowableRes.getWorkflowState(revisionName), getRevisionHead(versionableRes));
+ } else {
+ log.info("Cannot set workflow, because resource '" + resource.getPath() + "' is not WorkflowableV1");
+ }
} else {
log.warn("Resource is already checked out by user '" + versionableRes.getCheckoutUserID() + "' and hence cannot be rolled back at the moment!");
}
@@ -50,7 +59,16 @@
log.error(e, e);
}
} else {
- log.warn("Cannot be rolled back, because resource is not VersionableV2");
+ log.warn("Cannot be rolled back, because resource '" + resource.getPath() + "' is not VersionableV2");
}
}
+
+ /**
+ * Get revision number/name of head (most recent) revision (WARN: Peformance/Scalability)
+ */
+ private static String getRevisionHead(VersionableV2 resource) throws Exception {
+ RevisionInformation[] ri = resource.getRevisions();
+ java.util.Arrays.sort(ri);
+ return ri[0].getName();
+ }
}
More information about the Yanel-commits
mailing list