1 10 package org.mmbase.module.gui.html; 11 12 import java.util.*; 13 import org.mmbase.module.core.*; 14 import org.mmbase.util.logging.*; 15 16 24 public class EditStateNode { 25 26 29 private static Logger log = Logging.getLoggerInstance(EditStateNode.class.getName()); 30 31 private static boolean removeRelations=false; 33 Hashtable searchValues = new Hashtable(); 34 Hashtable htmlValues = new Hashtable(); 35 String editNode; 36 String editor; 37 String dutchEditor; 38 String selectionQuery=""; 39 MMObjectBuilder mmObjectBuilder; 40 MMObjectNode node; 41 MMBase mmBase; 42 int nodeEditPos=0; 43 boolean insSave=false; 44 Vector insSaveList=new Vector(); 45 46 public EditStateNode(MMBase mmBase) { 47 this.mmBase=mmBase; 48 } 49 50 public boolean setSearchValue(String fieldname,Object value) { 51 searchValues.put(fieldname,value); 52 return true; 53 } 54 55 public String getSearchValue(String name) { 56 String result = null; 57 58 if( name != null ) 59 if( !name.equals("") ) 60 result = ((String )searchValues.get(name)); 61 else 62 log.error("getSearchValue("+name+"): name is empty!"); 63 else 64 log.error("getSearchValue("+name+"): name is null!"); 65 66 return result; 67 } 68 69 public Hashtable getSearchValues() { 70 return searchValues; 71 } 72 73 public boolean isChanged() { 74 if (node.isChanged() || insSaveList.size()>0) { 75 return true; 76 } else { 77 return false; 78 } 79 } 80 81 public void clearSearchValues() { 82 searchValues=new Hashtable(); 83 } 84 85 86 public boolean setHtmlValue(String fieldname,Object value) { 87 if( fieldname != null ) 88 { 89 if(!fieldname.equals("")) 90 { 91 htmlValues.put(fieldname,value); 92 } 93 else 94 log.error("setHtmlValue("+fieldname+","+value+"): fieldname is empty!"); 95 } 96 else 97 log.error("setHtmlValue("+fieldname+","+value+"): fieldname is null!"); 98 99 return true; 100 } 101 102 public String getHtmlValue(String name) { 103 return (String )htmlValues.get(name); 104 } 105 106 public Hashtable getHtmlValues() { 107 return htmlValues; 108 } 109 110 public void clearHtmlValues() { 111 htmlValues=new Hashtable(); 112 } 113 114 public void setEditNode(String number,String userName) { 115 node = mmObjectBuilder.getNode(number); 116 editNode = number; 117 } 118 119 120 public void getNewNode(String owner) { 121 node = mmObjectBuilder.getNewNode(owner); 122 editNode="-1"; 123 delRelationTable(); 124 } 126 127 public void removeNode() { 128 mmObjectBuilder.removeNode(node); 129 } 130 131 public void removeRelations() { 132 if (removeRelations) { 133 mmObjectBuilder.removeRelations(node); 134 } 135 } 136 137 public MMObjectNode getEditNode() { 138 return node; 139 } 140 141 public MMObjectNode getEditSrcNode() { 142 int snum=node.getIntValue("snumber"); 143 if (snum!=-1) { 144 MMObjectNode rnode=mmObjectBuilder.getNode(snum); 145 return rnode; 146 } else { 147 return null; 148 } 149 } 150 151 152 public MMObjectNode getEditDstNode() { 153 int dnum=node.getIntValue("dnumber"); 154 if (dnum!=-1) { 155 MMObjectNode rnode=mmObjectBuilder.getNode(dnum); 156 return rnode; 157 } else { 158 return null; 159 } 160 } 161 162 public int getEditNodeNumber() { 163 try { 164 int i=Integer.parseInt(editNode); 165 return i; 166 } catch(Exception e) { 167 } 168 return -1; 169 } 170 171 public void setBuilder(String name) { 172 if( name != null ) 173 if( mmBase != null ) 174 { 175 mmObjectBuilder = mmBase.getMMObject(name); 176 if( mmObjectBuilder != null ) 177 dutchEditor= mmObjectBuilder.getSingularName(); 178 else 179 log.error("setBuilder("+name+"): No MMObjectBuilder found with this name!"); 180 editor = name; 181 } 182 else 183 log.error("setBuilder("+name+"): MMBase is not defined!"); 184 else 185 log.error("setBuilder("+name+"): Name is not valid!"); 186 } 187 188 public String getBuilderName() { 189 return editor; 190 } 191 192 public String getDutchBuilderName() { 193 return dutchEditor; 194 } 195 196 public MMObjectBuilder getBuilder() { 197 return mmObjectBuilder; 198 } 199 200 public void setSelectionQuery(String query) { 201 selectionQuery = query; 202 } 203 204 public String getSelectionQuery() { 205 return selectionQuery; 206 } 207 208 public boolean getInsSave() { 209 return insSave; 210 } 211 212 public void setInsSave(boolean set) { 213 insSave=set; 214 } 215 216 public void setInsSaveNode(MMObjectNode node) { 217 insSaveList.addElement(node); 218 log.debug("setInsSaveNode(): "+insSaveList.toString()); 219 } 220 221 public Vector getInsSaveList() { 222 return insSaveList; 223 } 224 225 public void delInsSaveList() { 226 insSaveList=new Vector(); 227 } 228 229 public void delRelationTable() { 230 log.debug("delRelationTable(): Del on relation table, here not implemented!"); 231 } 232 233 237 public Hashtable getRelationTable() { 238 Enumeration enumeration = mmBase.getTypeRel().getAllowedRelations(node); 239 MMObjectNode typeRel; 240 String typeName; 241 242 245 Hashtable relationTable = new Hashtable(); 246 while (enumeration.hasMoreElements()) { 247 typeRel = (MMObjectNode)enumeration.nextElement(); 248 int j=typeRel.getIntValue("snumber"); 249 if (j== node.getIntValue("otype")) { 250 j=typeRel.getIntValue("dnumber"); 251 } 252 if (j!=-1) { 253 typeName = mmBase.getTypeDef().getValue(j); 254 relationTable.put(typeName,new Vector()); 255 } else { 256 log.warn("getRelationTable(): Problem on "+typeRel.toString()); 257 } 258 259 } 260 261 265 if (getEditNodeNumber()!=-1) { 266 267 270 enumeration = node.getRelations(); 271 272 MMObjectNode rel; 273 MMObjectNode target; 274 275 while (enumeration.hasMoreElements()) { 276 try { 277 rel = (MMObjectNode)enumeration.nextElement(); 278 if (rel.getIntValue("snumber") == node.getIntValue("number")) 279 target = mmObjectBuilder.getNode(rel.getIntValue("dnumber")); 280 else 281 target = mmObjectBuilder.getNode(rel.getIntValue("snumber")); 282 typeName = target.getBuilder().getTableName(); 283 Vector relList = (Vector)relationTable.get(typeName); 284 if (relList != null) { 285 relList.addElement(target); 286 relList.addElement(rel); 287 } else { 288 log.warn("Relation ("+typeName+") defined, but typerel for this relation does not exist"); 289 } 290 } catch(Exception e) { 291 log.warn("getRelationTable(): Problem with a relation, probably a relation with a non active builder"); 292 } 293 } 294 } else { 295 log.debug("getRelation(): EditNodeNumber is -1"); 296 } 297 return relationTable; 298 } 299 } 300 | Popular Tags |