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 @ 1881

History | View | Annotate | Download (3.09 KB)

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

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

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

    
14
public class DefaultTags implements Tags {
15

    
16
    private Map tags = null;
17

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

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

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

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

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

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

    
84
    @Override
85
    public boolean getBoolean(String name, boolean defaultValue) {
86
        try {
87
            return this.getBoolean(name);
88
        } catch (CoercionException ex) {
89
            return defaultValue;
90
        }
91
    }
92
    
93
    @Override
94
    public Iterator iterator() {
95
        if( this.tags==null ) {
96
          return Collections.EMPTY_LIST.iterator();
97
        }
98
        return this.tags.keySet().iterator();
99
    }
100

    
101
    @Override
102
    public Tags clone() throws CloneNotSupportedException {
103
        DefaultTags newTags = (DefaultTags) super.clone();
104
        newTags.add(this);
105
        return newTags;
106
    }
107
    
108
    @Override
109
    public boolean isEmpty() {
110
        if( this.tags == null ) {
111
            return true;
112
        }
113
        return this.tags.isEmpty();
114
    }
115

    
116
    @Override
117
    public void add(Tags tags) {
118
        if( tags.isEmpty() ) {
119
            return;
120
        }
121
        for (String key : tags) {
122
            this.set(key, tags.get(key));
123
        }
124
    }
125

    
126
    @Override
127
    public void removeAll() {
128
        tags = null;
129
    }
130
}