package com.constellio.app.modules.rm.model.calculators.document;
import static java.util.Arrays.asList;
import java.util.List;
import com.constellio.app.modules.rm.model.CopyRetentionRule;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.app.modules.rm.wrappers.RetentionRule;
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 DocumentEssentialCalculator implements MetadataValueCalculator<Boolean> {
LocalDependency<CopyRetentionRule> mainCopyRuleParam = LocalDependency.toAStructure(Document.MAIN_COPY_RULE)
.whichIsRequired();
ReferenceDependency<Boolean> retentionRuleEssentialParam = ReferenceDependency.toABoolean(Document.FOLDER_RETENTION_RULE,
RetentionRule.ESSENTIAL_DOCUMENTS);
@Override
public Boolean calculate(CalculatorParameters parameters) {
CopyRetentionRule mainCopyRule = parameters.get(mainCopyRuleParam);
Boolean retentionRuleEssential = parameters.get(retentionRuleEssentialParam);
return mainCopyRule.isEssential() || Boolean.TRUE.equals(retentionRuleEssential);
}
@Override
public Boolean getDefaultValue() {
return false;
}
@Override
public MetadataValueType getReturnType() {
return MetadataValueType.BOOLEAN;
}
@Override
public boolean isMultiValue() {
return false;
}
@Override
public List<? extends Dependency> getDependencies() {
return asList(mainCopyRuleParam, retentionRuleEssentialParam);
}
}