package com.constellio.app.modules.tasks.model.calculators; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import com.constellio.app.modules.tasks.model.wrappers.Task; 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.LocalDependency; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.entities.structures.MapStringStringStructure; public class DecisionsTasksCalculator implements MetadataValueCalculator<List<String>> { LocalDependency<MapStringStringStructure> decisionsParams = LocalDependency.toAStructure(Task.NEXT_TASKS_DECISIONS); @Override public List<String> calculate(CalculatorParameters parameters) { List<String> values = new ArrayList<>(); MapStringStringStructure decisions = parameters.get(decisionsParams); if (decisions != null) { for (String value : decisions.values()) { if (value != null && !"NO_VALUE".equals(value)) { values.add(value); } } } return values; } @Override public List<String> getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.REFERENCE; } @Override public boolean isMultiValue() { return true; } @Override public List<? extends Dependency> getDependencies() { return asList(decisionsParams); } }