package com.constellio.app.modules.rm.model.calculators.rule; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import com.constellio.app.modules.rm.model.CopyRetentionRule; import com.constellio.app.modules.rm.wrappers.RetentionRule; import com.constellio.app.modules.rm.wrappers.structures.RetentionRuleDocumentType; 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; public class RuleDocumentTypesCalculator2 implements MetadataValueCalculator<List<String>> { LocalDependency<List<CopyRetentionRule>> copyRetentionRulesParam = LocalDependency .toAStructure(RetentionRule.DOCUMENT_COPY_RETENTION_RULES).whichIsMultivalue(); LocalDependency<List<RetentionRuleDocumentType>> documentsTypesDetailsParam = LocalDependency .toAStructure(RetentionRule.DOCUMENT_TYPES_DETAILS).whichIsMultivalue(); @Override public List<String> calculate(CalculatorParameters parameters) { List<String> ids = new ArrayList<>(); List<RetentionRuleDocumentType> details = parameters.get(documentsTypesDetailsParam); for (RetentionRuleDocumentType detail : details) { ids.add(detail.getDocumentTypeId()); } for (CopyRetentionRule copyRetentionRule : parameters.get(copyRetentionRulesParam)) { if (copyRetentionRule.getTypeId() != null && !ids.contains(copyRetentionRule.getTypeId())) { ids.add(copyRetentionRule.getTypeId()); } } return ids; } @Override public List<String> getDefaultValue() { return new ArrayList<>(); } @Override public MetadataValueType getReturnType() { return MetadataValueType.REFERENCE; } @Override public boolean isMultiValue() { return true; } @Override public List<? extends Dependency> getDependencies() { return asList(documentsTypesDetailsParam, copyRetentionRulesParam); } }