Statistics
| Revision:

root / trunk / libraries / libFMap / src / com / iver / cit / gvsig / fmap / XMLEntity.java @ 213

History | View | Annotate | Download (12.3 KB)

1
package com.iver.cit.gvsig.fmap;
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("\\\\,", ","))
217
                            .booleanValue();
218
        }
219

    
220
        return ret;
221
    }
222

    
223
    /**
224
     * DOCUMENT ME!
225
     *
226
     * @param key DOCUMENT ME!
227
     *
228
     * @return DOCUMENT ME!
229
     */
230
    public String[] getStringArrayProperty(String key) {
231
        String value = (String) properties.get(key);
232
        String[] aux = (String[]) value.split(" ,");
233

    
234
        for (int i = 0; i < aux.length; i++) {
235
            aux[i] = aux[i].replaceAll("\\\\,", ",");
236
        }
237

    
238
        return aux;
239
    }
240

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

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

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

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

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

    
295
        Object value = properties.get(key);
296

    
297
        if (value == null) {
298
            return null;
299
        }
300

    
301
        Class valueClass = value.getClass();
302

    
303
        if (valueClass.isArray()) {
304
            Class compType = valueClass.getComponentType();
305

    
306
            if (compType == byte.class) {
307
                byte[] array = (byte[]) value;
308

    
309
                if (array.length == 0) {
310
                    return "";
311
                }
312

    
313
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
314

    
315
                for (int i = 1; i < array.length; i++) {
316
                    ret += (" ," + ("" + array[i]).replaceAll("[,]", "\\\\,"));
317
                }
318
            } else if (compType == short.class) {
319
                short[] array = (short[]) value;
320

    
321
                if (array.length == 0) {
322
                    return "";
323
                }
324

    
325
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
326

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

    
333
                if (array.length == 0) {
334
                    return "";
335
                }
336

    
337
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
338

    
339
                for (int i = 1; i < array.length; i++) {
340
                    ret += (" ," + ("" + array[i]).replaceAll("[,]", "\\\\,"));
341
                }
342
            } else if (compType == long.class) {
343
                long[] array = (long[]) value;
344

    
345
                if (array.length == 0) {
346
                    return "";
347
                }
348

    
349
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
350

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

    
357
                if (array.length == 0) {
358
                    return "";
359
                }
360

    
361
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
362

    
363
                for (int i = 1; i < array.length; i++) {
364
                    ret += (" ," + ("" + array[i]).replaceAll("[,]", "\\\\,"));
365
                }
366
            } else if (compType == double.class) {
367
                double[] array = (double[]) value;
368

    
369
                if (array.length == 0) {
370
                    return "";
371
                }
372

    
373
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
374

    
375
                for (int i = 1; i < array.length; i++) {
376
                    ret += (" ," + ("" + array[i]).replaceAll("[,]", "\\\\,"));
377
                }
378
            } else if (compType == boolean.class) {
379
                boolean[] array = (boolean[]) value;
380

    
381
                if (array.length == 0) {
382
                    return "";
383
                }
384

    
385
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
386

    
387
                for (int i = 1; i < array.length; i++) {
388
                    ret += (" ," + ("" + array[i]).replaceAll("[,]", "\\\\,"));
389
                }
390
            } else if (compType == String.class) {
391
                String[] array = (String[]) value;
392

    
393
                if (array.length == 0) {
394
                    return "";
395
                }
396

    
397
                if (array[0] == null) {
398
                    array[0] = "null";
399
                }
400

    
401
                ret += array[0].replaceAll("[,]", "\\\\,");
402

    
403
                for (int i = 1; i < array.length; i++) {
404
                    if (array[i] == null) {
405
                        array[i] = "null";
406
                    }
407

    
408
                    array[i] = array[i].replaceAll("[,]", "\\\\,");
409
                    ret += (" ," + array[i]);
410
                }
411
            } else {
412
                Object[] array = (Object[]) value;
413

    
414
                if (array.length == 0) {
415
                    return "";
416
                }
417

    
418
                ret += ("" + array[0]).replaceAll("[,]", "\\\\,");
419

    
420
                for (int i = 1; i < array.length; i++) {
421
                    array[i] = ("" + array[i]).replaceAll("[,]", "\\\\,");
422
                    ret += (" ," + array[i]);
423
                }
424
            }
425
        } else {
426
            ret = value.toString();
427
        }
428

    
429
        return ret;
430
    }
431

    
432
    /**
433
     * DOCUMENT ME!
434
     *
435
     * @param name DOCUMENT ME!
436
     */
437
    public void setName(String name) {
438
        properties.put("name", name);
439
    }
440

    
441
    /**
442
     * DOCUMENT ME!
443
     *
444
     * @return DOCUMENT ME!
445
     */
446
    public String getName() {
447
        return (String) properties.get("name");
448
    }
449

    
450
    /**
451
     * DOCUMENT ME!
452
     *
453
     * @return DOCUMENT ME!
454
     */
455
    public Class getImplementingClass() {
456
        return (Class) properties.get("class");
457
    }
458

    
459
    /**
460
     * DOCUMENT ME!
461
     *
462
     * @param c DOCUMENT ME!
463
     */
464
    public void setImplementingClass(Class c) {
465
        properties.put("class", c);
466
    }
467

    
468
    /**
469
     * DOCUMENT ME!
470
     *
471
     * @param entity DOCUMENT ME!
472
     */
473
    public void addChild(XMLEntity entity) {
474
        hijos().add(entity);
475
    }
476

    
477
    /**
478
     * DOCUMENT ME!
479
     *
480
     * @param i DOCUMENT ME!
481
     *
482
     * @return DOCUMENT ME!
483
     */
484
    public XMLEntity getChild(int i) {
485
        return (XMLEntity) hijos().get(i);
486
    }
487

    
488
    /**
489
     * DOCUMENT ME!
490
     *
491
     * @return DOCUMENT ME!
492
     */
493
    public int getNumChild() {
494
        return hijos.size();
495
    }
496

    
497
    /**
498
     * a?ade a este XMLEntity las propiedades del XMLEntity que se pasa como
499
     * par?metro
500
     *
501
     * @param entity DOCUMENT ME!
502
     */
503
    public void addProperties(XMLEntity entity) {
504
        Iterator keys = entity.properties.keySet().iterator();
505

    
506
        while (keys.hasNext()) {
507
            Object key = keys.next();
508
            Object value = entity.properties.get(key);
509
            properties.put(key, value);
510
        }
511
    }
512

    
513
    /**
514
     * DOCUMENT ME!
515
     *
516
     * @return DOCUMENT ME!
517
     */
518
    public ArrayList hijos() {
519
        if (hijos == null) {
520
            hijos = new ArrayList();
521
        }
522

    
523
        return hijos;
524
    }
525
}