KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > raptus > owxv3 > api > FieldsSelector


1 /*
2  * eAdmin/OWX
3  * Copyright (C) 1996-2003 OWX-Project Team <owx-team@gmx.net>
4  */

5
6 package com.raptus.owxv3.api;
7
8
9 import java.util.*;
10 import java.text.*;
11 import com.raptus.owxv3.*;
12 import java.sql.SQLException JavaDoc;
13
14 /**
15  *
16  * <hr>
17  * <table width="100%" border="0">
18  * <tr>
19  * <td width="24%"><b>Filename</b></td><td width="76%">GResLocaleField.java</td>
20  * </tr>
21  * <tr>
22  * <td width="24%"><b>Author</b></td><td width="76%">REEA</td>
23  * </tr>
24  * <tr>
25  * <td width="24%"><b>Date</b></td><td width="76%">22th of April 2002</td>
26  * </tr>
27  * </table>
28  * <hr>
29  * <table width="100%" border="0">
30  * <tr>
31  * <td width="24%"><b>Date / Author</b></td><td width="76%"><b>Changes</b></td>
32  * </tr>
33  * </table>
34  * <hr>
35  */

36 public class FieldsSelector extends Object JavaDoc
37 {
38     /**
39      *Contains GresField objects assigned with values of fields of an entry
40      */

41     protected Hashtable fields;
42     
43     /**
44      *Contains GresLocalizedField objects assigned with values of fields of an entry
45      */

46     protected Hashtable localizedFields;
47     
48     /**
49      *
50      */

51     protected Locale[] availLocales = null;
52     
53     /**
54      *Creates a new instance of FieldsSelector
55      */

56     public FieldsSelector(String JavaDoc[] locales)
57     {
58         fields=new Hashtable();
59         localizedFields=new Hashtable();
60         
61         availLocales = new Locale[locales.length];
62         for(int i = 0; i < locales.length; i ++)
63         {
64             PairOfObjects po = LocaleManager.stripLocaleString(locales[i]);
65             if(po != null && po.isValid())
66                 availLocales[i] = new Locale((String JavaDoc) po.getObjectOne(),
67                                              (String JavaDoc) po.getObjectTwo());
68         }
69     }
70     
71     /**
72      *Method for loading the current field values assigned to an entry
73      */

74     public void loadFields(GlobalResources gres, String JavaDoc tableId, int rowId)
75                 throws SQLException JavaDoc
76     {
77         fields=gres.loadFields(tableId,rowId);
78         localizedFields=gres.loadLocalizedFields(tableId,rowId);
79     }
80     
81     /**
82      *Method for loading the current field values assigned to an entry
83      */

84     public void saveFields(GlobalResources gres, String JavaDoc tableId, int rowId)
85                 throws SQLException JavaDoc
86     {
87         String JavaDoc key=null;
88         GResField grf=null;
89         for(Enumeration e=fields.keys();e.hasMoreElements();)
90         {
91             key=(String JavaDoc)e.nextElement();
92             grf=(GResField)fields.get(key);
93             gres.saveField(tableId,rowId,grf);
94         }//end for
95
GResLocalizedField grlf=null;
96         //LoggingManager.log("Localized size="+localizedFields.size());
97
for(Enumeration e=localizedFields.keys();e.hasMoreElements();)
98         {
99             key=(String JavaDoc)e.nextElement();
100             grlf=(GResLocalizedField)localizedFields.get(key);
101             gres.saveLocalizedField(tableId,rowId,grlf);
102         }//end for
103
}
104     
105     
106     /**
107      *Method fot setting a field value
108      */

109     public void setField(String JavaDoc fieldName,Object JavaDoc value,int type)
110     {
111         setField(fieldName,value,null,type);
112     }
113     
114     /**
115      *Method for seeting a field value with two objects (like price)
116      */

117     public void setField(String JavaDoc fieldName,Object JavaDoc value1,Object JavaDoc value2,int type)
118     {
119         //LoggingManager.log("Setting field "+fieldName+ " value1="+value1 +" type="+value1.getClass().getName()+" value2="+value2);
120
try
121         {
122             GResField grf=(GResField)fields.get(fieldName);
123             if(grf==null)
124             {
125                 grf=new GResField();
126                 grf.setName(fieldName);
127                 grf.setFieldType(type);
128                 /*if(value1!=null && value2!=null)
129                 {
130                     if(value1 instanceof Double && value2 instanceof String)
131                     {
132                          grf.setNumberValue((Double)value1);
133                          grf.setTextValue((String)value2);
134                          grf.setFieldType(Constants.FIELDTYPE_PRICE);
135                     }
136                 }//end if
137                 else
138                 {
139                     if(value1 instanceof Double)
140                     {
141                         //LoggingManager.log("Setting val to double:"+value1);
142                         grf.setNumberValue((Double)value1);
143                         grf.setFieldType(Constants.FIELDTYPE_NUMBER);
144                     }
145                     else if(value1 instanceof String)
146                     {
147                         grf.setTextValue((String)value1);
148                         grf.setFieldType(Constants.FIELDTYPE_TEXT);
149                     }
150                     else if(value1 instanceof Date)
151                     {
152                         grf.setDateValue((Date)value1);
153                         grf.setFieldType(Constants.FIELDTYPE_DATE);
154                     }
155                 }//end else
156                
157             */

158             }
159             if(grf.getFieldType()==Constants.FIELDTYPE_NUMBER)
160             {
161                 grf.setNumberValue((Double JavaDoc)value1);
162             }
163             else if(grf.getFieldType()==Constants.FIELDTYPE_TEXT)
164             {
165                 grf.setTextValue((String JavaDoc)value1);
166             }
167             else if(grf.getFieldType()==Constants.FIELDTYPE_DATE)
168             {
169                 grf.setDateValue((Date)value1);
170             }
171             else if(grf.getFieldType()==Constants.FIELDTYPE_PRICE)
172             {
173                 grf.setNumberValue((Double JavaDoc)value1);
174                 grf.setTextValue((String JavaDoc)value2);
175             }
176             
177             fields.put(fieldName,grf);
178         }
179         catch(ClassCastException JavaDoc e)
180         {
181             LoggingManager.log("Class cast error:"+e,this);
182         }
183     }//end setField
184

185     
186     public void initField(FieldDefinition fd)
187     {
188         if( fields.containsKey(fd.getName()) ) return;
189         GResField grf=new GResField();
190         grf.setName(fd.getName());
191         grf.setFieldType(fd.getType());
192         try
193         {
194             if(fd.getType()==Constants.FIELDTYPE_NUMBER)
195             {
196                 if(!fd.getDefaultVal(null).equals("")) grf.setNumberValue( new Double JavaDoc(fd.getDefaultVal(null)) );
197                 
198             }
199             else if(fd.getType()==Constants.FIELDTYPE_TEXT)
200             {
201                 grf.setTextValue(fd.getDefaultVal(null));
202             }
203             else if(fd.getType()==Constants.FIELDTYPE_DATE)
204             {
205                 String JavaDoc s=fd.getDefaultVal(null);
206                 if(! s.equals(""))
207                 {
208                     SimpleDateFormat df=(SimpleDateFormat)DateFormat.getDateInstance();
209                     df.applyPattern(Constants.DEFAULT_DATEPATTERN);
210                     grf.setDateValue(df.parse(s));
211                 }
212                 
213             }
214             else if(fd.getType()==Constants.FIELDTYPE_PRICE)
215             {
216                 StringTokenizer st=new StringTokenizer(fd.getDefaultVal(null));
217                 if(st.countTokens()==2)
218                 {
219                     String JavaDoc currency=st.nextToken();
220                     String JavaDoc price=st.nextToken();
221                     grf.setNumberValue(new Double JavaDoc(price));
222                     grf.setTextValue(currency);
223                 }
224             }
225             
226             fields.put(fd.getName(),grf);
227         }catch(Exception JavaDoc e)
228         {
229             LoggingManager.log("Error while initializing field:"+e,this);
230         }
231     }//end initField
232

233     
234     public void initLocalizedField(FieldDefinition fd)
235     {
236         if( localizedFields.containsKey(fd.getName()) ) return;
237         GResLocalizedField grlf=new GResLocalizedField();
238         grlf.setName(fd.getName());
239         for(int i=0;i<availLocales.length;i++)
240         {
241             grlf.setValue(fd.getDefaultVal(availLocales[i].toString()),availLocales[i]);
242         }
243         //LoggingManager.log("Adding to FS:"+fd.getName());
244
localizedFields.put(fd.getName(),grlf);
245     }
246     
247     /**
248      *Method for setting the value of a localized field
249      */

250     public void setLocalizedField(String JavaDoc fieldName,String JavaDoc fieldValue,Locale l)
251     {
252         GResLocalizedField grlf=(GResLocalizedField)localizedFields.get(fieldName);
253         if(grlf==null)
254         {
255             grlf=new GResLocalizedField();
256             grlf.setName(fieldName);
257         }
258         grlf.setValue(fieldValue,l);
259         localizedFields.put(fieldName,grlf);
260     }
261     
262     public GResField getField(String JavaDoc fieldname)
263     {
264         return (GResField)fields.get(fieldname);
265     }
266     
267     public GResLocalizedField getLocalizedField(String JavaDoc fieldname)
268     {
269         return (GResLocalizedField)localizedFields.get(fieldname);
270     }
271     
272       /**
273      *
274      */

275     public Locale[] getLocales() { return availLocales; }
276     public void setLocales(Locale[] l) { this.availLocales = l; }
277     
278     /**
279      *Method called by preview, preparing PairOfObjects(String name, String value);
280      */

281     public Vector getLinkedFields(Locale userLocale)
282     {
283         Vector ret=new Vector();
284         String JavaDoc key=null;
285         GResField grf=null;
286         for(Enumeration e=fields.keys();e.hasMoreElements();)
287         {
288             key=(String JavaDoc)e.nextElement();
289             grf=(GResField)fields.get(key);
290             PairOfObjects po=new PairOfObjects();
291             po.setObjectOne(grf.getName());
292             po.setObjectTwo(grf.getValue());
293             ret.addElement(po);
294         }//end for
295
GResLocalizedField grlf=null;
296         
297         for(Enumeration e=localizedFields.keys();e.hasMoreElements();)
298         {
299             key=(String JavaDoc)e.nextElement();
300             grlf=(GResLocalizedField)localizedFields.get(key);
301             PairOfObjects po=new PairOfObjects();
302             po.setObjectOne(grlf.getName());
303             po.setObjectTwo(grlf.getValue(userLocale));
304             ret.addElement(po);
305         }//end for
306
return ret;
307     }
308     
309 }
310
Popular Tags