package com.constellio.app.modules.tasks.model.calculators;
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.app.modules.tasks.model.wrappers.Task;
import com.constellio.app.modules.tasks.model.wrappers.structures.TaskFollower;
import com.constellio.model.entities.schemas.MetadataValueType;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static java.util.Arrays.asList;
public class TaskFollowersCalculator implements MetadataValueCalculator<List<String>> {
LocalDependency<List<TaskFollower>> taskFollowers = LocalDependency
.toAStructure(Task.TASK_FOLLOWERS).whichIsMultivalue();
@Override
public List<String> calculate(CalculatorParameters parameters) {
Set<String> ids = new HashSet<>();
List<TaskFollower> taskFollowerList = parameters.get(taskFollowers);
if(taskFollowerList != null) {
for (TaskFollower taskFollower : taskFollowerList) {
ids.add(taskFollower.getFollowerId());
}
}
return new ArrayList<>(ids);
}
@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 asList(taskFollowers);
}
}