package com.constellio.app.modules.rm.model.calculators.decommissioningList; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import com.constellio.app.modules.rm.wrappers.DecommissioningList; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.model.entities.calculators.CalculatorParameters; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.entities.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; public class FoldersMediumTypesCalculator implements MetadataValueCalculator<List<String>> { ReferenceDependency<List<String>> mediumTypesParam = ReferenceDependency.toAReference(DecommissioningList.FOLDERS, Folder.MEDIUM_TYPES).whichIsMultivalue(); @Override public List<String> calculate(CalculatorParameters parameters) { List<String> newMediumTypes = removeRepeatedValues(parameters); return newMediumTypes; } @Override public List<String> getDefaultValue() { return new ArrayList<>(); } @Override public MetadataValueType getReturnType() { return MetadataValueType.REFERENCE; } @Override public boolean isMultiValue() { return true; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(mediumTypesParam); } // private List<String> removeRepeatedValues(CalculatorParameters parameters) { List<String> mediumTypes = parameters.get(mediumTypesParam); List<String> newMediumTypes = new ArrayList<>(); Set<String> mediumTypesSet = new HashSet<>(); mediumTypesSet.addAll(mediumTypes); newMediumTypes.addAll(mediumTypesSet); return newMediumTypes; } }