package com.constellio.model.services.records; import static com.constellio.model.entities.schemas.MetadataValueType.NUMBER; import static com.constellio.model.entities.schemas.MetadataValueType.REFERENCE; 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.schemas.MetadataValueType; import com.constellio.model.services.schemas.builders.MetadataBuilder; import com.constellio.model.services.schemas.builders.MetadataSchemaTypeBuilder; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; import com.constellio.sdk.tests.schemas.MetadataBuilderConfigurator; public class RecordServicesAcceptanceTestUtils { public static MetadataBuilderConfigurator calculatedTextFromDummyCalculator() { return new MetadataBuilderConfigurator() { @Override public void configure(MetadataBuilder builder, MetadataSchemaTypesBuilder schemaTypes) { schemaTypes.getSchema("zeSchemaType_default").create("other").setType(STRING); builder.defineDataEntry().asCalculated(DummyTextCalculator.class); } }; } public static MetadataBuilderConfigurator calculatedTextListFromDummyCalculator() { return new MetadataBuilderConfigurator() { @Override public void configure(MetadataBuilder builder, MetadataSchemaTypesBuilder schemaTypes) { schemaTypes.getSchema("zeSchemaType_default").create("other").setType(STRING).setMultivalue(true); builder.setMultivalue(true).defineDataEntry().asCalculated(DummyTextListCalculator.class); } }; } public static MetadataBuilderConfigurator calculatedTextListFromDummyCalculatorReturningInvalidType() { return new MetadataBuilderConfigurator() { @Override public void configure(MetadataBuilder builder, MetadataSchemaTypesBuilder schemaTypes) { schemaTypes.getSchema("zeSchemaType_default").create("other").setType(NUMBER); builder.defineDataEntry().asCalculated(DummyCalculatorReturningInvalidType.class.getName()); } }; } public static MetadataBuilderConfigurator calculatedReferenceFromDummyCalculatorUsingOtherMetadata() { return new MetadataBuilderConfigurator() { @Override public void configure(MetadataBuilder builder, MetadataSchemaTypesBuilder schemaTypes) { MetadataSchemaTypeBuilder zeType = schemaTypes.getSchemaType("zeSchemaType"); MetadataSchemaTypeBuilder anotherType = schemaTypes.getSchemaType("anotherSchemaType"); MetadataSchemaTypeBuilder thirdType = schemaTypes.getSchemaType("aThirdSchemaType"); schemaTypes.getSchema("zeSchemaType_default").create("other").setType(REFERENCE) .defineReferences().set(anotherType); builder.defineDataEntry().asCalculated(DummyCalculatorReturningReference.class.getName()); } }; } 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 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; } } @SuppressWarnings("rawtypes") public static class DummyCalculatorReturningInvalidType implements MetadataValueCalculator { LocalDependency dependency = LocalDependency.toANumber("other").whichIsRequired(); @SuppressWarnings("unchecked") @Override public Object calculate(CalculatorParameters parameters) { return parameters.get(dependency); } @Override public Object 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 DummyCalculatorReturningReference implements MetadataValueCalculator<String> { LocalDependency<String> dependency = LocalDependency.toAReference("other"); @Override public String calculate(CalculatorParameters parameters) { return parameters.get(dependency); } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.REFERENCE; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(dependency); } @Override public boolean isMultiValue() { return false; } } }