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 |
} |