package com.constellio.model.services.schemas.calculators; import java.util.ArrayList; import java.util.Arrays; import java.util.List; 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.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; public class RolesCalculator implements MetadataValueCalculator<List<String>> { LocalDependency<List<String>> userRolesParam = LocalDependency.toARequiredStringList("userroles"); ReferenceDependency<List<String>> groupsParam = ReferenceDependency.toAString("groups", "roles").whichIsMultivalue() .whichIsRequired(); @Override public List<String> calculate(CalculatorParameters parameters) { List<String> allRoles = new ArrayList<>(); List<String> userRoles = parameters.get(userRolesParam); List<String> groups = parameters.get(groupsParam); if (userRoles != null) { allRoles.addAll(userRoles); } if (groups != null) { allRoles.addAll(groups); } return allRoles; } @Override public List<String> getDefaultValue() { return new ArrayList<>(); } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public boolean isMultiValue() { return true; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(userRolesParam, groupsParam); } }