package com.constellio.app.modules.rm.model.calculators.storageSpace; import com.constellio.app.modules.rm.wrappers.StorageSpace; 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 java.util.List; import static java.util.Arrays.asList; public class StorageSpaceLinearSizeCalculator implements MetadataValueCalculator<Double> { LocalDependency<Double> enteredLinearSizeParam = LocalDependency.toANumber(StorageSpace.LINEAR_SIZE_ENTERED); LocalDependency<Double> linearSizeSumParam = LocalDependency.toANumber(StorageSpace.LINEAR_SIZE_SUM); LocalDependency<Double> childLinearSizeSumParam = LocalDependency.toANumber(StorageSpace.CHILD_LINEAR_SIZE_SUM); LocalDependency<Double> numberOfChildSizeSumParam = LocalDependency.toANumber(StorageSpace.NUMBER_OF_CHILD); @Override public Double calculate(CalculatorParameters parameters) { Double enteredLinearSizeParam = parameters.get(this.enteredLinearSizeParam); Double enteredLinearSizeSumParam = parameters.get(this.linearSizeSumParam); Double enteredChildLinearSizeSumParam = parameters.get(this.childLinearSizeSumParam); Double enteredNumberOfChildSizeSumParam = parameters.get(this.numberOfChildSizeSumParam); if (enteredNumberOfChildSizeSumParam != null && enteredNumberOfChildSizeSumParam > 0) { return enteredChildLinearSizeSumParam; } else { return enteredLinearSizeParam != null ? enteredLinearSizeParam : enteredLinearSizeSumParam; } } @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(enteredLinearSizeParam, linearSizeSumParam, childLinearSizeSumParam, numberOfChildSizeSumParam); } }