Author: michiel
Date: 2010-06-15 11:15:44 +0200 (Tue, 15 Jun 2010)
New Revision: 42555

Modified:
   mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/mock/MockNodeManager.java
Log:
node default values

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/mock/MockNodeManager.java
===================================================================
--- 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/mock/MockNodeManager.java   
    2010-06-15 09:15:18 UTC (rev 42554)
+++ 
mmbase/trunk/bridge/src/main/java/org/mmbase/bridge/mock/MockNodeManager.java   
    2010-06-15 09:15:44 UTC (rev 42555)
@@ -16,6 +16,7 @@
 import java.util.*;
 import org.mmbase.bridge.*;
 import org.mmbase.util.functions.*;
+import org.mmbase.util.logging.*;
 
 /**
  * Straight-forward implementation of NodeManager based on a Map with 
DataType's.
@@ -26,6 +27,7 @@
  */
 
 public class MockNodeManager extends AbstractNodeManager  {
+    private static final  Logger log = 
Logging.getLoggerInstance(MockNodeManager.class);
 
     protected final Map<String, Field> map = new LinkedHashMap<String, 
Field>();
     protected final String name;
@@ -87,14 +89,44 @@
     public String getName() {
         return name;
     }
+    // TODO This method is more or less copied from a method in 
AbstactNodeManager and should be generalized
+    protected void setDefaultsWithCloud(Node node) {
+        log.debug("Setting default values");
+        for (Iterator i = getFields().iterator(); i.hasNext(); ) {
+            Field field = (Field) i.next();
+            if (field.getName().equals("number"))      continue;
+            if (field.getName().equals("otype")) continue;
 
+            if (node.isNull(field.getName()) || 
"".equals(node.getStringValue(field.getName()))) { // required field are set to 
'', which would destroy the default value...
+                org.mmbase.datatypes.DataType dt = field.getDataType();
+                //log.info("" + field.getName() + " " + dt);
+                Object defaultValue = 
dt.getDefaultValue(getCloud().getLocale(), getCloud(), field);
+                if (defaultValue != null) {
+                    if (defaultValue instanceof Node) {
+                        defaultValue = ((Node) defaultValue).getNumber();
+                    }
+
+                    node.setValueWithoutProcess(field.getName(), defaultValue);
+                }
+            } else {
+                if (log.isDebugEnabled()) {
+                    log.debug("" + field.getName() + " is already non null, 
but " + node.getValue(field.getName()));
+                }
+            }
+        }
+    }
+
+
+
     @Override
     public Node createNode() {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("otype", oType);
         map.put("owner", vcloud.getUser().getOwnerField());
         MockCloudContext.NodeDescription desc = new 
MockCloudContext.NodeDescription(getName(), map);
-        return vcloud.getNode(desc, true);
+        Node n = vcloud.getNode(desc, true);
+        setDefaultsWithCloud(n);
+        return n;
     }
 
 

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to