4857 |
27 Mar 09 |
nicklas |
1 |
/** |
4857 |
27 Mar 09 |
nicklas |
$Id$ |
4857 |
27 Mar 09 |
nicklas |
3 |
|
4857 |
27 Mar 09 |
nicklas |
Copyright (C) 2006 Nicklas Nordborg |
4857 |
27 Mar 09 |
nicklas |
5 |
|
4857 |
27 Mar 09 |
nicklas |
This file is part of BASE - BioArray Software Environment. |
4857 |
27 Mar 09 |
nicklas |
Available at http://base.thep.lu.se/ |
4857 |
27 Mar 09 |
nicklas |
8 |
|
4857 |
27 Mar 09 |
nicklas |
BASE is free software; you can redistribute it and/or |
4857 |
27 Mar 09 |
nicklas |
modify it under the terms of the GNU General Public License |
4857 |
27 Mar 09 |
nicklas |
as published by the Free Software Foundation; either version 3 |
4857 |
27 Mar 09 |
nicklas |
of the License, or (at your option) any later version. |
4857 |
27 Mar 09 |
nicklas |
13 |
|
4857 |
27 Mar 09 |
nicklas |
BASE is distributed in the hope that it will be useful, |
4857 |
27 Mar 09 |
nicklas |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
4857 |
27 Mar 09 |
nicklas |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4857 |
27 Mar 09 |
nicklas |
GNU General Public License for more details. |
4857 |
27 Mar 09 |
nicklas |
18 |
|
4857 |
27 Mar 09 |
nicklas |
You should have received a copy of the GNU General Public License |
4857 |
27 Mar 09 |
nicklas |
along with BASE. If not, see <http://www.gnu.org/licenses/>. |
4857 |
27 Mar 09 |
nicklas |
21 |
*/ |
4857 |
27 Mar 09 |
nicklas |
22 |
package net.sf.basedb.util.formatter; |
4857 |
27 Mar 09 |
nicklas |
23 |
|
4857 |
27 Mar 09 |
nicklas |
24 |
import java.util.HashMap; |
4857 |
27 Mar 09 |
nicklas |
25 |
import java.util.Map; |
4857 |
27 Mar 09 |
nicklas |
26 |
|
4857 |
27 Mar 09 |
nicklas |
27 |
import net.sf.basedb.util.Enumeration; |
4857 |
27 Mar 09 |
nicklas |
28 |
|
4857 |
27 Mar 09 |
nicklas |
29 |
/** |
4857 |
27 Mar 09 |
nicklas |
A formatter implementation that uses a map to lookup values from |
4857 |
27 Mar 09 |
nicklas |
a set of keys. A default value may be specified that is returned |
4857 |
27 Mar 09 |
nicklas |
in case no lookup has been defined for a given key. |
4857 |
27 Mar 09 |
nicklas |
33 |
|
4857 |
27 Mar 09 |
nicklas |
@author nicklas |
4857 |
27 Mar 09 |
nicklas |
@version 2.12 |
4857 |
27 Mar 09 |
nicklas |
@base.modified $Date$ |
4857 |
27 Mar 09 |
nicklas |
37 |
*/ |
4857 |
27 Mar 09 |
nicklas |
38 |
public class LookupFormatter<T> |
4857 |
27 Mar 09 |
nicklas |
39 |
implements Formatter<T> |
4857 |
27 Mar 09 |
nicklas |
40 |
{ |
4857 |
27 Mar 09 |
nicklas |
41 |
private final Map<T, String> map; |
4857 |
27 Mar 09 |
nicklas |
42 |
private String defaultValue; |
4857 |
27 Mar 09 |
nicklas |
43 |
|
4857 |
27 Mar 09 |
nicklas |
44 |
/** |
4857 |
27 Mar 09 |
nicklas |
Create a new lookup formatter |
4857 |
27 Mar 09 |
nicklas |
46 |
*/ |
4857 |
27 Mar 09 |
nicklas |
47 |
public LookupFormatter() |
4857 |
27 Mar 09 |
nicklas |
48 |
{ |
4857 |
27 Mar 09 |
nicklas |
49 |
this.map = new HashMap<T, String>(); |
4857 |
27 Mar 09 |
nicklas |
50 |
} |
4857 |
27 Mar 09 |
nicklas |
51 |
|
4857 |
27 Mar 09 |
nicklas |
52 |
/** |
4857 |
27 Mar 09 |
nicklas |
Create a new lookup formatter and initialise it with |
4857 |
27 Mar 09 |
nicklas |
the key-value pairs in the given map. The key value pairs |
4857 |
27 Mar 09 |
nicklas |
are copied to a new map internal to the lookup formatter. |
4857 |
27 Mar 09 |
nicklas |
@param in A map object or null |
4857 |
27 Mar 09 |
nicklas |
57 |
*/ |
4857 |
27 Mar 09 |
nicklas |
58 |
public LookupFormatter(Map<? extends T, ? extends String> in) |
4857 |
27 Mar 09 |
nicklas |
59 |
{ |
4857 |
27 Mar 09 |
nicklas |
60 |
this(); |
4857 |
27 Mar 09 |
nicklas |
61 |
if (in != null) putAll(in); |
4857 |
27 Mar 09 |
nicklas |
62 |
} |
4857 |
27 Mar 09 |
nicklas |
63 |
|
4857 |
27 Mar 09 |
nicklas |
64 |
/** |
4857 |
27 Mar 09 |
nicklas |
Create a new lookup formatter and initialise it with |
4857 |
27 Mar 09 |
nicklas |
the key-value pairs in the given enumeration. The key value pairs |
4857 |
27 Mar 09 |
nicklas |
are copied to a new map internal to the lookup formatter. |
4857 |
27 Mar 09 |
nicklas |
@param in An enumeration object or null |
4857 |
27 Mar 09 |
nicklas |
69 |
*/ |
4857 |
27 Mar 09 |
nicklas |
70 |
public LookupFormatter(Enumeration<? extends T, ? extends String> in) |
4857 |
27 Mar 09 |
nicklas |
71 |
{ |
4857 |
27 Mar 09 |
nicklas |
72 |
this(); |
4857 |
27 Mar 09 |
nicklas |
73 |
if (in != null) putAll(in); |
4857 |
27 Mar 09 |
nicklas |
74 |
} |
4857 |
27 Mar 09 |
nicklas |
75 |
|
4857 |
27 Mar 09 |
nicklas |
76 |
/* |
4857 |
27 Mar 09 |
nicklas |
From the Formatter interface |
4857 |
27 Mar 09 |
nicklas |
78 |
------------------------------------------- |
4857 |
27 Mar 09 |
nicklas |
79 |
*/ |
4857 |
27 Mar 09 |
nicklas |
80 |
@Override |
4857 |
27 Mar 09 |
nicklas |
81 |
public String format(T key) |
4857 |
27 Mar 09 |
nicklas |
82 |
{ |
4857 |
27 Mar 09 |
nicklas |
83 |
String value = defaultValue; |
4857 |
27 Mar 09 |
nicklas |
84 |
if (map.containsKey(key)) |
4857 |
27 Mar 09 |
nicklas |
85 |
{ |
4857 |
27 Mar 09 |
nicklas |
86 |
value = map.get(key); |
4857 |
27 Mar 09 |
nicklas |
87 |
} |
4857 |
27 Mar 09 |
nicklas |
88 |
return value; |
4857 |
27 Mar 09 |
nicklas |
89 |
} |
6127 |
14 Sep 12 |
nicklas |
90 |
@Override |
4857 |
27 Mar 09 |
nicklas |
91 |
public T parseString(String value) |
4857 |
27 Mar 09 |
nicklas |
92 |
{ |
4857 |
27 Mar 09 |
nicklas |
93 |
throw new UnsupportedOperationException("parseString: " + value); |
4857 |
27 Mar 09 |
nicklas |
94 |
} |
4857 |
27 Mar 09 |
nicklas |
95 |
// ------------------------------------------- |
4857 |
27 Mar 09 |
nicklas |
96 |
|
4857 |
27 Mar 09 |
nicklas |
97 |
/** |
4857 |
27 Mar 09 |
nicklas |
Set a default value that is returned by the {@link #format(Object)} |
4857 |
27 Mar 09 |
nicklas |
method in case no lookup has been specified for a key. |
4857 |
27 Mar 09 |
nicklas |
100 |
*/ |
4857 |
27 Mar 09 |
nicklas |
101 |
public void setDefaultValue(String defaultValue) |
4857 |
27 Mar 09 |
nicklas |
102 |
{ |
4857 |
27 Mar 09 |
nicklas |
103 |
this.defaultValue = defaultValue; |
4857 |
27 Mar 09 |
nicklas |
104 |
} |
4857 |
27 Mar 09 |
nicklas |
105 |
|
4857 |
27 Mar 09 |
nicklas |
106 |
/** |
4857 |
27 Mar 09 |
nicklas |
Get the default value. |
4857 |
27 Mar 09 |
nicklas |
108 |
*/ |
4857 |
27 Mar 09 |
nicklas |
109 |
public String getDefaultValue() |
4857 |
27 Mar 09 |
nicklas |
110 |
{ |
4857 |
27 Mar 09 |
nicklas |
111 |
return defaultValue; |
4857 |
27 Mar 09 |
nicklas |
112 |
} |
4857 |
27 Mar 09 |
nicklas |
113 |
|
4857 |
27 Mar 09 |
nicklas |
114 |
/** |
4857 |
27 Mar 09 |
nicklas |
Add a lookup key/value pair. |
4857 |
27 Mar 09 |
nicklas |
@param key The key |
4857 |
27 Mar 09 |
nicklas |
@param value The value that is returned as the lookup value for the given key |
4857 |
27 Mar 09 |
nicklas |
118 |
*/ |
4857 |
27 Mar 09 |
nicklas |
119 |
public void put(T key, String value) |
4857 |
27 Mar 09 |
nicklas |
120 |
{ |
4857 |
27 Mar 09 |
nicklas |
121 |
map.put(key, value); |
4857 |
27 Mar 09 |
nicklas |
122 |
} |
4857 |
27 Mar 09 |
nicklas |
123 |
|
4857 |
27 Mar 09 |
nicklas |
124 |
/** |
4857 |
27 Mar 09 |
nicklas |
Copy multiple lookup key/value pairs from a map |
4857 |
27 Mar 09 |
nicklas |
@param in The map to copy key/value pair from |
4857 |
27 Mar 09 |
nicklas |
127 |
*/ |
4857 |
27 Mar 09 |
nicklas |
128 |
public void putAll(Map<? extends T, ? extends String> in) |
4857 |
27 Mar 09 |
nicklas |
129 |
{ |
4857 |
27 Mar 09 |
nicklas |
130 |
map.putAll(in); |
4857 |
27 Mar 09 |
nicklas |
131 |
} |
4857 |
27 Mar 09 |
nicklas |
132 |
|
4857 |
27 Mar 09 |
nicklas |
133 |
/** |
4857 |
27 Mar 09 |
nicklas |
Copy multiple lookup key/value pairs from an enumeration. |
4857 |
27 Mar 09 |
nicklas |
@param in The enumeration to copy key/value pair from |
4857 |
27 Mar 09 |
nicklas |
136 |
*/ |
4857 |
27 Mar 09 |
nicklas |
137 |
public void putAll(Enumeration<? extends T, ? extends String> in) |
4857 |
27 Mar 09 |
nicklas |
138 |
{ |
4857 |
27 Mar 09 |
nicklas |
139 |
for (int i = 0; i < in.size(); ++i) |
4857 |
27 Mar 09 |
nicklas |
140 |
{ |
4857 |
27 Mar 09 |
nicklas |
141 |
map.put(in.getKey(i), in.getValue(i)); |
4857 |
27 Mar 09 |
nicklas |
142 |
} |
4857 |
27 Mar 09 |
nicklas |
143 |
} |
4857 |
27 Mar 09 |
nicklas |
144 |
|
4857 |
27 Mar 09 |
nicklas |
145 |
/** |
4857 |
27 Mar 09 |
nicklas |
Checks if a given key has been registered. |
4857 |
27 Mar 09 |
nicklas |
@param key The key |
4857 |
27 Mar 09 |
nicklas |
@return TRUE if an entry exists for the key, or FALSE otherwise |
4857 |
27 Mar 09 |
nicklas |
149 |
*/ |
4857 |
27 Mar 09 |
nicklas |
150 |
public boolean containsKey(Object key) |
4857 |
27 Mar 09 |
nicklas |
151 |
{ |
4857 |
27 Mar 09 |
nicklas |
152 |
return map.containsKey(key); |
4857 |
27 Mar 09 |
nicklas |
153 |
} |
4857 |
27 Mar 09 |
nicklas |
154 |
|
4857 |
27 Mar 09 |
nicklas |
155 |
/** |
4857 |
27 Mar 09 |
nicklas |
Get registered lookup value for a given key |
4857 |
27 Mar 09 |
nicklas |
@param key The key |
4857 |
27 Mar 09 |
nicklas |
@return The registered lookup value, or null if no value has |
4857 |
27 Mar 09 |
nicklas |
been registered |
4857 |
27 Mar 09 |
nicklas |
160 |
*/ |
4857 |
27 Mar 09 |
nicklas |
161 |
public String get(Object key) |
4857 |
27 Mar 09 |
nicklas |
162 |
{ |
4857 |
27 Mar 09 |
nicklas |
163 |
return map.get(key); |
4857 |
27 Mar 09 |
nicklas |
164 |
} |
4857 |
27 Mar 09 |
nicklas |
165 |
|
4857 |
27 Mar 09 |
nicklas |
166 |
/** |
4857 |
27 Mar 09 |
nicklas |
Get the number of registered lookup entries. |
4857 |
27 Mar 09 |
nicklas |
168 |
*/ |
4857 |
27 Mar 09 |
nicklas |
169 |
public int size() |
4857 |
27 Mar 09 |
nicklas |
170 |
{ |
4857 |
27 Mar 09 |
nicklas |
171 |
return map.size(); |
4857 |
27 Mar 09 |
nicklas |
172 |
} |
4857 |
27 Mar 09 |
nicklas |
173 |
|
4857 |
27 Mar 09 |
nicklas |
174 |
/** |
4857 |
27 Mar 09 |
nicklas |
Checks if the lookup map is empty or not. |
4857 |
27 Mar 09 |
nicklas |
176 |
*/ |
4857 |
27 Mar 09 |
nicklas |
177 |
public boolean isEmpty() |
4857 |
27 Mar 09 |
nicklas |
178 |
{ |
4857 |
27 Mar 09 |
nicklas |
179 |
return map.isEmpty(); |
4857 |
27 Mar 09 |
nicklas |
180 |
} |
4857 |
27 Mar 09 |
nicklas |
181 |
|
4857 |
27 Mar 09 |
nicklas |
182 |
/** |
4857 |
27 Mar 09 |
nicklas |
Remove all registered lookup entries. |
4857 |
27 Mar 09 |
nicklas |
184 |
*/ |
4857 |
27 Mar 09 |
nicklas |
185 |
public void clear() |
4857 |
27 Mar 09 |
nicklas |
186 |
{ |
4857 |
27 Mar 09 |
nicklas |
187 |
map.clear(); |
4857 |
27 Mar 09 |
nicklas |
188 |
} |
4857 |
27 Mar 09 |
nicklas |
189 |
|
4857 |
27 Mar 09 |
nicklas |
190 |
/** |
4857 |
27 Mar 09 |
nicklas |
Remove an entry from the lookup map. |
4857 |
27 Mar 09 |
nicklas |
@param key The key |
4857 |
27 Mar 09 |
nicklas |
@return The value that was associated with the key |
4857 |
27 Mar 09 |
nicklas |
194 |
*/ |
4857 |
27 Mar 09 |
nicklas |
195 |
public String remove(Object key) |
4857 |
27 Mar 09 |
nicklas |
196 |
{ |
4857 |
27 Mar 09 |
nicklas |
197 |
return map.remove(key); |
4857 |
27 Mar 09 |
nicklas |
198 |
} |
4857 |
27 Mar 09 |
nicklas |
199 |
|
4857 |
27 Mar 09 |
nicklas |
200 |
} |