KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > module > gui > html > EditStateNode


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

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 /**
17  * EditStateNode (hitlisted)
18  *
19  * @application SCAN
20  * @author Daniel Ockeloen
21  * @author Hans Speijer
22  * @version $Id: EditStateNode.java,v 1.17 2005/10/06 14:07:32 michiel Exp $
23  */

24 public class EditStateNode {
25
26     /**
27     * Logging instance
28     */

29     private static Logger log = Logging.getLoggerInstance(EditStateNode.class.getName());
30
31     private static boolean removeRelations=false; // remover relations on node delete
32

33     Hashtable searchValues = new Hashtable();
34     Hashtable htmlValues = new Hashtable();
35     String JavaDoc editNode;
36     String JavaDoc editor;
37     String JavaDoc dutchEditor;
38     String JavaDoc 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 JavaDoc fieldname,Object JavaDoc value) {
51         searchValues.put(fieldname,value);
52         return true;
53     }
54
55     public String JavaDoc getSearchValue(String JavaDoc name) {
56         String JavaDoc result = null;
57
58         if( name != null )
59             if( !name.equals("") )
60                 result = ((String JavaDoc)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 JavaDoc fieldname,Object JavaDoc 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 JavaDoc getHtmlValue(String JavaDoc name) {
103         return (String JavaDoc)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 JavaDoc number,String JavaDoc userName) {
115         node = mmObjectBuilder.getNode(number);
116         editNode = number;
117     }
118
119
120     public void getNewNode(String JavaDoc owner) {
121         node = mmObjectBuilder.getNewNode(owner);
122         editNode="-1";
123         delRelationTable();
124         //editNode = "-1"; // signal its a new node
125
}
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 JavaDoc e) {
167         }
168         return -1;
169     }
170
171     public void setBuilder(String JavaDoc 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 JavaDoc getBuilderName() {
189         return editor;
190     }
191
192     public String JavaDoc getDutchBuilderName() {
193         return dutchEditor;
194     }
195
196     public MMObjectBuilder getBuilder() {
197         return mmObjectBuilder;
198     }
199
200     public void setSelectionQuery(String JavaDoc query) {
201         selectionQuery = query;
202     }
203
204     public String JavaDoc 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     /**
234      * Returns Hashtable with the currently linked items sorted by relation
235      * type.
236      */

237     public Hashtable getRelationTable() {
238         Enumeration enumeration = mmBase.getTypeRel().getAllowedRelations(node);
239         MMObjectNode typeRel;
240         String JavaDoc typeName;
241
242         // build Hashtable with Vectors for all allowed relations
243
// Key = TypeName for objects that may be linked
244

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         // Hashtable is done now fill it up !!
262
// enumeration contains all objectnodes that are linked to the
263
// currently edited Node.
264

265         if (getEditNodeNumber()!=-1) {
266
267             // is this the correct way to get Relations ???? my vote is no !
268
// enumeration = mmBase.getInsRel().getRelations(getEditNodeNumber());
269

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 JavaDoc 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