package com.constellio.model.services.schemas.calculators; import static com.constellio.model.entities.schemas.MetadataValueType.STRING; 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.SpecialDependencies; import com.constellio.model.entities.calculators.dependencies.SpecialDependency; import com.constellio.model.entities.schemas.MetadataValueType; public class PrincipalPathCalculator implements MetadataValueCalculator<String> { LocalDependency<List<String>> pathDependency = LocalDependency.toAStringList("path").whichIsRequired(); SpecialDependency<String> taxoPrincipaleDependency = SpecialDependencies.PRINCIPAL_TAXONOMY_CODE; @Override public String calculate(CalculatorParameters parameters) { String taxo = parameters.get(taxoPrincipaleDependency); List<String> pathsValue = parameters.get(pathDependency); if (pathsValue != null && !pathsValue.isEmpty() && taxo != null) { for (String path : pathsValue) { if (path != null && path.contains(taxo)) { return path; } } } return getDefaultValue(); } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return STRING; } @Override public boolean isMultiValue() { return false; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(pathDependency, taxoPrincipaleDependency); } }