package com.constellio.app.modules.rm.model.calculators.category; import static java.util.Arrays.asList; 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.schemas.MetadataValueType; import com.constellio.model.entities.schemas.Schemas; public class CategoryLevelCalculator implements MetadataValueCalculator<Double> { LocalDependency<List<String>> pathParam = LocalDependency.toAString(Schemas.PATH.getLocalCode()).whichIsMultivalue(); @Override public Double calculate(CalculatorParameters parameters) { List<String> paths = parameters.get(pathParam); if (paths.isEmpty()) { return 0.0; } else { return (double) paths.get(0).split("/").length - 3; } } @Override public Double getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.NUMBER; } @Override public boolean isMultiValue() { return false; } @Override public List<? extends Dependency> getDependencies() { return asList(pathParam); } }