From 69aae710f3d3f243222f7d16af29470903890f71 Mon Sep 17 00:00:00 2001 From: EL HAJJIOUI Nabil <nabil.elhajjioui@smile.fr> Date: Wed, 8 Sep 2021 10:53:23 +0200 Subject: [PATCH] =?UTF-8?q?[VAS]=20Item=208576=20Recherche=20d'op=C3=A9rat?= =?UTF-8?q?ions=20d'analyse=20d'=C3=A9limination=20par=20leurs=20identifia?= =?UTF-8?q?nts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/common/ArchiveSearchConsts.java | 2 + ...chivesSearchFieldsQueryBuilderService.java | 20 ++++ ...earchAppraisalQueryBuilderServiceTest.java | 31 ++++++ .../queries/elimination_analysis_search.json | 13 +++ .../appraisal-rule-search.component.html | 3 +- .../appraisal-rule-search.component.ts | 98 ++++++++++++------- .../archive-search/src/assets/i18n/en.json | 25 ++++- 7 files changed, 155 insertions(+), 37 deletions(-) create mode 100644 api/api-archive-search/archive-search-internal/src/test/resources/data/queries/elimination_analysis_search.json diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/ArchiveSearchConsts.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/ArchiveSearchConsts.java index 9aa9b816f..d8639e7e6 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/ArchiveSearchConsts.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/ArchiveSearchConsts.java @@ -167,6 +167,8 @@ public class ArchiveSearchConsts { public static final String UNITS_UPS = "#allunitups"; public static final String END_DATE = "EndDate"; public static final String TITLE_OR_DESCRIPTION = "TITLE_OR_DESCRIPTION"; + public static final String ELIMINATION_TECHNICAL_ID = "ELIMINATION_TECHNICAL_ID"; + public static final String ELIMINATION_GUID = "#elimination.OperationId"; /* Query fields */ public static final String ID = "#id"; diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchFieldsQueryBuilderService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchFieldsQueryBuilderService.java index 9d7eccf3d..19c23fd7b 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchFieldsQueryBuilderService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchFieldsQueryBuilderService.java @@ -69,6 +69,11 @@ public class ArchivesSearchFieldsQueryBuilderService implements IArchivesSearchA searchCriteria.getValues().stream().map(value -> value.getValue()).collect( Collectors.toList()), ArchiveSearchConsts.CriteriaOperators.valueOf(searchCriteria.getOperator()))); + } else if (ArchiveSearchConsts.ELIMINATION_TECHNICAL_ID.equals(searchCriteria.getCriteria())) { + queryToFill.add(buildEliminationAnalysisSearchQuery( + searchCriteria.getValues().stream().map(value -> value.getValue()).collect( + Collectors.toList()), + ArchiveSearchConsts.CriteriaOperators.valueOf(searchCriteria.getOperator()))); } else { String mappedCriteriaName = ArchiveSearchConsts.SIMPLE_FIELDS_VALUES_MAPPING.containsKey(searchCriteria.getCriteria()) ? @@ -100,5 +105,20 @@ public class ArchivesSearchFieldsQueryBuilderService implements IArchivesSearchA return subQueryAnd; } + private Query buildEliminationAnalysisSearchQuery(final List<String> searchValues, + ArchiveSearchConsts.CriteriaOperators operator) + throws InvalidCreateOperationException { + BooleanQuery subQueryAnd = and(); + if (!CollectionUtils.isEmpty(searchValues)) { + for (String value : searchValues) { + BooleanQuery subQueryOr = or(); + subQueryOr + .add(VitamQueryHelper.buildSubQueryByOperator(ArchiveSearchConsts.ELIMINATION_GUID, value, operator)); + subQueryAnd.add(subQueryOr); + } + } + return subQueryAnd; + } + } diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchAppraisalQueryBuilderServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchAppraisalQueryBuilderServiceTest.java index b173d4835..282df05e0 100644 --- a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchAppraisalQueryBuilderServiceTest.java +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchivesSearchAppraisalQueryBuilderServiceTest.java @@ -27,8 +27,11 @@ package fr.gouv.vitamui.archive.internal.server.service; +import com.fasterxml.jackson.databind.JsonNode; +import fr.gouv.vitam.common.PropertiesUtils; import fr.gouv.vitam.common.database.builder.query.BooleanQuery; import fr.gouv.vitam.common.database.builder.request.exception.InvalidCreateOperationException; +import fr.gouv.vitam.common.json.JsonHandler; import fr.gouv.vitamui.archives.search.common.common.ArchiveSearchConsts; import fr.gouv.vitamui.archives.search.common.dto.CriteriaValue; import fr.gouv.vitamui.archives.search.common.dto.SearchCriteriaEltDto; @@ -40,6 +43,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; +import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.BufferedReader; @@ -62,11 +66,15 @@ public class ArchivesSearchAppraisalQueryBuilderServiceTest { @InjectMocks private ArchivesSearchAppraisalQueryBuilderService archivesSearchAppraisalQueryBuilderService; + @InjectMocks + private ArchivesSearchFieldsQueryBuilderService archivesSearchFieldsQueryBuilderService; + @BeforeEach public void setUp() { ServerIdentityConfigurationBuilder.setup("identityName", "identityRole", 1, 0); archivesSearchAppraisalQueryBuilderService = new ArchivesSearchAppraisalQueryBuilderService(); + archivesSearchFieldsQueryBuilderService = new ArchivesSearchFieldsQueryBuilderService(); } @@ -415,6 +423,29 @@ public class ArchivesSearchAppraisalQueryBuilderServiceTest { } + @Test + public void testFillQueryFromCriteriaListWhenEliminationAnalysisTechnicalIdentifierThenReturnTheExactQuery() throws Exception { + //Given + List<SearchCriteriaEltDto> criteriaList = new ArrayList<>(); + SearchCriteriaEltDto searchCriteriaEltDto = new SearchCriteriaEltDto(); + searchCriteriaEltDto.setCriteria(ArchiveSearchConsts.ELIMINATION_TECHNICAL_ID); + searchCriteriaEltDto.setCategory(ArchiveSearchConsts.CriteriaCategory.FIELDS); + searchCriteriaEltDto.setValues(List.of(new CriteriaValue("guid"))); + searchCriteriaEltDto.setOperator(ArchiveSearchConsts.CriteriaOperators.EQ.name()); + criteriaList.add(searchCriteriaEltDto); + + //When + BooleanQuery query = and(); + archivesSearchFieldsQueryBuilderService + .fillQueryFromCriteriaList(query, criteriaList); + + //then + Assertions.assertFalse(query.getQueries().isEmpty()); + JsonNode expectedQuery = + JsonHandler.getFromFile(PropertiesUtils.findFile("data/queries/elimination_analysis_search.json")); + JSONAssert.assertEquals(expectedQuery.toPrettyString(), JsonHandler.getFromString(query.toString()).toPrettyString(), true); + } + private String loadFileContent(String filename) throws IOException { InputStream inputStream = ArchivesSearchAppraisalQueryBuilderServiceTest.class.getClassLoader() .getResourceAsStream("data/queries/" + filename); diff --git a/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/elimination_analysis_search.json b/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/elimination_analysis_search.json new file mode 100644 index 000000000..b69f962d9 --- /dev/null +++ b/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/elimination_analysis_search.json @@ -0,0 +1,13 @@ +{ + "$and": [ + { + "$or": [ + { + "$eq": { + "#elimination.OperationId": "guid" + } + } + ] + } + ] +} diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.html b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.html index 6831883c7..5f5e88556 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.html +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.html @@ -43,8 +43,7 @@ >{{ (endDateInterval ? 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.END_DATE_DUA_BEGIN' - : 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.END_DATE_DUA_EQUAL' - ) | translate + : 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.END_DATE_DUA_EQUAL') | translate }}</span > <ng-template #showBeginDtDua diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.ts index f2d789f10..0ff7ab24c 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/appraisal-rule-search/appraisal-rule-search.component.ts @@ -28,10 +28,11 @@ const APPRAISAL_RULE_ORIGIN = 'APPRAISAL_RULE_ORIGIN'; const APPRAISAL_RULE_IDENTIFIER = 'APPRAISAL_RULE_IDENTIFIER'; const APPRAISAL_RULE_TITLE = 'APPRAISAL_RULE_TITLE'; const APPRAISAL_RULE_END_DATE = 'APPRAISAL_RULE_END_DATE'; +const ELIMINATION_TECHNICAL_ID = 'ELIMINATION_TECHNICAL_ID'; @Component({ selector: 'appraisal-rule-search', - templateUrl: './appraisal-rule-search.component.html', + templateUrl: './appraisal-rule-search.component.html' }) export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { appraisalRuleCriteriaForm: FormGroup; @@ -56,7 +57,7 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { appraisalRuleFinalActionHasFinalAction: boolean; appraisalRuleFinalActionInheriteFinalAction: boolean; - appraisalRuleEliminationIdentifier?: any; + appraisalRuleEliminationIdentifier?: string; }; emptyAppraisalCriteriaForm = { appraisalRuleIdentifier: '', @@ -72,7 +73,7 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { notSpecifiedFinalActionType: false, appraisalRuleFinalActionHasFinalAction: false, appraisalRuleFinalActionInheriteFinalAction: false, - appraisalRuleEliminationIdentifier: false, + appraisalRuleEliminationIdentifier: '' }; showUnitPreviewBlock = false; @@ -89,7 +90,7 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { appraisalRuleStartDate: ['', []], appraisalRuleEndDate: ['', []], - appraisalRuleEliminationIdentifier: ['', []], + appraisalRuleEliminationIdentifier: ['', []] }); merge(this.appraisalRuleCriteriaForm.statusChanges, this.appraisalRuleCriteriaForm.valueChanges) .pipe( @@ -131,12 +132,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_ORIGIN, { id: APPRAISAL_RULE_ORIGIN_INHERITE_AT_LEAST_ONE, - value: APPRAISAL_RULE_ORIGIN_INHERITE_AT_LEAST_ONE, + value: APPRAISAL_RULE_ORIGIN_INHERITE_AT_LEAST_ONE }); } this.previousAppraisalCriteriaValue.appraisalRuleOriginInheriteAtLeastOne = action; @@ -150,12 +152,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'MISSING', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_ORIGIN, { id: APPRAISAL_RULE_ORIGIN_HAS_NO_ONE, - value: APPRAISAL_RULE_ORIGIN_HAS_NO_ONE, + value: APPRAISAL_RULE_ORIGIN_HAS_NO_ONE }); } this.previousAppraisalCriteriaValue.appraisalRuleOriginHasNoOne = action; @@ -169,12 +172,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_ORIGIN, { id: APPRAISAL_RULE_ORIGIN_WAITING_RECALCULATE, - value: APPRAISAL_RULE_ORIGIN_WAITING_RECALCULATE, + value: APPRAISAL_RULE_ORIGIN_WAITING_RECALCULATE }); } this.previousAppraisalCriteriaValue.appraisalRuleOriginWaitingRecalculate = action; @@ -188,12 +192,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EXISTS', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_ORIGIN, { id: APPRAISAL_RULE_ORIGIN_HAS_AT_LEAST_ONE, - value: APPRAISAL_RULE_ORIGIN_HAS_AT_LEAST_ONE, + value: APPRAISAL_RULE_ORIGIN_HAS_AT_LEAST_ONE }); } this.previousAppraisalCriteriaValue.appraisalRuleOriginHasAtLeastOne = action; @@ -207,12 +212,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_FINAL_ACTION_TYPE, { id: APPRAISAL_RULE_FINAL_ACTION_TYPE_ELIMINATION, - value: APPRAISAL_RULE_FINAL_ACTION_TYPE_ELIMINATION, + value: APPRAISAL_RULE_FINAL_ACTION_TYPE_ELIMINATION }); } this.previousAppraisalCriteriaValue.eliminationFinalActionType = action; @@ -226,12 +232,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_FINAL_ACTION_TYPE, { id: APPRAISAL_RULE_FINAL_ACTION_TYPE_KEEP, - value: APPRAISAL_RULE_FINAL_ACTION_TYPE_KEEP, + value: APPRAISAL_RULE_FINAL_ACTION_TYPE_KEEP }); } this.previousAppraisalCriteriaValue.keepFinalActionType = action; @@ -245,12 +252,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_FINAL_ACTION_TYPE, { id: APPRAISAL_RULE_FINAL_ACTION_TYPE_NOT_SPECIFIED, - value: APPRAISAL_RULE_FINAL_ACTION_TYPE_NOT_SPECIFIED, + value: APPRAISAL_RULE_FINAL_ACTION_TYPE_NOT_SPECIFIED }); } this.previousAppraisalCriteriaValue.notSpecifiedFinalActionType = action; @@ -264,12 +272,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_FINAL_ACTION, { id: APPRAISAL_RULE_FINAL_ACTION_HAS_FINAL_ACTION, - value: APPRAISAL_RULE_FINAL_ACTION_HAS_FINAL_ACTION, + value: APPRAISAL_RULE_FINAL_ACTION_HAS_FINAL_ACTION }); } this.previousAppraisalCriteriaValue.appraisalRuleFinalActionHasFinalAction = action; @@ -283,12 +292,13 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); } else { this.emitRemoveCriteriaEvent(APPRAISAL_RULE_FINAL_ACTION, { id: APPRAISAL_RULE_FINAL_ACTION_INHERITE_FINAL_ACTION, - value: APPRAISAL_RULE_FINAL_ACTION_INHERITE_FINAL_ACTION, + value: APPRAISAL_RULE_FINAL_ACTION_INHERITE_FINAL_ACTION }); } this.previousAppraisalCriteriaValue.appraisalRuleFinalActionInheriteFinalAction = action; @@ -306,13 +316,14 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { { id: this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate + '-', beginInterval: '', - endInterval: this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate, + endInterval: this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate }, this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate, true, 'LTE', false, - 'INTERVAL' + 'INTERVAL', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); this.appraisalRuleCriteriaForm.controls['appraisalRuleStartDate'].setValue(null); } @@ -325,13 +336,14 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { { id: this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate + '-' + this.appraisalRuleCriteriaForm.value.appraisalRuleEndDate, beginInterval: this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate, - endInterval: this.appraisalRuleCriteriaForm.value.appraisalRuleEndDate, + endInterval: this.appraisalRuleCriteriaForm.value.appraisalRuleEndDate }, this.appraisalRuleCriteriaForm.value.appraisalRuleStartDate, true, 'BETWEEN', false, - 'INTERVAL' + 'INTERVAL', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); this.appraisalRuleCriteriaForm.controls['appraisalRuleStartDate'].setValue(null); this.appraisalRuleCriteriaForm.controls['appraisalRuleEndDate'].setValue(null); @@ -349,7 +361,8 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', false, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); return true; @@ -361,7 +374,20 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EQ', false, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE + ); + return true; + } else if (formData.appraisalRuleEliminationIdentifier) { + this.addCriteria( + ELIMINATION_TECHNICAL_ID, + { id: formData.appraisalRuleEliminationIdentifier.trim(), value: formData.appraisalRuleEliminationIdentifier.trim() }, + formData.appraisalRuleEliminationIdentifier.trim(), + true, + 'EQ', + false, + 'STRING', + SearchCriteriaTypeEnum.FIELDS ); return true; } @@ -410,7 +436,7 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { appraisalRuleFinalActionHasFinalAction: false, appraisalRuleFinalActionInheriteFinalAction: false, - appraisalRuleEliminationIdentifier: '', + appraisalRuleEliminationIdentifier: '' }; this.addCriteria( @@ -420,7 +446,8 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EXISTS', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); this.addCriteria( APPRAISAL_RULE_ORIGIN, @@ -429,7 +456,8 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { true, 'EXISTS', true, - 'STRING' + 'STRING', + SearchCriteriaTypeEnum.APPRAISAL_RULE ); this.appraisalAdditionalCriteria.set(APPRAISAL_RULE_ORIGIN_INHERITE_AT_LEAST_ONE, true); this.appraisalAdditionalCriteria.set(APPRAISAL_RULE_ORIGIN_HAS_AT_LEAST_ONE, true); @@ -446,8 +474,10 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { keyTranslated: boolean, operator: string, valueTranslated: boolean, - dataType: string + dataType: string, + category?: SearchCriteriaTypeEnum ) { + // console.log('actualCategory', actualCategory); if (keyElt && valueElt) { this.archiveExchangeDataService.addSimpleSearchCriteriaSubject({ keyElt: keyElt, @@ -455,9 +485,9 @@ export class AppraisalRuleSearchComponent implements OnInit, OnDestroy { labelElt: labelElt, keyTranslated: keyTranslated, operator: operator, - category: SearchCriteriaTypeEnum.APPRAISAL_RULE, + category: category, valueTranslated: valueTranslated, - dataType: dataType, + dataType: dataType }); } } diff --git a/ui/ui-frontend/projects/archive-search/src/assets/i18n/en.json b/ui/ui-frontend/projects/archive-search/src/assets/i18n/en.json index 1df08218f..6b8f5ba4c 100644 --- a/ui/ui-frontend/projects/archive-search/src/assets/i18n/en.json +++ b/ui/ui-frontend/projects/archive-search/src/assets/i18n/en.json @@ -45,6 +45,28 @@ "TITLE": "Search filters", "DUA_TITLE": "Administrative useful life", "OTHER_FILED_SELECTION": "Select another criteria", + "APPRAISAL_RULE": { + "APPRAISAL_RULE_END_DATE_END": "DUA: max End date", + "APPRAISAL_RULE_END_DATE_BEGIN": "DUA: min End date", + "CREATE_INTERVAL": "Create an interval", + "DELETE_INTERVAL": "delete interval", + "APPRAISAL_RULE_FINAL_ACTION": "FInal Action", + "APPRAISAL_RULE_TITLE": "DUA Rule title", + "APPRAISAL_RULE_IDENTIFIER": "DUA Rule identifier", + "APPRAISAL_RULE_START_DATE": "DUA Start Date", + "APPRAISAL_RULE_END_DATE": "DUAEnd Date", + "APPRAISAL_RULE_FINAL_ACTION_TYPE": "Final Action", + "APPRAISAL_RULE_ORIGIN": "DUA Rule", + "APPRAISAL_RULE_FINAL_ACTION_TYPE_ELIMINATION": "Elimination", + "APPRAISAL_RULE_FINAL_ACTION_TYPE_KEEP": "Conservation", + "APPRAISAL_RULE_FINAL_ACTION_TYPE_NOT_SPECIFIED": "Not declared", + "APPRAISAL_RULE_FINAL_ACTION_HAS_FINAL_ACTION": "Holden rule", + "APPRAISAL_RULE_FINAL_ACTION_INHERITE_FINAL_ACTION": "Inherited", + "APPRAISAL_RULE_ORIGIN_HAS_AT_LEAST_ONE": "Holden rule", + "APPRAISAL_RULE_ORIGIN_HAS_NO_ONE": "Not defined", + "APPRAISAL_RULE_ORIGIN_WAITING_RECALCULATE": "Waiting for recalculate", + "APPRAISAL_RULE_ORIGIN_INHERITE_AT_LEAST_ONE": "Inherited" + }, "FIELDS": { "ID": "ID", "TITLE_OR_DESCRIPTION": "Title or Description", @@ -76,7 +98,8 @@ "HAS_NO_APPRAISAL_RULE": "Does not have a DUA rule defined", "WAITING_TO_RE_CALCULATE_APPRAISAL_RULE": "Is waiting for rule recalculation", "SELECT_ALL_APPRAISAL_RULE": "Select all" - } + }, + "ELIMINATION_TECHNICAL_ID": "Elimination analysis operation Identifier" } }, "ARCHIVE_UNIT": { -- GitLab