package com.constellio.app.modules.rm.model.calculators;
import java.util.Arrays;
import java.util.List;
import com.constellio.app.modules.rm.RMConfigs;
import com.constellio.app.modules.rm.model.enums.FolderStatus;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.model.entities.calculators.CalculatorParameters;
import com.constellio.model.entities.calculators.MetadataValueCalculator;
import com.constellio.model.entities.calculators.dependencies.ConfigDependency;
import com.constellio.model.entities.calculators.dependencies.Dependency;
import com.constellio.model.entities.calculators.dependencies.LocalDependency;
import com.constellio.model.entities.schemas.MetadataValueType;
public class FolderTreeVisibilityCalculator implements MetadataValueCalculator<Boolean> {
LocalDependency<FolderStatus> folderStatus = LocalDependency.toAnEnum(Folder.ARCHIVISTIC_STATUS);
ConfigDependency<Boolean> displaySemiActive = RMConfigs.DISPLAY_SEMI_ACTIVE_RECORDS_IN_TREES.dependency();
ConfigDependency<Boolean> displayDeposited = RMConfigs.DISPLAY_DEPOSITED_RECORDS_IN_TREES.dependency();
ConfigDependency<Boolean> displayDestroyed = RMConfigs.DISPLAY_DESTROYED_RECORDS_IN_TREES.dependency();
@Override
public Boolean calculate(CalculatorParameters parameters) {
switch (parameters.get(folderStatus)) {
case SEMI_ACTIVE:
return parameters.get(displaySemiActive);
case INACTIVE_DEPOSITED:
return parameters.get(displayDeposited);
case INACTIVE_DESTROYED:
return parameters.get(displayDestroyed);
}
return true;
}
@Override
public Boolean getDefaultValue() {
return null;
}
@Override
public MetadataValueType getReturnType() {
return MetadataValueType.BOOLEAN;
}
@Override
public boolean isMultiValue() {
return false;
}
@Override
public List<? extends Dependency> getDependencies() {
return Arrays.asList(folderStatus, displaySemiActive, displayDeposited, displayDestroyed);
}
}