Update of /var/cvs/src/org/mmbase/module/builders
In directory james.mmbase.org:/tmp/cvs-serv9948

Modified Files:
        Properties.java 
Log Message:
added a nodelist function to list properties




See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/module/builders


Index: Properties.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/module/builders/Properties.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- Properties.java     12 Jun 2008 12:06:48 -0000      1.18
+++ Properties.java     15 Jan 2009 19:48:13 -0000      1.19
@@ -39,9 +39,13 @@
           </mm:listnodes>
         </div>
       </mm:cloud>
+      
+      <mm:nodelistfunction nodemanager="properties" name="list" 
referids="_n...@node">
+        <mm:field name="key" />:<mm:field name="value" />
+      </mm:nodelistfunction>
   </pre>
  *
- * @version $Id: Properties.java,v 1.18 2008/06/12 12:06:48 michiel Exp $
+ * @version $Id: Properties.java,v 1.19 2009/01/15 19:48:13 andre Exp $
  */
 public class Properties extends MMObjectBuilder {
 
@@ -63,6 +67,7 @@
     protected final static Parameter<String> KEY   = new 
Parameter<String>("key", String.class, true);
     protected final static Parameter<Object> VALUE = new 
Parameter<Object>("value", Object.class);
     protected final static Parameter<Object>  DEFAULT = new 
Parameter<Object>("default", Object.class);
+    protected final static Parameter[] LIST_PARAMETERS = { NODE, DEFAULT };
     protected final static Parameter[] GET_PARAMETERS = { NODE, KEY, DEFAULT };
     protected final static Parameter[] SET_PARAMETERS = { new 
Parameter.Wrapper(GET_PARAMETERS), VALUE };
 
@@ -100,7 +105,23 @@
 
     }
 
+    /**
+     * @since MMBase-1.9.1
+     */
+    protected NodeList getPropertyNodes(Node node) {
+        NodeQuery q = 
node.getCloud().getNodeManager(Properties.this.getTableName()).createQuery();
+        Queries.addConstraint(q, Queries.createConstraint(q, "parent", 
FieldCompareConstraint.EQUAL, node));
+        return q.getNodeManager().getList(q);
+    }
+
     {
+        addFunction(new AbstractFunction<Object>("list", LIST_PARAMETERS) {
+                public Object getFunctionValue(Parameters parameters) {
+                    Object v = 
Properties.this.getPropertyNodes(parameters.get(NODE));
+                    if (v == null) return parameters.get(DEFAULT);
+                    return v;
+                }
+            });
         addFunction(new AbstractFunction<Object>("get", GET_PARAMETERS) {
                 public Object getFunctionValue(Parameters parameters) {
                     Object v = Properties.this.getValue(parameters.get(NODE), 
parameters.get(KEY));
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to