package com.constellio.model.services.schemas.calculators;
import static com.constellio.model.entities.schemas.MetadataValueType.STRING;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
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.records.wrappers.User;
import com.constellio.model.entities.schemas.MetadataValueType;
public class AllUserAuthorizationsCalculator implements MetadataValueCalculator<List<String>> {
LocalDependency<List<String>> authorizationsParam = LocalDependency.toAStringList("authorizations").whichIsRequired();
LocalDependency<List<String>> groupsAuthorizationsParam = LocalDependency.toAStringList(User.GROUPS_AUTHORIZATIONS)
.whichIsRequired();
@Override
public List<String> calculate(CalculatorParameters parameters) {
Set<String> calculatedAuthorizations = new HashSet<>();
calculatedAuthorizations.addAll(parameters.get(authorizationsParam));
calculatedAuthorizations.addAll(parameters.get(groupsAuthorizationsParam));
return new ArrayList<>(calculatedAuthorizations);
}
@Override
public List<String> getDefaultValue() {
return Collections.emptyList();
}
@Override
public MetadataValueType getReturnType() {
return STRING;
}
@Override
public boolean isMultiValue() {
return true;
}
@Override
public List<? extends Dependency> getDependencies() {
return Arrays.asList(authorizationsParam, groupsAuthorizationsParam);
}
}