01: /**
02:
03: This software is OSI Certified Open Source Software.
04: OSI Certified is a certification mark of the Open Source Initiative.
05:
06: The license (Mozilla version 1.0) can be read at the MMBase site.
07: See http://www.MMBase.org/license
08:
09: */package org.mmbase.module.core;
10:
11: /**
12: * VirtualBuilder is a builder which creates 'virtual' nodes.
13: * This class is intended to facilitate practical creation of virtual
14: * builders by capturing events that migth otherwise lead to unexpected or
15: * faulty behavior.
16: *
17: * @author Pierre van Rooden
18: * @version $Id: VirtualReferrerBuilder.java,v 1.6 2006/10/14 14:35:38 nklasens Exp $
19: * @since MMBase-1.7
20: */
21: public class VirtualReferrerBuilder extends VirtualBuilder {
22:
23: private MMObjectBuilder originalBuilder = null;
24:
25: /**
26: * Creates an instance of a Virtual builder.
27: * A builder instantiated with this constrcutor is not registered in MMBase
28: * and should only be used as a temporary parent for virtual nodes which
29: * do not have a long life span.
30: */
31: public VirtualReferrerBuilder(MMObjectBuilder originalBuilder) {
32: super (originalBuilder.mmb);
33: this .originalBuilder = originalBuilder;
34: this .tableName = "virtual_" + originalBuilder.getTableName();
35: fields.clear();
36: fields.putAll(originalBuilder.fields);
37: }
38:
39: /**
40: * What should a GUI display for this node.
41: * @param node The node to display
42: * @return either the name field of the node or "no info"
43: */
44: public String getGUIIndicator(MMObjectNode node) {
45: return originalBuilder.getGUIIndicator(node);
46: }
47:
48: /**
49: * Provides additional functionality when obtaining field values.
50: * @param node the node who setfields are queried
51: * @param field the fieldname that is requested
52: * @return the result of the 'function', or null if no valid functions could be determined.
53: */
54: public Object getValue(MMObjectNode node, String field) {
55: return originalBuilder.getValue(node, field);
56: }
57:
58: /**
59: * Returns the original builder
60: */
61: public Object getOriginalBuilder() {
62: return originalBuilder;
63: }
64: }
|