package com.constellio.app.ui.framework.components.converters; import java.util.Locale; import org.apache.commons.lang3.StringUtils; import com.constellio.app.ui.application.ConstellioUI; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.Language; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.vaadin.data.util.converter.Converter; public class MetadataCodeToStringConverter implements Converter<String, String> { @Override public String convertToModel(String value, Class<? extends String> targetType, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return value; } @Override public String convertToPresentation(String value, Class<? extends String> targetType, Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { String label; if (StringUtils.isNotBlank(value)) { SessionContext sessionContext = ConstellioUI.getCurrentSessionContext(); String collection = sessionContext.getCurrentCollection(); // TODO Cleaner way ModelLayerFactory modelLayerFactory = ConstellioUI.getCurrent().getConstellioFactories().getModelLayerFactory(); MetadataSchemasManager metadataSchemasManager = modelLayerFactory.getMetadataSchemasManager(); MetadataSchemaTypes types = metadataSchemasManager.getSchemaTypes(collection); Metadata metadata = types.getMetadata(value); Language language; if (locale == null) { language = Language.withCode(modelLayerFactory.getConfiguration().getMainDataLanguage()); } else { language = Language.withCode(locale.getLanguage()); } label = metadata.getLabel(language); } else { label = ""; } return label; } @Override public Class<String> getModelType() { return String.class; } @Override public Class<String> getPresentationType() { return String.class; } }