@Override public Field<?> build(RecordVO recordVO, MetadataVO metadataVO) { Field<?> field; String metadataCode = MetadataVO.getCodeWithoutPrefix(metadataVO.getCode()); RetentionRuleVO retentionRuleVO = (RetentionRuleVO) recordVO; switch (metadataCode) { case RetentionRule.COPY_RETENTION_RULES: field = new CopyRetentionRuleTable(retentionRuleVO, true, getOpenPeriodsDDVList()) { @Override protected void onDisposalTypeChange(CopyRetentionRule copyRetentionRule) { RetentionRuleFieldFactory.this.onDisposalTypeChange(copyRetentionRule); } }; postBuild(field, recordVO, metadataVO); return field; case RetentionRule.DOCUMENT_TYPES_DETAILS: field = new ListAddRemoveRetentionRuleDocumentTypeField(); postBuild(field, recordVO, metadataVO); return field; case "categories": field = super.build(recordVO, metadataVO); ((ListAddRemoveRecordLookupField) field).setIgnoreLinkability(true); return field; default: return super.build(recordVO, metadataVO); } }