Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libIverUtiles / src / com / iver / utiles / XMLEntity.java @ 149

History | View | Annotate | Download (11.3 KB)

1
package com.iver.utiles;
2

    
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.Iterator;
6

    
7

    
8
/**
9
 * Clase utilizada para la persistencia.
10
 */
11
public class XMLEntity {
12
    private HashMap properties = new HashMap();
13
    private ArrayList hijos;
14

    
15
    /**
16
     * DOCUMENT ME!
17
     *
18
     * @return DOCUMENT ME!
19
     */
20
    public Iterator getKeyIterator() {
21
        return properties.keySet().iterator();
22
    }
23

    
24
    /**
25
     * DOCUMENT ME!
26
     *
27
     * @param key DOCUMENT ME!
28
     * @param value DOCUMENT ME!
29
     */
30
    public void putProperty(String key, String value) {
31
        properties.put(key, value);
32
    }
33

    
34
    /**
35
     * DOCUMENT ME!
36
     *
37
     * @param key DOCUMENT ME!
38
     * @param value DOCUMENT ME!
39
     */
40
    public void putProperty(String key, Object value) {
41
        properties.put(key, value);
42
    }
43

    
44
    /**
45
     * DOCUMENT ME!
46
     *
47
     * @param key DOCUMENT ME!
48
     * @param value DOCUMENT ME!
49
     */
50
    public void putProperty(String key, int value) {
51
        properties.put(key, "" + value);
52
    }
53

    
54
    /**
55
     * DOCUMENT ME!
56
     *
57
     * @param key DOCUMENT ME!
58
     * @param value DOCUMENT ME!
59
     */
60
    public void putProperty(String key, long value) {
61
        properties.put(key, "" + value);
62
    }
63

    
64
    /**
65
     * DOCUMENT ME!
66
     *
67
     * @param key DOCUMENT ME!
68
     * @param value DOCUMENT ME!
69
     */
70
    public void putProperty(String key, boolean value) {
71
        properties.put(key, "" + value);
72
    }
73

    
74
    /**
75
     * DOCUMENT ME!
76
     *
77
     * @param key DOCUMENT ME!
78
     * @param value DOCUMENT ME!
79
     */
80
    public void putProperty(String key, float value) {
81
        properties.put(key, "" + value);
82
    }
83

    
84
    /**
85
     * DOCUMENT ME!
86
     *
87
     * @param key DOCUMENT ME!
88
     * @param value DOCUMENT ME!
89
     */
90
    public void putProperty(String key, double value) {
91
        properties.put(key, "" + value);
92
    }
93

    
94
    /**
95
     * DOCUMENT ME!
96
     *
97
     * @param key DOCUMENT ME!
98
     *
99
     * @return DOCUMENT ME!
100
     */
101
    public String getStringProperty(String key) {
102
        return (String) properties.get(key);
103
    }
104

    
105
    /**
106
     * DOCUMENT ME!
107
     *
108
     * @param key DOCUMENT ME!
109
     *
110
     * @return DOCUMENT ME!
111
     */
112
    public double getDoubleProperty(String key) {
113
        return Double.parseDouble((String) properties.get(key));
114
    }
115

    
116
    /**
117
     * DOCUMENT ME!
118
     *
119
     * @param key DOCUMENT ME!
120
     *
121
     * @return DOCUMENT ME!
122
     */
123
    public double[] getDoubleArrayProperty(String key) {
124
        String value = (String) properties.get(key);
125
        String[] aux = (String[]) value.split(" ,");
126
        double[] ret = new double[aux.length];
127

    
128
        for (int i = 0; i < aux.length; i++) {
129
            ret[i] = Double.parseDouble(aux[i].replaceAll("\\\\,", ","));
130
        }
131

    
132
        return ret;
133
    }
134

    
135
    /**
136
     * DOCUMENT ME!
137
     *
138
     * @param key DOCUMENT ME!
139
     *
140
     * @return DOCUMENT ME!
141
     */
142
    public Object getObjectProperty(String key) {
143
        return properties.get(key);
144
    }
145

    
146
    /**
147
     * DOCUMENT ME!
148
     *
149
     * @param key DOCUMENT ME!
150
     *
151
     * @return DOCUMENT ME!
152
     */
153
    public float[] getFloatArrayProperty(String key) {
154
        String value = (String) properties.get(key);
155
        String[] aux = (String[]) value.split(" ,");
156
        float[] ret = new float[aux.length];
157

    
158
        for (int i = 0; i < aux.length; i++) {
159
            ret[i] = Float.parseFloat(aux[i].replaceAll("\\\\,", ","));
160
        }
161

    
162
        return ret;
163
    }
164

    
165
    /**
166
     * DOCUMENT ME!
167
     *
168
     * @param key DOCUMENT ME!
169
     *
170
     * @return DOCUMENT ME!
171
     */
172
    public long[] getLongArrayProperty(String key) {
173
        String value = (String) properties.get(key);
174
        String[] aux = (String[]) value.split(" ,");
175
        long[] ret = new long[aux.length];
176

    
177
        for (int i = 0; i < aux.length; i++) {
178
            ret[i] = Long.parseLong(aux[i].replaceAll("\\\\,", ","));
179
        }
180

    
181
        return ret;
182
    }
183

    
184
    /**
185
     * DOCUMENT ME!
186
     *
187
     * @param key DOCUMENT ME!
188
     *
189
     * @return DOCUMENT ME!
190
     */
191
    public int[] getIntArrayProperty(String key) {
192
        String value = (String) properties.get(key);
193
        String[] aux = (String[]) value.split(" ,");
194
        int[] ret = new int[aux.length];
195

    
196
        for (int i = 0; i < aux.length; i++) {
197
            ret[i] = Integer.parseInt(aux[i].replaceAll("\\\\,", ","));
198
        }
199

    
200
        return ret;
201
    }
202

    
203
    /**
204
     * DOCUMENT ME!
205
     *
206
     * @param key DOCUMENT ME!
207
     *
208
     * @return DOCUMENT ME!
209
     */
210
    public boolean[] getBooleanArrayProperty(String key) {
211
        String value = (String) properties.get(key);
212
        String[] aux = (String[]) value.split(" ,");
213
        boolean[] ret = new boolean[aux.length];
214

    
215
        for (int i = 0; i < aux.length; i++) {
216
            ret[i] = Boolean.valueOf(aux[i].replaceAll("\\\\,", ",")).booleanValue();
217
        }
218

    
219
        return ret;
220
    }
221

    
222
    /**
223
     * DOCUMENT ME!
224
     *
225
     * @param key DOCUMENT ME!
226
     *
227
     * @return DOCUMENT ME!
228
     */
229
    public String[] getStringArrayProperty(String key) {
230
        String value = (String) properties.get(key);
231
        String[] aux = (String[]) value.split(" ,");
232
        for (int i = 0; i < aux.length; i++){
233
                aux[i] = aux[i].replaceAll("\\\\,", ",");
234
        }
235

    
236
        return aux;
237
    }
238

    
239
    /**
240
     * DOCUMENT ME!
241
     *
242
     * @param key DOCUMENT ME!
243
     *
244
     * @return DOCUMENT ME!
245
     */
246
    public boolean getBooleanProperty(String key) {
247
        return Boolean.valueOf((String) properties.get(key)).booleanValue();
248
    }
249

    
250
    /**
251
     * DOCUMENT ME!
252
     *
253
     * @param key DOCUMENT ME!
254
     *
255
     * @return DOCUMENT ME!
256
     */
257
    public int getIntProperty(String key) {
258
        return Integer.parseInt((String) properties.get(key));
259
    }
260

    
261
    /**
262
     * DOCUMENT ME!
263
     *
264
     * @param key DOCUMENT ME!
265
     *
266
     * @return DOCUMENT ME!
267
     */
268
    public long getLongProperty(String key) {
269
        return Long.parseLong((String) properties.get(key));
270
    }
271

    
272
    /**
273
     * DOCUMENT ME!
274
     *
275
     * @param key DOCUMENT ME!
276
     *
277
     * @return DOCUMENT ME!
278
     */
279
    public float getFloatProperty(String key) {
280
        return Float.parseFloat((String) properties.get(key));
281
    }
282

    
283
    /**
284
     * Metodo invocado para meter las propiedades en el XML
285
     *
286
     * @param key DOCUMENT ME!
287
     *
288
     * @return DOCUMENT ME!
289
     */
290
    public String getProperty(String key) {
291
        String ret = "";
292

    
293
        Object value = properties.get(key);
294

    
295
        if (value == null) {
296
            return null;
297
        }
298

    
299
        Class valueClass = value.getClass();
300

    
301
        if (valueClass.isArray()) {
302
            Class compType = valueClass.getComponentType();
303

    
304
            if (compType == byte.class) {
305
                byte[] array = (byte[]) value;
306
                if (array.length == 0) return "";
307
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
308

    
309
                for (int i = 1; i < array.length; i++) {
310
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
311
                }
312
            } else if (compType == short.class) {
313
                short[] array = (short[]) value;
314
                                if (array.length == 0) return "";
315
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
316

    
317
                for (int i = 1; i < array.length; i++) {
318
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
319
                }
320
            } else if (compType == int.class) {
321
                int[] array = (int[]) value;
322
                                if (array.length == 0) return "";
323
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
324

    
325
                for (int i = 1; i < array.length; i++) {
326
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
327
                }
328
            } else if (compType == long.class) {
329
                long[] array = (long[]) value;
330
                                if (array.length == 0) return "";
331
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
332

    
333
                for (int i = 1; i < array.length; i++) {
334
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
335
                }
336
            } else if (compType == float.class) {
337
                float[] array = (float[]) value;
338
                                if (array.length == 0) return "";
339
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
340

    
341
                for (int i = 1; i < array.length; i++) {
342
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
343
                }
344
            } else if (compType == double.class) {
345
                double[] array = (double[]) value;
346
                                if (array.length == 0) return "";
347
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
348

    
349
                for (int i = 1; i < array.length; i++) {
350
                                        ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
351
                }
352
            } else if (compType == boolean.class) {
353
                boolean[] array = (boolean[]) value;
354
                                if (array.length == 0) return "";
355
                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
356

    
357
                for (int i = 1; i < array.length; i++) {
358
                    ret += (" ," + (""+array[i]).replaceAll("[,]", "\\\\,"));
359
                }
360
                        } else if (compType == String.class) {
361
                                String[] array = (String[]) value;
362
                                if (array.length == 0) return "";
363
                                ret += array[0].replaceAll("[,]", "\\\\,");
364

    
365
                                for (int i = 1; i < array.length; i++) {
366
                                        array[i] = array[i].replaceAll("[,]", "\\\\,");
367
                                        ret += (" ," + array[i]);
368
                                }
369
            } else {
370
                Object[] array = (Object[]) value;
371
                                if (array.length == 0) return "";
372
                                ret += (""+array[0]).replaceAll("[,]", "\\\\,");
373

    
374
                for (int i = 1; i < array.length; i++) {
375
                                        array[i] = (""+array[i]).replaceAll("[,]", "\\\\,");
376
                    ret += (" ," + array[i]);
377
                }
378
            }
379
        } else {
380
            ret = value.toString();
381
        }
382

    
383
        return ret;
384
    }
385

    
386
    /**
387
     * DOCUMENT ME!
388
     *
389
     * @param name DOCUMENT ME!
390
     */
391
    public void setName(String name) {
392
        properties.put("name", name);
393
    }
394

    
395
    /**
396
     * DOCUMENT ME!
397
     *
398
     * @return DOCUMENT ME!
399
     */
400
    public String getName() {
401
        return (String) properties.get("name");
402
    }
403

    
404
    /**
405
     * DOCUMENT ME!
406
     *
407
     * @return DOCUMENT ME!
408
     */
409
    public Class getImplementingClass() {
410
        return (Class) properties.get("class");
411
    }
412

    
413
    /**
414
     * DOCUMENT ME!
415
     *
416
     * @param c DOCUMENT ME!
417
     */
418
    public void setImplementingClass(Class c) {
419
        properties.put("class", c);
420
    }
421

    
422
    /**
423
     * DOCUMENT ME!
424
     *
425
     * @param entity DOCUMENT ME!
426
     */
427
    public void addChild(XMLEntity entity) {
428
        hijos().add(entity);
429
    }
430

    
431
    /**
432
     * DOCUMENT ME!
433
     *
434
     * @param i DOCUMENT ME!
435
     *
436
     * @return DOCUMENT ME!
437
     */
438
    public XMLEntity getChild(int i) {
439
        return (XMLEntity) hijos().get(i);
440
    }
441

    
442
    /**
443
     * DOCUMENT ME!
444
     *
445
     * @return DOCUMENT ME!
446
     */
447
    public int getNumChild() {
448
        return hijos.size();
449
    }
450

    
451
    /**
452
     * a?ade a este XMLEntity las propiedades del XMLEntity que se pasa como
453
     * par?metro
454
     *
455
     * @param entity DOCUMENT ME!
456
     */
457
    public void addProperties(XMLEntity entity) {
458
        Iterator keys = entity.properties.keySet().iterator();
459

    
460
        while (keys.hasNext()) {
461
            Object key = keys.next();
462
            Object value = entity.properties.get(key);
463
            properties.put(key, value);
464
        }
465
    }
466

    
467
    /**
468
     * DOCUMENT ME!
469
     *
470
     * @return DOCUMENT ME!
471
     */
472
    public ArrayList hijos() {
473
        if (hijos == null) {
474
            hijos = new ArrayList();
475
        }
476

    
477
        return hijos;
478
    }
479
}