package com.qcadoo.mes.materialFlowResources.hooks; import static java.util.Comparator.comparing; import static org.apache.commons.lang3.ArrayUtils.contains; import static org.apache.commons.lang3.ArrayUtils.indexOf; import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; import com.qcadoo.localization.api.TranslationService; import com.qcadoo.mes.materialFlowResources.constants.PalletStorageStateDtoFields; import com.qcadoo.view.api.ViewDefinitionState; import com.qcadoo.view.api.components.FieldComponent; import com.qcadoo.view.api.components.GridComponent; @Service public class PalletStorageStateDetailsHooks { private static final String L_GRID = "grid"; @Autowired private TranslationService translationService; public void setupHeaderLabel(final ViewDefinitionState view) { String[] descriminatorFiltersFields = new String[] { PalletStorageStateDtoFields.PALLET_NUMBER, PalletStorageStateDtoFields.TYPE_OF_PALLET, PalletStorageStateDtoFields.LOCATION_NUMBER, PalletStorageStateDtoFields.STORAGE_LOCATION_NUMBER }; Map<String, String> filters = ((GridComponent) view.getComponentByReference(L_GRID)).getFilters(); String headerText = filters.entrySet().stream() .filter(fe -> contains(descriminatorFiltersFields, fe.getKey()) && !fe.getValue().equals("ISNULL")) .sorted(comparing((fe) -> indexOf(descriminatorFiltersFields, fe.getKey()))) .map(fe -> fe.getValue().replaceAll("[\\[\\]]", "")).collect(Collectors.joining(", ")); FieldComponent headerLabel = (FieldComponent) view.getComponentByReference("palletStorageDetailsHeaderLabel"); String headerLabelText = translationService.translate( "materialFlowResources.palletStorageStateDetails.window.mainTab.headerLabel", LocaleContextHolder.getLocale()); headerLabel.setFieldValue(headerLabelText + " " + headerText); headerLabel.requestComponentUpdateState(); } }