Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / dynobject / impl / DefaultTags.java @ 1405

History | View | Annotate | Download (2.97 KB)

1
package org.gvsig.tools.dynobject.impl;
2

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

    
7
import org.gvsig.tools.ToolsLocator;
8
import org.gvsig.tools.dataTypes.CoercionException;
9
import org.gvsig.tools.dataTypes.DataTypes;
10
import org.gvsig.tools.dataTypes.DataTypesManager;
11
import org.gvsig.tools.dynobject.Tags;
12

    
13
public class DefaultTags implements Tags {
14

    
15
    private Map tags = null;
16

    
17
    @Override
18
    public Object get(String name) {
19
        if (this.tags == null) {
20
            return null;
21
        }
22
        return this.tags.get(name.toLowerCase());
23
    }
24

    
25
    @Override
26
    public Object get(String name, int type) throws CoercionException {
27
        if (this.tags == null) {
28
            return null;
29
        }
30
        DataTypesManager dataman = ToolsLocator.getDataTypesManager();
31
        return dataman.coerce(type, this.tags.get(name.toLowerCase()));
32
    }
33

    
34
    @Override
35
    public void set(String name, Object value) {
36
        if (this.tags == null) {
37
            this.tags = new HashMap();
38
        }
39
        this.tags.put(name.toLowerCase(), value);
40
    }
41

    
42
    @Override
43
    public boolean has(String name) {
44
        if (this.tags == null || name == null) {
45
            return false;
46
        }
47
        return this.tags.containsKey(name.toLowerCase());
48
    }
49

    
50
    /**
51
     *
52
     * @param name
53
     * @return
54
     * @throws CoercionException
55
     */
56
    @Override
57
    public int getInt(String name) throws CoercionException {
58
        Object x = this.get(name.toLowerCase(), DataTypes.INT);
59
        if (x == null) {
60
            return 0;
61
        }
62
        return (Integer) x;
63
    }
64

    
65
    @Override
66
    public int getInt(String name, int defaultValue) {
67
        try {
68
            return this.getInt(name);
69
        } catch (CoercionException ex) {
70
            return defaultValue;
71
        }
72
    }
73
    
74
    @Override
75
    public boolean getBoolean(String name) throws CoercionException {
76
        Object x = this.get(name.toLowerCase(), DataTypes.BOOLEAN);
77
        if (x == null) {
78
            return false;
79
        }
80
        return (Boolean) x;
81
    }
82

    
83
    @Override
84
    public boolean getBoolean(String name, boolean defaultValue) {
85
        try {
86
            return this.getBoolean(name);
87
        } catch (CoercionException ex) {
88
            return defaultValue;
89
        }
90
    }
91
    
92
    @Override
93
    public Iterator iterator() {
94
        return this.tags.keySet().iterator();
95
    }
96

    
97
    @Override
98
    public Object clone() throws CloneNotSupportedException {
99
        DefaultTags newTags = (DefaultTags) super.clone();
100
        newTags.add(this);
101
        return newTags;
102
    }
103
    
104
    @Override
105
    public boolean isEmpty() {
106
        if( this.tags == null ) {
107
            return true;
108
        }
109
        return this.tags.isEmpty();
110
    }
111

    
112
    @Override
113
    public void add(Tags tags) {
114
        if( tags.isEmpty() ) {
115
            return;
116
        }
117
        for (String key : tags) {
118
            this.set(key, tags.get(key));
119
        }
120
    }
121

    
122
    @Override
123
    public void removeAll() {
124
        tags = null;
125
    }
126
}