diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiManagementMetadataAction.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiManagementMetadataAction.java index 5ae6eaa67a417308fc72894683a0c997f32b1e15..afde79b8285928db665c9ba8d8e02fed05bde35b 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiManagementMetadataAction.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiManagementMetadataAction.java @@ -54,5 +54,5 @@ import java.io.Serializable; @Getter public class VitamUiManagementMetadataAction implements Serializable { - String archiveUnitProfile; + private String archiveUnitProfile; } diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiRuleActions.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiRuleActions.java index ad195e8b16144e630ee9fd7708bc063cc3c0ccf4..b8f881d67487b3d5d48d7eb3c37b71cc0f3c1896 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiRuleActions.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/VitamUiRuleActions.java @@ -58,15 +58,14 @@ import static com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS; @Getter public class VitamUiRuleActions implements Serializable { + private List<Map<String, VitamUiRuleCategoryAction>> add = new ArrayList<>(); - List<Map<String, VitamUiRuleCategoryAction>> add = new ArrayList<>(); - - List<Map<String, VitamUiRuleCategoryAction>> update = new ArrayList<>(); + private List<Map<String, VitamUiRuleCategoryAction>> update = new ArrayList<>(); @JsonInclude(ALWAYS) - List<Map<String, VitamUiRuleCategoryActionDeletion>> delete = new ArrayList<>(); + private List<Map<String, VitamUiRuleCategoryActionDeletion>> delete = new ArrayList<>(); - VitamUiManagementMetadataAction addOrUpdateMetadata; + private VitamUiManagementMetadataAction addOrUpdateMetadata; - VitamUiManagementMetadataAction deleteMetadata; + private VitamUiManagementMetadataAction deleteMetadata; } diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/rest/RestApi.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/rest/RestApi.java index 444186852a926182a91cbcdff987dd73dade49f9..806344875d4dc67cadd8820045a1e7a277d54943 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/rest/RestApi.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/rest/RestApi.java @@ -40,5 +40,5 @@ public class RestApi { public static final String EXPORT_DIP = "/export-dip"; public static final String ELIMINATION_ANALYSIS = "/elimination/analysis"; public static final String ELIMINATION_ACTION = "/elimination/action"; - public static final String MASSUPDATEUNITSRULES = "/units/rules"; + public static final String MASS_UPDATE_UNITS_RULES = "/units/rules"; } diff --git a/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java b/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java index 9919dd49befab10e41fdc5663b1f00e3c35a97f1..5e08fcf9af526e6bbf9c2cf7e6a94440fe3bc087 100644 --- a/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java +++ b/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java @@ -190,7 +190,7 @@ public class ArchiveSearchExternalRestClient MultiValueMap<String, String> headers = buildSearchHeaders(context); final HttpEntity<RuleSearchCriteriaDto> request = new HttpEntity<>(ruleSearchCriteriaDto, headers); final ResponseEntity<String> response = - restTemplate.exchange(getUrl() + RestApi.MASSUPDATEUNITSRULES, HttpMethod.POST, + restTemplate.exchange(getUrl() + RestApi.MASS_UPDATE_UNITS_RULES, HttpMethod.POST, request, String.class); return response; } diff --git a/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalController.java b/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalController.java index 66feb9406bd72877a3298a075eab769435d9edac..206142db323a469f9bff0fed2e4064b58fd0df28 100644 --- a/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalController.java +++ b/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalController.java @@ -152,7 +152,7 @@ public class ArchivesSearchExternalController { return archivesSearchExternalService.startEliminationAction(query); } - @PostMapping(RestApi.MASSUPDATEUNITSRULES) + @PostMapping(RestApi.MASS_UPDATE_UNITS_RULES) @Secured(ServicesData.ROLE_UPDATE_MANAGEMENT_RULES) public String updateArchiveUnitsRules(final @RequestBody RuleSearchCriteriaDto ruleSearchCriteriaDto) { LOGGER.info("Calling Update Archive Units Rules By Criteria {} ", ruleSearchCriteriaDto); diff --git a/api/api-archive-search/archive-search-external/src/test/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalControllerTest.java b/api/api-archive-search/archive-search-external/src/test/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalControllerTest.java index f2042921d7153f7b55c56bdb6abe10c0ea86703f..99c63a43b4f1b57a9f38d3bf4da9ec8d4e83a042 100644 --- a/api/api-archive-search/archive-search-external/src/test/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalControllerTest.java +++ b/api/api-archive-search/archive-search-external/src/test/java/fr/gouv/vitamui/archives/search/external/server/rest/ArchivesSearchExternalControllerTest.java @@ -72,6 +72,8 @@ public class ArchivesSearchExternalControllerTest extends ApiArchiveSearchExtern public final String ARCHIVE_UNITS_RESULTS_CSV = "data/vitam_archive_units_response.csv"; + public final String EXPECTED_RESPONSE = "expected_response"; + @MockBean private ArchivesSearchExternalService archivesSearchExternalService; @@ -199,7 +201,7 @@ public class ArchivesSearchExternalControllerTest extends ApiArchiveSearchExtern public void testArchiveUnitsRulesMassUpdateResultsThanReturnVitamOperationId() { RuleSearchCriteriaDto ruleSearchCriteriaDto = new RuleSearchCriteriaDto(); - String expectedResponse = new String(); + String expectedResponse = EXPECTED_RESPONSE; Mockito .when(archivesSearchExternalService.updateArchiveUnitsRules(Mockito.eq(ruleSearchCriteriaDto))) diff --git a/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java b/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java index b9c15242506e457cd19d4943b3e1bd1fc6fbe702..42fa540a0960f79bc4216831c3b5fbf0ac716311 100644 --- a/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java +++ b/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java @@ -204,7 +204,7 @@ public class ArchiveInternalRestClient MultiValueMap<String, String> headers = buildSearchHeaders(context); final HttpEntity<RuleSearchCriteriaDto> request = new HttpEntity<>(ruleSearchCriteriaDto, headers); final ResponseEntity<String> response = - restTemplate.exchange(getUrl() + RestApi.MASSUPDATEUNITSRULES, HttpMethod.POST, + restTemplate.exchange(getUrl() + RestApi.MASS_UPDATE_UNITS_RULES, HttpMethod.POST, request, String.class); checkResponse(response); return response.getBody(); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java index cb2ba96fb7f169f28d88a98f5598ddefcdfa95ae..808688860d82a1a3760ba2d9815353e86cc82a63 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java @@ -227,7 +227,7 @@ public class ArchiveSearchInternalController { return jsonNode; } - @PostMapping(RestApi.MASSUPDATEUNITSRULES) + @PostMapping(RestApi.MASS_UPDATE_UNITS_RULES) public ResponseEntity<String> updateArchiveUnitsRules( @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java index ede2340c0cadfed3677dcae2f85d7d5619f04ba6..dee1483e2271b9cc9e30d9fe34c7ee8336d5502d 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java @@ -52,6 +52,7 @@ import fr.gouv.vitamui.archives.search.common.dto.VitamUiRuleCategoryAction; import fr.gouv.vitamui.archives.search.common.dto.VitamUiRuleCategoryActionDeletion; import fr.gouv.vitamui.commons.utils.VitamUIUtils; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; @@ -65,10 +66,9 @@ import java.util.Map; */ @Getter @Setter +@NoArgsConstructor public class RuleOperationsConverter { - public RuleOperationsConverter() { - } public ManagementMetadataAction convertToVitamManagementMetadataAction( VitamUiManagementMetadataAction vitamUiManagementMetadataAction) { diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java index a5b72aa8164467591706236fc63a4eaf6a293426..7edc51defd2dfbc58e17be9624ef0504afca29ff 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java @@ -703,7 +703,7 @@ public class ArchiveSearchInternalService { objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); JsonNode updateQuery = objectMapper.convertValue(massUpdateUnitRuleRequest, JsonNode.class); - LOGGER.info("Add Rules to UA final updateQuery : {}", updateQuery); + LOGGER.debug("Add Rules to UA final updateQuery : {}", updateQuery); return massUpdateUnitsRules(vitamContext, updateQuery); } 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 282df05e02f5a69dd48efa18d5145df8481817e0..ac86a0ff054ea613ee9917fb137dd52ff4658736 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 @@ -31,6 +31,7 @@ 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.exception.InvalidParseOperationException; 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; @@ -38,6 +39,7 @@ import fr.gouv.vitamui.archives.search.common.dto.SearchCriteriaEltDto; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; import fr.gouv.vitamui.commons.test.utils.ServerIdentityConfigurationBuilder; +import org.json.JSONException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -47,6 +49,7 @@ import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.BufferedReader; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -444,6 +447,35 @@ public class ArchivesSearchAppraisalQueryBuilderServiceTest { JsonNode expectedQuery = JsonHandler.getFromFile(PropertiesUtils.findFile("data/queries/elimination_analysis_search.json")); JSONAssert.assertEquals(expectedQuery.toPrettyString(), JsonHandler.getFromString(query.toString()).toPrettyString(), true); + + } + + @Test + public void testFillQueryFromCriteriaListWhenAppraisalMgtRulesHasStartDateForControlThenReturnTheExactQuery() + throws InvalidCreateOperationException, IOException { + + //Given + List<SearchCriteriaEltDto> criteriaList = new ArrayList<>(); + SearchCriteriaEltDto searchCriteriaEltDto = new SearchCriteriaEltDto(); + searchCriteriaEltDto.setCriteria(ArchiveSearchConsts.APPRAISAL_RULE_START_DATE); + searchCriteriaEltDto.setCategory(ArchiveSearchConsts.CriteriaCategory.FIELDS); + searchCriteriaEltDto.setValues(List.of(new CriteriaValue("2021-11-08T23:00:00.000Z"))); + searchCriteriaEltDto.setOperator(ArchiveSearchConsts.CriteriaOperators.EQ.name()); + criteriaList.add(searchCriteriaEltDto); + + //When + BooleanQuery query = and(); + archivesSearchFieldsQueryBuilderService + .fillQueryFromCriteriaList(query, criteriaList); + + //then + Assertions.assertFalse(query.getQueries().isEmpty()); + Assertions.assertEquals(query.getQueries().size(), 1); + String queryStr = query.getQueries().toString(); + LOGGER.info(queryStr); + String queryFileStr = loadFileContent("vitam_query_with_start_date.txt"); + Assertions.assertEquals(queryStr.trim(), queryFileStr.trim()); + } private String loadFileContent(String filename) throws IOException { diff --git a/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/vitam_query_with_start_date.txt b/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/vitam_query_with_start_date.txt new file mode 100644 index 0000000000000000000000000000000000000000..d67675269fdcb2d175e6f57b531f4591c15d19e3 --- /dev/null +++ b/api/api-archive-search/archive-search-internal/src/test/resources/data/queries/vitam_query_with_start_date.txt @@ -0,0 +1 @@ +[{"$or":[{"$eq":{"#management.AppraisalRule.Rules.StartDate":"2021-11-09"}}]}] diff --git a/ui/ui-archive-search/src/main/java/fr/gouv/vitamui/archives/search/rest/ArchivesSearchController.java b/ui/ui-archive-search/src/main/java/fr/gouv/vitamui/archives/search/rest/ArchivesSearchController.java index b2d49b3d97201aed8486cff85fd422d59f8b4788..36c5abb26ce622891c7a1d2a9d22a147177d7618 100644 --- a/ui/ui-archive-search/src/main/java/fr/gouv/vitamui/archives/search/rest/ArchivesSearchController.java +++ b/ui/ui-archive-search/src/main/java/fr/gouv/vitamui/archives/search/rest/ArchivesSearchController.java @@ -205,7 +205,7 @@ public class ArchivesSearchController extends AbstractUiRestController { } @ApiOperation(value = "Update Archive Units Rules by criteria") - @PostMapping(RestApi.MASSUPDATEUNITSRULES) + @PostMapping(RestApi.MASS_UPDATE_UNITS_RULES) @ResponseStatus(HttpStatus.OK) public String updateArchiveUnitsRules(@RequestBody final RuleSearchCriteriaDto ruleSearchCriteriaDto) { LOGGER.debug("Update Archive Units Rules with criteria {} ", ruleSearchCriteriaDto); 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 16b2002b77df17c58515e7572885190cdecdbcf0..9daa148be139f69f1cc6bf44d133cfad2c0fc1b0 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 @@ -53,7 +53,8 @@ >{{ (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/assets/i18n/fr.json b/ui/ui-frontend/projects/archive-search/src/assets/i18n/fr.json index f2d14c69cf0f8b833b4db5bfcc52b2625cb8171c..3d91115f28de8011ebf98db728a90fcc971e2c85 100644 --- a/ui/ui-frontend/projects/archive-search/src/assets/i18n/fr.json +++ b/ui/ui-frontend/projects/archive-search/src/assets/i18n/fr.json @@ -111,7 +111,7 @@ "END_DATE_DUA_EQUAL": "Date de fin extrême", "END_DATE_DUA_BEGIN": "Entre le ", "END_DATE_DUA_END": "et le ", - "GUID_OPI": "GUID du versement", + "GUID_OPI": "Identifiant technique du versement", "ORIGIN": { "TITLE": "L'unité archivistique", "INHERITE_AT_LEAST_ONE_APPRAISAL_RULE": "Hérite d'au moins une règle DUA",