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