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

History | View | Annotate | Download (3.81 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
import org.apache.commons.lang3.StringUtils;
8

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

    
15
public class DefaultTags implements Tags {
16

    
17
    private Map tags = null;
18

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

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

    
36
    @Override
37
    public Object get(String name, int type, Object defaultValue) {
38
        if (this.tags == null || StringUtils.isBlank(name) ) {
39
            return defaultValue;
40
        }
41
        DataTypesManager dataman = ToolsLocator.getDataTypesManager();
42
        Object value = this.tags.get(name.toLowerCase());
43
        if( value == null ) {
44
            return defaultValue;
45
        }
46
        try {
47
            return dataman.coerce(type, value);
48
        } catch (CoercionException ex) {
49
            return defaultValue;
50
        }
51
    }
52

    
53
    @Override
54
    public void set(String name, Object value) {
55
        if (this.tags == null) {
56
            this.tags = new HashMap();
57
        }
58
        this.tags.put(name.toLowerCase(), value);
59
    }
60

    
61
    @Override
62
    public boolean has(String name) {
63
        if (this.tags == null || StringUtils.isBlank(name) ) {
64
            return false;
65
        }
66
        return this.tags.containsKey(name.toLowerCase());
67
    }
68

    
69
    @Override
70
    public int getInt(String name) throws CoercionException {
71
        Object x = this.get(name.toLowerCase(), DataTypes.INT);
72
        if (x == null) {
73
            return 0;
74
        }
75
        return (int) x;
76
    }
77

    
78
    @Override
79
    public int getInt(String name, int defaultValue) {
80
        return (int) this.get(name, DataTypes.INT, defaultValue);
81
    }
82
    
83
    @Override
84
    public boolean getBoolean(String name) throws CoercionException {
85
        Object x = this.get(name.toLowerCase(), DataTypes.BOOLEAN);
86
        if (x == null) {
87
            return false;
88
        }
89
        return (boolean) x;
90
    }
91

    
92
    @Override
93
    public boolean getBoolean(String name, boolean defaultValue) {
94
        return (boolean) this.get(name, DataTypes.BOOLEAN, defaultValue);
95
    }
96

    
97
    @Override
98
    public String getString(String name) throws CoercionException {
99
        Object x = this.get(name.toLowerCase(), DataTypes.STRING);
100
        return (String) x;
101
    }
102

    
103
    @Override
104
    public String getString(String name, String defaultValue) {
105
        return (String) this.get(name, DataTypes.STRING, defaultValue);
106
    }
107

    
108
    @Override
109
    public Iterator iterator() {
110
        if( this.tags==null ) {
111
          return Collections.EMPTY_LIST.iterator();
112
        }
113
        return this.tags.keySet().iterator();
114
    }
115

    
116
    @Override
117
    public Tags clone() throws CloneNotSupportedException {
118
        DefaultTags newTags = (DefaultTags) super.clone();
119
        newTags.add(this);
120
        return newTags;
121
    }
122
    
123
    @Override
124
    public boolean isEmpty() {
125
        if( this.tags == null ) {
126
            return true;
127
        }
128
        return this.tags.isEmpty();
129
    }
130

    
131
    @Override
132
    public void add(Tags tags) {
133
        if( tags.isEmpty() ) {
134
            return;
135
        }
136
        for (String key : tags) {
137
            this.set(key, tags.get(key));
138
        }
139
    }
140

    
141
    @Override
142
    public void removeAll() {
143
        tags = null;
144
    }
145
}