Update of /var/cvs/applications/richtext/src/org/mmbase/versioning
In directory james.mmbase.org:/tmp/cvs-serv24214/src/org/mmbase/versioning
Modified Files:
VersioningCommitProcessor.java
Added Files:
IdRelVersioningCommitProcessor.java
Log Message:
support for version_from, version_to fields in idrel nodes. This allows for
some more convenient versioning support in richtext
See also:
http://cvs.mmbase.org/viewcvs/applications/richtext/src/org/mmbase/versioning
IdRelVersioningCommitProcessor.java is new
Index: VersioningCommitProcessor.java
===================================================================
RCS file:
/var/cvs/applications/richtext/src/org/mmbase/versioning/VersioningCommitProcessor.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- VersioningCommitProcessor.java 25 Mar 2008 09:41:51 -0000 1.6
+++ VersioningCommitProcessor.java 3 Jun 2008 09:43:01 -0000 1.7
@@ -1,7 +1,9 @@
package org.mmbase.versioning;
import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.Queries;
import org.mmbase.datatypes.processors.CommitProcessor;
+import org.mmbase.storage.search.FieldCompareConstraint;
import org.mmbase.util.Casting;
import org.mmbase.util.logging.Logger;
@@ -11,7 +13,7 @@
* This commitprocessor copies on every commit the complete node to a
'versioning' table.
* @author Sander de Boer
* @author Michiel Meeuwissen
- * @version $Id: VersioningCommitProcessor.java,v 1.6 2008/03/25 09:41:51
michiel Exp $
+ * @version $Id: VersioningCommitProcessor.java,v 1.7 2008/06/03 09:43:01
michiel Exp $
* @since
*/
@@ -27,16 +29,32 @@
public static final String OBJECT_FIELD = "object";
public static final String COMMENTS_FIELD = "comments";
+ public static NodeManager getVersionsManager(NodeManager nm) {
+ String versionBuilder = nm.getProperty("versionbuilder");
+ if (versionBuilder == null || "".equals(versionBuilder)) {
+ versionBuilder = nm.getName() + "_versions";
+ }
+ return nm.getCloud().getNodeManager(versionBuilder);
+ }
+
+ public static NodeQuery getVersionsQuery(Node node) {
+ NodeQuery q = getVersionsManager(node.getNodeManager()).createQuery();
+ Queries.addConstraint(q, Queries.createConstraint(q, OBJECT_FIELD,
FieldCompareConstraint.EQUAL, node));
+ Queries.addSortOrders(q, VERSION_FIELD, "UP");
+ return q;
+ }
+ public static NodeList getVersions(Node node) {
+ NodeQuery q = getVersionsQuery(node);
+ return q.getNodeManager().getList(q);
+ }
+
public void commit(Node node, Field field) {
if (node.isChanged()) {
log.debug("Commiting " + node + "setting version in " + field);
+
NodeManager wo = node.getNodeManager();
- String versionBuilder = wo.getProperty("versionbuilder");
+ NodeManager wv = getVersionsManager(wo);
- if (versionBuilder == null || "".equals(versionBuilder)) {
- versionBuilder = wo.getName() + "_versions";
- }
- NodeManager wv = node.getCloud().getNodeManager(versionBuilder);
log.debug("Found the version builder: '" + wv.getName() + "'");
//clone this version to the versions builder
@@ -58,7 +76,11 @@
Object validation =
version.getCloud().getProperty(Cloud.PROP_IGNOREVALIDATION);
version.getCloud().setProperty(Cloud.PROP_IGNOREVALIDATION,
Boolean.TRUE);
// shit..., node fields don't like new nodes.
+ try {
version.commit();
+ } catch (Exception e) {
+ log.error(e);
+ }
version.getCloud().setProperty(Cloud.PROP_IGNOREVALIDATION,
validation);
}
// could solve it by in this case using the _old values_ of the
node.
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs