[Minor] cleaaned up StrolchEnum, using map to store values

This commit is contained in:
Robert von Burg 2014-08-07 14:53:55 +02:00
parent 6c9adf5daf
commit 9470b43e0d
2 changed files with 34 additions and 18 deletions

View File

@ -18,9 +18,7 @@ package li.strolch.runtime.query.enums;
import static ch.eitchnet.utils.helper.StringHelper.UNDERLINE;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@ -91,10 +89,10 @@ public class DefaultEnumHandler extends StrolchComponent implements EnumHandler
ParameterBag enumValuesByLanguage = findParameterBagByLanguage(enumeration, locale);
Set<String> parameterKeySet = enumValuesByLanguage.getParameterKeySet();
List<EnumValue> values = new ArrayList<>(parameterKeySet.size());
Map<String, EnumValue> values = new HashMap<>(parameterKeySet.size());
for (String paramKey : parameterKeySet) {
StringParameter enumParam = enumValuesByLanguage.getParameter(paramKey);
values.add(new EnumValue(paramKey, enumParam.getValue()));
values.put(paramKey, new EnumValue(paramKey, enumParam.getValue()));
}
StrolchEnum strolchEnum = new StrolchEnum(name, locale, values);

View File

@ -16,8 +16,11 @@
package li.strolch.runtime.query.enums;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@ -41,8 +44,7 @@ public class StrolchEnum {
@XmlAttribute(name = "locale")
private String locale;
@XmlElement(name = "values")
private List<EnumValue> values;
private Map<String, EnumValue> values;
@XmlTransient
private Locale localeL;
@ -56,7 +58,7 @@ public class StrolchEnum {
* @param locale
* @param values
*/
public StrolchEnum(String name, Locale locale, List<EnumValue> values) {
public StrolchEnum(String name, Locale locale, Map<String, EnumValue> values) {
this.name = name;
this.locale = locale.toString();
this.localeL = locale;
@ -113,28 +115,29 @@ public class StrolchEnum {
/**
* @return the values
*/
public List<EnumValue> getValues() {
return this.values;
@XmlElement(name = "values")
public Collection<EnumValue> getValues() {
if (this.values == null)
return null;
return this.values.values();
}
/**
* @param values
* the values to set
*/
public void setValues(List<EnumValue> values) {
this.values = values;
public void setValues(Collection<EnumValue> values) {
this.values = new HashMap<>(values.size());
for (EnumValue enumValue : values) {
this.values.put(enumValue.getId(), enumValue);
}
}
/**
* @return the list of {@link EnumValue#getId()}
*/
public List<String> getEnumValueIds() {
List<String> values = new ArrayList<>(this.values.size());
for (EnumValue enumValue : this.values) {
values.add(enumValue.getId());
}
return values;
return new ArrayList<>(this.values.keySet());
}
/**
@ -142,10 +145,25 @@ public class StrolchEnum {
*/
public List<String> getEnumValues() {
List<String> values = new ArrayList<>(this.values.size());
for (EnumValue enumValue : this.values) {
for (EnumValue enumValue : this.values.values()) {
values.add(enumValue.getValue());
}
return values;
}
/**
* Returns the actual value for the given id
*
* @param id
* the id of the value to return
*
* @return the actual value for the given id, or null if it does not exist
*/
public String getValue(String id) {
EnumValue enumValue = this.values.get(id);
if (enumValue == null)
return null;
return enumValue.getValue();
}
}