1 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 ; 13 14 36 public class FieldsSelector extends Object 37 { 38 41 protected Hashtable fields; 42 43 46 protected Hashtable localizedFields; 47 48 51 protected Locale[] availLocales = null; 52 53 56 public FieldsSelector(String [] 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 ) po.getObjectOne(), 67 (String ) po.getObjectTwo()); 68 } 69 } 70 71 74 public void loadFields(GlobalResources gres, String tableId, int rowId) 75 throws SQLException 76 { 77 fields=gres.loadFields(tableId,rowId); 78 localizedFields=gres.loadLocalizedFields(tableId,rowId); 79 } 80 81 84 public void saveFields(GlobalResources gres, String tableId, int rowId) 85 throws SQLException 86 { 87 String key=null; 88 GResField grf=null; 89 for(Enumeration e=fields.keys();e.hasMoreElements();) 90 { 91 key=(String )e.nextElement(); 92 grf=(GResField)fields.get(key); 93 gres.saveField(tableId,rowId,grf); 94 } GResLocalizedField grlf=null; 96 for(Enumeration e=localizedFields.keys();e.hasMoreElements();) 98 { 99 key=(String )e.nextElement(); 100 grlf=(GResLocalizedField)localizedFields.get(key); 101 gres.saveLocalizedField(tableId,rowId,grlf); 102 } } 104 105 106 109 public void setField(String fieldName,Object value,int type) 110 { 111 setField(fieldName,value,null,type); 112 } 113 114 117 public void setField(String fieldName,Object value1,Object value2,int type) 118 { 119 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 158 } 159 if(grf.getFieldType()==Constants.FIELDTYPE_NUMBER) 160 { 161 grf.setNumberValue((Double )value1); 162 } 163 else if(grf.getFieldType()==Constants.FIELDTYPE_TEXT) 164 { 165 grf.setTextValue((String )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 )value1); 174 grf.setTextValue((String )value2); 175 } 176 177 fields.put(fieldName,grf); 178 } 179 catch(ClassCastException e) 180 { 181 LoggingManager.log("Class cast error:"+e,this); 182 } 183 } 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 (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 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 currency=st.nextToken(); 220 String price=st.nextToken(); 221 grf.setNumberValue(new Double (price)); 222 grf.setTextValue(currency); 223 } 224 } 225 226 fields.put(fd.getName(),grf); 227 }catch(Exception e) 228 { 229 LoggingManager.log("Error while initializing field:"+e,this); 230 } 231 } 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 localizedFields.put(fd.getName(),grlf); 245 } 246 247 250 public void setLocalizedField(String fieldName,String 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 fieldname) 263 { 264 return (GResField)fields.get(fieldname); 265 } 266 267 public GResLocalizedField getLocalizedField(String fieldname) 268 { 269 return (GResLocalizedField)localizedFields.get(fieldname); 270 } 271 272 275 public Locale[] getLocales() { return availLocales; } 276 public void setLocales(Locale[] l) { this.availLocales = l; } 277 278 281 public Vector getLinkedFields(Locale userLocale) 282 { 283 Vector ret=new Vector(); 284 String key=null; 285 GResField grf=null; 286 for(Enumeration e=fields.keys();e.hasMoreElements();) 287 { 288 key=(String )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 } GResLocalizedField grlf=null; 296 297 for(Enumeration e=localizedFields.keys();e.hasMoreElements();) 298 { 299 key=(String )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 } return ret; 307 } 308 309 } 310 | Popular Tags |