package com.constellio.model.services.schemas.builders; 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.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; public class MetadataSchemaTypesBuilderTestCalculatorUtils { public static class CalculatorUsingM2 implements MetadataValueCalculator<String> { LocalDependency<String> dependency = LocalDependency.toAString("m2").whichIsRequired(); @Override public String calculate(CalculatorParameters parameters) { throw new UnsupportedOperationException("TODO"); } @Override public String getDefaultValue() { throw new UnsupportedOperationException("TODO"); } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } public static class CalculatorUsingM1 implements MetadataValueCalculator<String> { LocalDependency<String> dependency = LocalDependency.toAString("m1").whichIsRequired(); @Override public String calculate(CalculatorParameters parameters) { throw new UnsupportedOperationException("TODO"); } @Override public String getDefaultValue() { throw new UnsupportedOperationException("TODO"); } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } public static class DummyTextCalculator implements MetadataValueCalculator<String> { LocalDependency<String> dependency = LocalDependency.toAString("other"); @Override public String calculate(CalculatorParameters parameters) { return parameters.get(dependency); } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } public static class DummyTextCalculatorUsingNumber implements MetadataValueCalculator<String> { LocalDependency<Double> dependency = LocalDependency.toANumber("other"); @Override public String calculate(CalculatorParameters parameters) { return parameters.get(dependency) + ""; } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } public static class DummyNumberCalculator implements MetadataValueCalculator<Number> { LocalDependency<Double> dependency = LocalDependency.toANumber("other"); @Override public Number calculate(CalculatorParameters parameters) { return parameters.get(dependency); } @Override public Number getDefaultValue() { return -1; } @Override public MetadataValueType getReturnType() { return MetadataValueType.NUMBER; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } public static class DummyNumberCalculator2 implements MetadataValueCalculator<Number> { LocalDependency<Double> dependency1 = LocalDependency.toANumber("dependency1"); LocalDependency<Double> dependency2 = LocalDependency.toANumber("dependency2"); @Override public Number calculate(CalculatorParameters parameters) { return parameters.get(dependency1) - parameters.get(dependency2); } @Override public Number getDefaultValue() { return -1; } @Override public MetadataValueType getReturnType() { return MetadataValueType.NUMBER; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency1, dependency2); } @Override public boolean isMultiValue() { return false; } } public static class DummyReferenceNumberCalculator implements MetadataValueCalculator<Number> { ReferenceDependency<Double> dependencyParam = ReferenceDependency.toANumber("dependencyRef", "dependencyMeta"); LocalDependency<Double> localDependencyMeta = LocalDependency.toANumber("localDependencyMeta"); @Override public Number calculate(CalculatorParameters parameters) { return parameters.get(dependencyParam) - parameters.get(localDependencyMeta); } @Override public Number getDefaultValue() { return -1; } @Override public MetadataValueType getReturnType() { return MetadataValueType.NUMBER; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependencyParam, localDependencyMeta); } @Override public boolean isMultiValue() { return false; } } public static class DummyNoDependenciesCalculator implements MetadataValueCalculator<String> { @Override public String calculate(CalculatorParameters parameters) { return null; } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(); } @Override public boolean isMultiValue() { return false; } } public static class DummyTextListCalculator implements MetadataValueCalculator<List<String>> { LocalDependency<List<String>> dependency = LocalDependency.toAStringList("other"); @Override public List<String> calculate(CalculatorParameters parameters) { return parameters.get(dependency); } @Override public List<String> getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return true; } } }