From 86f9419a6cb50e12ed5d7f4e8531192715c0ff73 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Thu, 6 Aug 2020 09:31:13 +0200 Subject: [PATCH] [New] Added EnumHandler.getEnum(StrolchTransaction, String) --- .../query/enums/DefaultEnumHandler.java | 30 +++++++++++-------- .../runtime/query/enums/EnumHandler.java | 3 ++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/DefaultEnumHandler.java b/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/DefaultEnumHandler.java index 5f1729855..25e1a4095 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/DefaultEnumHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/DefaultEnumHandler.java @@ -44,26 +44,30 @@ public class DefaultEnumHandler extends StrolchComponent implements EnumHandler @Override public StrolchEnum getEnum(Certificate certificate, String name, Locale locale) { - DBC.PRE.assertNotEmpty("Enum name must be given!", name); //$NON-NLS-1$ DBC.PRE.assertNotNull("Locale must be given!", locale); //$NON-NLS-1$ try (StrolchTransaction tx = openTx(certificate, true)) { - Resource enumeration = tx.getResourceBy(TYPE_ENUMERATION, name, true); - ParameterBag enumValuesByLanguage = findParameterBagByLanguage(enumeration, locale); - - List> parameters = enumValuesByLanguage.getParameters(); - parameters.sort(Comparator.comparing(Parameter::getIndex)); - Map 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); + return getEnum(tx, name); } } + @Override + public StrolchEnum getEnum(StrolchTransaction tx, String name) { + Resource enumeration = tx.getResourceBy(TYPE_ENUMERATION, name, true); + ParameterBag enumValuesByLanguage = findParameterBagByLanguage(enumeration, tx.getLocale()); + + List> parameters = enumValuesByLanguage.getParameters(); + parameters.sort(Comparator.comparing(Parameter::getIndex)); + Map 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) { if (isNotEmpty(locale.getVariant())) { diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/EnumHandler.java b/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/EnumHandler.java index efe65880d..0eadb8f86 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/EnumHandler.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/query/enums/EnumHandler.java @@ -17,6 +17,7 @@ package li.strolch.runtime.query.enums; import java.util.Locale; +import li.strolch.persistence.api.StrolchTransaction; import li.strolch.privilege.model.Certificate; /** @@ -25,4 +26,6 @@ import li.strolch.privilege.model.Certificate; public interface EnumHandler { StrolchEnum getEnum(Certificate certificate, String name, Locale locale); + + StrolchEnum getEnum(StrolchTransaction tx, String name); }