[New] Added EnumHandler.getEnum(StrolchTransaction, String)
This commit is contained in:
parent
07d2329725
commit
86f9419a6c
|
@ -44,26 +44,30 @@ public class DefaultEnumHandler extends StrolchComponent implements EnumHandler
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StrolchEnum getEnum(Certificate certificate, String name, Locale locale) {
|
public StrolchEnum getEnum(Certificate certificate, String name, Locale locale) {
|
||||||
|
|
||||||
DBC.PRE.assertNotEmpty("Enum name must be given!", name); //$NON-NLS-1$
|
DBC.PRE.assertNotEmpty("Enum name must be given!", name); //$NON-NLS-1$
|
||||||
DBC.PRE.assertNotNull("Locale must be given!", locale); //$NON-NLS-1$
|
DBC.PRE.assertNotNull("Locale must be given!", locale); //$NON-NLS-1$
|
||||||
|
|
||||||
try (StrolchTransaction tx = openTx(certificate, true)) {
|
try (StrolchTransaction tx = openTx(certificate, true)) {
|
||||||
Resource enumeration = tx.getResourceBy(TYPE_ENUMERATION, name, true);
|
return getEnum(tx, name);
|
||||||
ParameterBag enumValuesByLanguage = findParameterBagByLanguage(enumeration, locale);
|
|
||||||
|
|
||||||
List<Parameter<?>> parameters = enumValuesByLanguage.getParameters();
|
|
||||||
parameters.sort(Comparator.comparing(Parameter::getIndex));
|
|
||||||
Map<String, String> values = new LinkedHashMap<>(parameters.size());
|
|
||||||
for (Parameter<?> param : parameters) {
|
|
||||||
StringParameter enumParam = (StringParameter) param;
|
|
||||||
values.put(enumParam.getId(), enumParam.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
return new StrolchEnum(name, locale, values);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StrolchEnum getEnum(StrolchTransaction tx, String name) {
|
||||||
|
Resource enumeration = tx.getResourceBy(TYPE_ENUMERATION, name, true);
|
||||||
|
ParameterBag enumValuesByLanguage = findParameterBagByLanguage(enumeration, tx.getLocale());
|
||||||
|
|
||||||
|
List<Parameter<?>> parameters = enumValuesByLanguage.getParameters();
|
||||||
|
parameters.sort(Comparator.comparing(Parameter::getIndex));
|
||||||
|
Map<String, String> values = new LinkedHashMap<>(parameters.size());
|
||||||
|
for (Parameter<?> param : parameters) {
|
||||||
|
StringParameter enumParam = (StringParameter) param;
|
||||||
|
values.put(enumParam.getId(), enumParam.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return new StrolchEnum(name, tx.getLocale(), values);
|
||||||
|
}
|
||||||
|
|
||||||
private ParameterBag findParameterBagByLanguage(Resource enumeration, Locale locale) {
|
private ParameterBag findParameterBagByLanguage(Resource enumeration, Locale locale) {
|
||||||
|
|
||||||
if (isNotEmpty(locale.getVariant())) {
|
if (isNotEmpty(locale.getVariant())) {
|
||||||
|
|
|
@ -17,6 +17,7 @@ package li.strolch.runtime.query.enums;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
import li.strolch.privilege.model.Certificate;
|
import li.strolch.privilege.model.Certificate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,4 +26,6 @@ import li.strolch.privilege.model.Certificate;
|
||||||
public interface EnumHandler {
|
public interface EnumHandler {
|
||||||
|
|
||||||
StrolchEnum getEnum(Certificate certificate, String name, Locale locale);
|
StrolchEnum getEnum(Certificate certificate, String name, Locale locale);
|
||||||
|
|
||||||
|
StrolchEnum getEnum(StrolchTransaction tx, String name);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue