package com.constellio.app.modules.rm.model.calculators; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; 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 AdministrativeUnitAncestorsCalculator implements MetadataValueCalculator<List<String>> { LocalDependency<String> parentParam = LocalDependency.toAReference(AdministrativeUnit.PARENT); ReferenceDependency<List<String>> parentAncestorsParam = ReferenceDependency .toAReference(AdministrativeUnit.PARENT, AdministrativeUnit.ANCESTORS).whichIsMultivalue(); @Override public List<String> calculate(CalculatorParameters parameters) { String parent = parameters.get(parentParam); List<String> parentAncestors = parameters.get(parentAncestorsParam); List<String> ancestors = new ArrayList<>(parentAncestors); if (parent != null) { ancestors.add(parent); } return ancestors; } @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(parentParam, parentAncestorsParam); } }