Search in sources :

Example 31 with Language

use of de.symeda.sormas.api.Language in project SORMAS-Project by hzi-braunschweig.

the class CustomizableEnumValueDao method getEnumValues.

@SuppressWarnings("unchecked")
public <T extends CustomizableEnum> List<T> getEnumValues(CustomizableEnumType type, Disease disease) {
    if (customizableEnumsByType.isEmpty()) {
        loadData();
    }
    Language language = I18nProperties.getUserLanguage();
    Class<T> enumClass = (Class<T>) type.getEnumClass();
    initCaches(type, language);
    // Always add values for no disease because they are relevant in all cases
    if (!enumValuesByDisease.get(enumClass).containsKey(null)) {
        addValuesByDisease(type, enumClass, null);
    }
    if (!enumValuesByDisease.get(enumClass).containsKey(disease)) {
        addValuesByDisease(type, enumClass, disease);
    }
    List<T> enumValues = new ArrayList<>();
    enumValuesByLanguage.get(enumClass).get(language).forEach((value, caption) -> {
        T enumValue;
        try {
            enumValue = enumClass.newInstance();
            enumValue.setValue(value);
            enumValue.setCaption(caption);
            enumValue.setProperties(enumProperties.get(type).get(value));
            enumValues.add(enumValue);
        } catch (InstantiationException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    });
    return enumValues.stream().filter(e -> enumValuesByDisease.get(enumClass).get(disease).contains(e.getValue()) || enumValuesByDisease.get(enumClass).get(null).contains(e.getValue())).collect(Collectors.toList());
}
Also used : AbstractAdoDao(de.symeda.sormas.app.backend.common.AbstractAdoDao) I18nProperties(de.symeda.sormas.api.i18n.I18nProperties) HashMap(java.util.HashMap) Dao(com.j256.ormlite.dao.Dao) Collectors(java.util.stream.Collectors) StringUtils(org.apache.commons.lang3.StringUtils) Language(de.symeda.sormas.api.Language) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ArrayList(java.util.ArrayList) CustomizableEnumType(de.symeda.sormas.api.customizableenum.CustomizableEnumType) List(java.util.List) Disease(de.symeda.sormas.api.Disease) Map(java.util.Map) ConfigProvider(de.symeda.sormas.app.backend.config.ConfigProvider) Optional(java.util.Optional) CustomizableEnum(de.symeda.sormas.api.customizableenum.CustomizableEnum) CustomizableEnumTranslation(de.symeda.sormas.api.customizableenum.CustomizableEnumTranslation) Language(de.symeda.sormas.api.Language) ArrayList(java.util.ArrayList)

Aggregations

Language (de.symeda.sormas.api.Language)31 I18nProperties (de.symeda.sormas.api.i18n.I18nProperties)14 List (java.util.List)14 Date (java.util.Date)12 Optional (java.util.Optional)11 ArrayList (java.util.ArrayList)10 Collectors (java.util.stream.Collectors)9 Map (java.util.Map)8 StringUtils (org.apache.commons.lang3.StringUtils)8 DateRenderer (com.vaadin.ui.renderers.DateRenderer)7 Disease (de.symeda.sormas.api.Disease)7 DistrictReferenceDto (de.symeda.sormas.api.infrastructure.district.DistrictReferenceDto)7 DateHelper (de.symeda.sormas.api.utils.DateHelper)7 Collection (java.util.Collection)7 HashMap (java.util.HashMap)7 EJB (javax.ejb.EJB)7 Captions (de.symeda.sormas.api.i18n.Captions)6 ValidationRuntimeException (de.symeda.sormas.api.utils.ValidationRuntimeException)6 RegionReferenceDto (de.symeda.sormas.api.infrastructure.region.RegionReferenceDto)5 LocationDto (de.symeda.sormas.api.location.LocationDto)5