package com.constellio.app.modules.rm.model.calculators.folder; import static java.util.Arrays.asList; import java.util.List; import com.constellio.app.modules.rm.model.enums.FolderMediaType; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.rm.wrappers.type.MediumType; 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.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; public class FolderMediaTypesCalculator implements MetadataValueCalculator<FolderMediaType> { ReferenceDependency<List<Boolean>> mediumTypesAnalogStatusParam = ReferenceDependency .toABoolean(Folder.MEDIUM_TYPES, MediumType.ANALOGICAL).whichIsMultivalue(); @Override public FolderMediaType calculate(CalculatorParameters parameters) { List<Boolean> mediumTypesAnalogStatus = parameters.get(mediumTypesAnalogStatusParam); boolean hasAnalog = false; boolean hasElectronic = false; for (Boolean mediumTypeAnalogStatus : mediumTypesAnalogStatus) { if (mediumTypeAnalogStatus) { hasAnalog = true; } else { hasElectronic = true; } } if (hasAnalog && hasElectronic) { return FolderMediaType.HYBRID; } else if (hasAnalog) { return FolderMediaType.ANALOG; } else if (hasElectronic) { return FolderMediaType.ELECTRONIC; } else { return FolderMediaType.UNKNOWN; } } @Override public FolderMediaType getDefaultValue() { return FolderMediaType.UNKNOWN; } @Override public MetadataValueType getReturnType() { return MetadataValueType.ENUM; } @Override public boolean isMultiValue() { return false; } @Override public List<? extends Dependency> getDependencies() { return asList(mediumTypesAnalogStatusParam); } }