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

Reply via email to