package com.constellio.model.entities.calculators; import com.constellio.model.entities.calculators.dependencies.ConfigDependency; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.entities.calculators.dependencies.DynamicLocalDependency; import com.constellio.model.entities.calculators.dependencies.LocalDependency; import com.constellio.model.entities.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.calculators.dependencies.SpecialDependency; public class CalculatorParametersValidatingDependencies extends CalculatorParameters { CalculatorParameters parameters; MetadataValueCalculator calculator; public CalculatorParametersValidatingDependencies(CalculatorParameters parameters, MetadataValueCalculator calculator) { super(parameters.values, parameters.getId(), parameters.getLegacyId(), parameters.getSchemaType(), parameters.getCollection()); this.parameters = parameters; this.calculator = calculator; } private void ensureDependencyAvailable(Dependency dependency) { if (!calculator.getDependencies().contains(dependency)) { throw new RuntimeException( dependency + " is not returned by getDependencies() in calculator " + calculator.getClass().getSimpleName()); } } @Override public <T> T get(LocalDependency<T> dependency) { ensureDependencyAvailable(dependency); return parameters.get(dependency); } @Override public <T> T get(ReferenceDependency<T> dependency) { ensureDependencyAvailable(dependency); return parameters.get(dependency); } @Override public <T> T get(SpecialDependency<T> dependency) { ensureDependencyAvailable(dependency); return parameters.get(dependency); } @Override public <T> T get(ConfigDependency<T> dependency) { ensureDependencyAvailable(dependency); return parameters.get(dependency); } @Override public DynamicDependencyValues get(DynamicLocalDependency dependency) { ensureDependencyAvailable(dependency); return parameters.get(dependency); } }