package com.constellio.app.modules.rm.ui.entities; import static com.constellio.app.modules.rm.wrappers.RetentionRule.ADMINISTRATIVE_UNITS; import static com.constellio.app.modules.rm.wrappers.RetentionRule.APPROVAL_DATE; import static com.constellio.app.modules.rm.wrappers.RetentionRule.APPROVED; import static com.constellio.app.modules.rm.wrappers.RetentionRule.CODE; import static com.constellio.app.modules.rm.wrappers.RetentionRule.COPY_RETENTION_RULES; import static com.constellio.app.modules.rm.wrappers.RetentionRule.COPY_RULES_COMMENT; import static com.constellio.app.modules.rm.wrappers.RetentionRule.CORPUS; import static com.constellio.app.modules.rm.wrappers.RetentionRule.DESCRIPTION; import static com.constellio.app.modules.rm.wrappers.RetentionRule.DOCUMENT_COPY_RETENTION_RULES; import static com.constellio.app.modules.rm.wrappers.RetentionRule.DOCUMENT_TYPES; import static com.constellio.app.modules.rm.wrappers.RetentionRule.DOCUMENT_TYPES_DETAILS; import static com.constellio.app.modules.rm.wrappers.RetentionRule.GENERAL_COMMENT; import static com.constellio.app.modules.rm.wrappers.RetentionRule.JURIDIC_REFERENCE; import static com.constellio.app.modules.rm.wrappers.RetentionRule.KEYWORDS; import static com.constellio.app.modules.rm.wrappers.RetentionRule.PRINCIPAL_DEFAULT_DOCUMENT_COPY_RETENTION_RULE; import static com.constellio.app.modules.rm.wrappers.RetentionRule.RESPONSIBLE_ADMINISTRATIVE_UNITS; import static com.constellio.app.modules.rm.wrappers.RetentionRule.SCOPE; import static com.constellio.app.modules.rm.wrappers.RetentionRule.SECONDARY_DEFAULT_DOCUMENT_COPY_RETENTION_RULE; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.joda.time.LocalDate; import com.constellio.app.modules.rm.model.CopyRetentionRule; import com.constellio.app.modules.rm.model.enums.CopyType; import com.constellio.app.modules.rm.model.enums.DisposalType; import com.constellio.app.modules.rm.model.enums.RetentionRuleScope; import com.constellio.app.modules.rm.wrappers.structures.RetentionRuleDocumentType; import com.constellio.app.ui.entities.MetadataValueVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.data.utils.ImpossibleRuntimeException; public class RetentionRuleVO extends RecordVO { public static final String CATEGORIES = "categories"; public static final String UNIFORM_SUBDIVISIONS = "subdivisions"; String foldersNumber; public RetentionRuleVO(String id, List<MetadataValueVO> metadataValues, VIEW_MODE viewMode) { super(id, metadataValues, viewMode); } public String getCode() { return get(CODE); } public void setCode(String code) { set(CODE, code); } public boolean isResponsibleAdministrativeUnits() { return getBooleanWithDefaultValue(RESPONSIBLE_ADMINISTRATIVE_UNITS, false); } public void setResponsibleAdministrativeUnits(boolean responsibleAdministrativeUnits) { set(RESPONSIBLE_ADMINISTRATIVE_UNITS, responsibleAdministrativeUnits); } public boolean isApproved() { return getBooleanWithDefaultValue(APPROVED, false); } public void setApproved(boolean approved) { set(APPROVED, approved); } public LocalDate getApprovalDate() { return get(APPROVAL_DATE); } public void setApprovalDate(LocalDate approvalDate) { set(APPROVAL_DATE, approvalDate); } public List<String> getDocumentTypes() { return getList(DOCUMENT_TYPES); } public List<RetentionRuleDocumentType> getDocumentTypesDetails() { return getList(DOCUMENT_TYPES_DETAILS); } public void setDocumentTypesDetails(List<RetentionRuleDocumentType> documentTypesDetails) { set(DOCUMENT_TYPES_DETAILS, documentTypesDetails); } public List<String> getKeywords() { return getList(KEYWORDS); } public void setKeywords(List<String> keywords) { set(KEYWORDS, keywords); } public String getCorpus() { return get(CORPUS); } public void setCorpus(String corpus) { set(CORPUS, corpus); } public String getCopyRulesComment() { return get(COPY_RULES_COMMENT); } public void setCopyRulesComment(String copyRulesComment) { set(COPY_RULES_COMMENT, copyRulesComment); } public String getDescription() { return get(DESCRIPTION); } public void setDescription(String description) { set(DESCRIPTION, description); } public String getJuridicReference() { return get(JURIDIC_REFERENCE); } public void setJuridicReference(String juridicReference) { set(JURIDIC_REFERENCE, juridicReference); } public String getGeneralComment() { return get(GENERAL_COMMENT); } public void setGeneralComment(String generalComment) { set(GENERAL_COMMENT, generalComment); } public List<String> getAdministrativeUnits() { return getList(ADMINISTRATIVE_UNITS); } public void setAdministrativeUnits(List<?> administrativeUnits) { set(ADMINISTRATIVE_UNITS, administrativeUnits); } public List<CopyRetentionRule> getCopyRetentionRules() { return getList(COPY_RETENTION_RULES); } public String getFoldersNumber() { return foldersNumber; } public void setFoldersNumber(String foldersNumber) { this.foldersNumber = foldersNumber; } public void setCopyRetentionRules(CopyRetentionRule... copyRetentionRules) { setCopyRetentionRules(Arrays.asList(copyRetentionRules)); } public void setCopyRetentionRules(List<CopyRetentionRule> copyRetentionRules) { set(COPY_RETENTION_RULES, copyRetentionRules); } public CopyRetentionRule getSecondaryCopy() { for (CopyRetentionRule copyRetentionRule : getCopyRetentionRules()) { if (copyRetentionRule.getCopyType() == CopyType.SECONDARY) { return copyRetentionRule; } } return null; } public List<CopyRetentionRule> getPrincipalCopies() { List<CopyRetentionRule> principalCopies = new ArrayList<>(); for (CopyRetentionRule copyRetentionRule : getCopyRetentionRules()) { if (copyRetentionRule.getCopyType() == CopyType.PRINCIPAL) { principalCopies.add(copyRetentionRule); } } return principalCopies; } public CopyRetentionRule getSecondaryCopyRetentionRule() { for (CopyRetentionRule copyRetentionRule : getCopyRetentionRules()) { if (copyRetentionRule.getCopyType() == CopyType.SECONDARY) { return copyRetentionRule; } } throw new ImpossibleRuntimeException("Retention rule has no secondary copy retention rule"); } public final boolean hasCopyRetentionRuleWithSortDispositionType() { for (CopyRetentionRule copyRetentionRule : getCopyRetentionRules()) { if (DisposalType.SORT == copyRetentionRule.getInactiveDisposalType()) { return true; } } return false; } public List<String> getCategories() { return getList(CATEGORIES); } public List<String> getUniformSubdivisions() { return getList(UNIFORM_SUBDIVISIONS); } public static class RetentionRuleRuntimeException extends RuntimeException { public RetentionRuleRuntimeException(String message) { super(message); } } public List<CopyRetentionRule> getDocumentCopyRetentionRules() { return getList(DOCUMENT_COPY_RETENTION_RULES); } public void setDocumentCopyRetentionRules(CopyRetentionRule... documentCopyRetentionRules) { setDocumentCopyRetentionRules(Arrays.asList(documentCopyRetentionRules)); } public void setDocumentCopyRetentionRules(List<CopyRetentionRule> copyRetentionRules) { set(DOCUMENT_COPY_RETENTION_RULES, copyRetentionRules); } public CopyRetentionRule getPrincipalDefaultDocumentCopyRetentionRule() { return get(PRINCIPAL_DEFAULT_DOCUMENT_COPY_RETENTION_RULE); } public void setPrincipalDefaultDocumentCopyRetentionRule( CopyRetentionRule principalDefaultDocumentCopyRetentionRule) { set(PRINCIPAL_DEFAULT_DOCUMENT_COPY_RETENTION_RULE, principalDefaultDocumentCopyRetentionRule); } public CopyRetentionRule getSecondaryDefaultDocumentCopyRetentionRule() { return get(SECONDARY_DEFAULT_DOCUMENT_COPY_RETENTION_RULE); } public void setSecondaryDefaultDocumentCopyRetentionRule( CopyRetentionRule secondaryDefaultDocumentCopyRetentionRule) { set(SECONDARY_DEFAULT_DOCUMENT_COPY_RETENTION_RULE, secondaryDefaultDocumentCopyRetentionRule); } public RetentionRuleScope getScope() { return get(SCOPE); } public void setScope(RetentionRuleScope scope) { set(SCOPE, scope); } public void setDecommissioningType(RetentionRuleScope retentionRuleScope) { set(SCOPE, retentionRuleScope); } }