1 10 package org.mmbase.module.core; 11 12 import java.util.*; 13 import org.mmbase.bridge.Field; 14 import org.mmbase.datatypes.*; 15 import org.mmbase.core.CoreField; 16 import org.mmbase.core.util.Fields; 17 import org.mmbase.util.logging.Logger; 18 import org.mmbase.util.logging.Logging; 19 20 29 public class VirtualBuilder extends MMObjectBuilder { 30 private static final Logger log = Logging.getLoggerInstance(VirtualBuilder.class); 31 32 private static int counter = 0; 33 40 public VirtualBuilder(MMBase m) { 41 this.mmb = m; 42 this.tableName = "virtualnodes_" + counter++; 43 this.description = ""; 44 virtual = true; 45 } 46 47 52 protected VirtualBuilder(MMBase m, String tableName) { 53 this.mmb = m; 54 this.tableName = tableName; 55 this.description = ""; 56 virtual = true; 57 if (m.addBuilder(tableName, this) != null) { 58 log.debug("Replaced virtual builder '" + tableName + "'"); 59 } else { 60 log.debug("Created virtual builder '" + tableName + "'"); 61 } 62 } 63 64 72 public boolean init() { 73 return true; 74 } 75 76 81 public boolean create() { 82 return true; 83 } 84 85 92 public int insert(String owner,MMObjectNode node) { 93 return -1; 95 } 96 97 103 public MMObjectNode getNewNode(String owner) { 104 VirtualNode node = new VirtualNode(this); 105 node.setValue("number",-1); 106 node.setValue("owner",owner); 107 node.setValue("otype",oType); 108 setDefaults(node); 109 return node; 110 } 111 112 120 public String getGUIIndicator(MMObjectNode node) { 121 String s= node.getStringValue("name"); 122 if (s != null) { 123 return s; 124 } else { 125 return GUI_INDICATOR; 126 } 127 } 128 129 135 public int getDBState(String fieldName) { 136 return Field.STATE_VIRTUAL; 137 } 138 139 147 protected String getShortedText(String fieldName, MMObjectNode node) { 148 return null; 149 } 150 151 152 160 protected byte[] getShortedByte(String fieldName, MMObjectNode node) { 161 return null; 162 } 163 164 165 169 public Map getFields(MMObjectNode node) { 170 Map res = new HashMap(); 171 Map values = node.getValues(); 173 synchronized(values) { 174 Iterator i = values.entrySet().iterator(); 175 while (i.hasNext()) { 176 Map.Entry entry = (Map.Entry) i.next(); 177 String fieldName = (String ) entry.getKey(); 178 Object value = entry.getValue(); 179 if (value == null) value = new Object (); 180 DataType fieldDataType = DataTypes.createDataType("field", value.getClass()); 181 int type = Fields.classToType(value.getClass()); 182 CoreField fd = Fields.createField(fieldName, type, Field.TYPE_UNKNOWN, Field.STATE_VIRTUAL, fieldDataType); 183 fd.finish(); 184 res.put(fieldName, fd); 185 } 186 } 187 return res; 188 } 189 } 190 | Popular Tags |