From a151a181bfc768fb421aae93521e9313208efdd8 Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 10:48:45 +0100 Subject: [PATCH 01/12] feature : improve get/dataset/{id} methods Correction of "Publisher" and "Creator" descriptions. --- .../rmes/services/datasets/DataSetsImpl.java | 72 ++++++++++++++----- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index f2175186..40107084 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -9,12 +9,11 @@ import fr.insee.rmes.modelSwagger.dataset.*; import fr.insee.rmes.persistence.FreeMarkerUtils; import fr.insee.rmes.persistence.RdfService; -import fr.insee.security.User; import fr.insee.rmes.services.codelists.CodeListsServices; import fr.insee.rmes.utils.Constants; import fr.insee.rmes.utils.config.Config; import fr.insee.rmes.utils.exceptions.RmesException; -import org.apache.commons.lang3.stream.LangCollectors; +import fr.insee.security.User; import org.json.JSONArray; import org.json.JSONObject; import org.slf4j.Logger; @@ -27,6 +26,7 @@ import org.springframework.web.client.RestClient; import java.util.*; + @Service public class DataSetsImpl extends RdfService implements DataSetsServices { @@ -108,7 +108,6 @@ public ResponseEntity patchDataset(String datasetId, PatchDatasetDTO pat return httpPatchRequest(token,patchDataset,datasetId, user); } - protected ResponseEntity httpPatchRequest(String token, PatchDatasetDTO body, String datasetId, Optional user){ Optional id = user.map(User::id); @@ -153,8 +152,27 @@ protected DataSetModelSwagger findDataSetModelSwagger(String id) throws RmesExce } } + protected IdLabel labelInformation(String id,String string1,String string2){ + List listOfLangContent = null; + + if( string1.isEmpty() && !string2.isEmpty()){ + listOfLangContent = constructLangContent2(string2); + } + + if( !string1.isEmpty() && string2.isEmpty()){ + listOfLangContent = constructLangContent1(string1); + } + + if( !string1.isEmpty() && !string2.isEmpty()){ + listOfLangContent = constructLangContent(string1,string2); + } + + return new IdLabel(id,listOfLangContent); + + } + protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONObject catalogue_result, JSONObject adms_result, JSONObject codes_result, JSONObject organisations_result, JSONObject structures_result) throws RmesException, JsonProcessingException { - //récupération de le date de mofidication + //récupération de le date de modification if (catalogue_result.has("dateModification")) { Modified modified = new Modified(catalogue_result.getString("dateModification")); reponse.setModified(modified.toString()); @@ -208,10 +226,13 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb ProcessStep processStep = constructCodeList(processStepResult.getString("notation")); reponse.setProcessStep(processStep); } + //récupération de publisher if (organisations_result.has("idPublisher")) { - IdLabel publisher = constructIdLabel(organisations_result.getString("idPublisher"),organisations_result.getString("labelPublisherLg1"),organisations_result.getString("labelPublisherLg2")); - reponse.setPublisher(publisher); + String id = organisations_result.getString("idPublisher"); + String string1 =organisations_result.getString("labelPublisherLg1"); + String string2 =organisations_result.getString("labelPublisherLg2"); + reponse.setPublisher(labelInformation(id,string1,string2)); } //récupération de type @@ -262,7 +283,6 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb reponse.setKeyword(keyword); } - //récupération de statisticalUnit if (codes_result.has("labelstatisticalUnitLg1") && codes_result.has("labelstatisticalUnitLg2")){ List statisticalUnit = constructLangContent(codes_result.getString("labelstatisticalUnitLg1"),codes_result.getString("labelstatisticalUnitLg2")); @@ -469,21 +489,35 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti return distributionReponse; } + private List getCreator(List creatorUris) throws RmesException { + List StepOne = new ArrayList<>(); + for (String s : creatorUris) { StepOne.add(s.trim());} + List StepTwo = new ArrayList<>(new LinkedHashSet<>(StepOne)); - private List getCreator(List creatorUris) throws RmesException { + List identifiers = new ArrayList<>(); List creator = new ArrayList<>(); - for (String s : creatorUris){ - params.put("URI", s.replace(" ", "")); + for (String s : StepTwo){ + + params.put("URI", s); JSONObject creator_result = repoGestion.getResponseAsObject(buildRequest(Constants.DATASETS_QUERIES_PATH+DATASET_BY_ID_PATH, "getDataSetByIdCreator.ftlh", params)); - List creatorTitles = constructLangContent(creator_result.getString("labelCreatorLg1"),creator_result.getString("labelCreatorLg2")); - IdLabel creatorIdLabel = new IdLabel(creator_result.getString("idCreator"),creatorTitles); - creator.add(creatorIdLabel); + + String id = creator_result.getString("idCreator"); + + if(!identifiers.contains(id.trim())){ + String string1 = creator_result.getString("labelCreatorLg1"); + String string2 = creator_result.getString("labelCreatorLg2"); + creator.add(labelInformation(id.trim(),string1,string2)); + identifiers.add(id.trim()); + } + } + return creator; } + private List getWasGeneratedBy(List operationStat) throws RmesException { List wasGeneratedBy = new ArrayList<>(); for (String s : operationStat){ @@ -568,11 +602,19 @@ private List getThemeModelSwaggerS(JSONObject dataSetId) thro } } - protected List constructLangContent(String elementLg1, String elementLg2) { return List.of(LangContent.lg1(elementLg1), LangContent.lg2(elementLg2)); } + protected List constructLangContent1(String elementLg1) { + return List.of(LangContent.lg1(elementLg1)); + } + + protected List constructLangContent2(String elementLg2) { + return List.of(LangContent.lg2(elementLg2)); + } + + protected List constructLangContentList(String stringListLg, String lg) { List listLg= List.of(stringListLg.split(",")); List rep = new ArrayList<>(); @@ -583,7 +625,6 @@ protected List constructLangContentList(String stringListLg, String return rep; } - private IdLabel constructIdLabel(String id, String labelLg1, String labelLg2) { List langContentList = constructLangContent(labelLg1,labelLg2); return new IdLabel(id,langContentList); @@ -594,7 +635,6 @@ private WasDerivedFrom constructWasDerivedFrom(List datasets, String der return new WasDerivedFrom(datasets,descriptions); } - private ProcessStep constructCodeList(String notation) throws RmesException { String codeListString = codeListsServices.getCodesListForDataset(notation); JSONObject jsonCodeList = new JSONObject(codeListString); From bbdbb1dfa1f526ef0de95cff259310ca8e86df39 Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 10:53:15 +0100 Subject: [PATCH 02/12] feature : improve get/dataset/{id} methods --- .../fr/insee/rmes/services/datasets/DataSetsImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 40107084..9df6f50c 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -491,14 +491,14 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti private List getCreator(List creatorUris) throws RmesException { - List StepOne = new ArrayList<>(); - for (String s : creatorUris) { StepOne.add(s.trim());} - List StepTwo = new ArrayList<>(new LinkedHashSet<>(StepOne)); + List stepOne = new ArrayList<>(); + for (String s : creatorUris) { stepOne.add(s.trim());} + List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); List identifiers = new ArrayList<>(); List creator = new ArrayList<>(); - for (String s : StepTwo){ + for (String s : stepTwo){ params.put("URI", s); From acab7af927ee49b175027db5c00c4169e7a9c18f Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 10:56:54 +0100 Subject: [PATCH 03/12] feature : sonar issues --- src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 9df6f50c..d2a27050 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -492,7 +492,7 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti private List getCreator(List creatorUris) throws RmesException { List stepOne = new ArrayList<>(); - for (String s : creatorUris) { stepOne.add(s.trim());} + for (String s : creatorUris) { stepOne.add(s.trim());} List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); List identifiers = new ArrayList<>(); From 91a465a2504c923d673779fd32243df579bb3942 Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 11:22:35 +0100 Subject: [PATCH 04/12] feature : Sonar issues --- .../insee/rmes/services/datasets/DataSetsImpl.java | 2 +- .../rmes/services/datasets/DataSetsImplTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index d2a27050..9df6f50c 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -492,7 +492,7 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti private List getCreator(List creatorUris) throws RmesException { List stepOne = new ArrayList<>(); - for (String s : creatorUris) { stepOne.add(s.trim());} + for (String s : creatorUris) { stepOne.add(s.trim());} List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); List identifiers = new ArrayList<>(); diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index d6323071..7cad12d2 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -44,6 +44,18 @@ class DataSetsImplTest { RepositoryGestion repoGestion; public static final ObjectMapper MAPPER = new JsonMapper(); + + @Test + void shouldReturnlabelInformation() { + + List myList = dataSetsImpl.constructLangContent("elementLg1","elementLg2"); + IdLabel expected= new IdLabel("2025",myList); + IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1","elementLg2"); + assertEquals(expected.toString(),actual.toString()); + + } + + @Test void getListDataSetsTest() throws RmesException, JsonProcessingException { JSONArray mockJSON = new JSONArray(DataSetsUtilsTest.DATA_SET_LIST); From 3ee8ada21b7f7a55837064914f1b80357f256a41 Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 11:38:54 +0100 Subject: [PATCH 05/12] feature : Sonar issues --- .../services/datasets/DataSetsImplTest.java | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index 7cad12d2..724faedb 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -46,16 +46,43 @@ class DataSetsImplTest { @Test - void shouldReturnlabelInformation() { - + void shouldReturnLabelInformation() { List myList = dataSetsImpl.constructLangContent("elementLg1","elementLg2"); IdLabel expected= new IdLabel("2025",myList); IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1","elementLg2"); assertEquals(expected.toString(),actual.toString()); + } + + @Test + void shouldConstructLangContent1() { + List actual = dataSetsImpl.constructLangContent1("elementLg1"); + List expected= List.of(LangContent.lg1("elementLg1")); + assertEquals(expected,actual); + } + + @Test + void shouldConstructLangContent2() { + List actual = dataSetsImpl.constructLangContent2("elementLg2"); + List expected= List.of(LangContent.lg2("elementLg2")); + assertEquals(expected,actual); + } + + @Test + void shouldReturnStepsOfGetCreator() { + List creatorUris = List.of(" Insee ","Ined ","Ine d","Ined"); + List stepOne = new ArrayList<>(); + for (String s : creatorUris) { stepOne.add(s.trim());} + List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); + + boolean responseOne = stepOne.equals(List.of("Insee", "Ined", "Ine d", "Ined")); + boolean responseTwo = stepTwo.toString().equals("[Insee, Ined, Ine d]"); + + assertTrue(responseOne&responseTwo); } + @Test void getListDataSetsTest() throws RmesException, JsonProcessingException { JSONArray mockJSON = new JSONArray(DataSetsUtilsTest.DATA_SET_LIST); From b306e9a7b5b8445ecbfc018bff4e712a7c3088db Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 11:57:57 +0100 Subject: [PATCH 06/12] feature : sonar issues --- .../rmes/services/datasets/DataSetsImpl.java | 1 - .../services/datasets/DataSetsImplTest.java | 31 +++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 9df6f50c..55b23a1a 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -24,7 +24,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; - import java.util.*; @Service diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index 724faedb..5e838d04 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -46,13 +46,34 @@ class DataSetsImplTest { @Test - void shouldReturnLabelInformation() { - List myList = dataSetsImpl.constructLangContent("elementLg1","elementLg2"); - IdLabel expected= new IdLabel("2025",myList); + void shouldReturnLabelInformationOne() { IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1","elementLg2"); + IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent("elementLg1","elementLg2")); assertEquals(expected.toString(),actual.toString()); } + @Test + void shouldReturnLabelInformationTwo() { + IdLabel actual = dataSetsImpl.labelInformation("2025","",""); + IdLabel expected= new IdLabel("2025", null); + assertEquals(expected.toString(),actual.toString()); + } + + @Test + void shouldReturnLabelInformationThree() { + IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1",""); + IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent1("elementLg1")); + assertEquals(expected.toString(),actual.toString()); + } + + @Test + void shouldReturnLabelInformationFour() { + IdLabel actual = dataSetsImpl.labelInformation("2025","","elementLg2"); + IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent2("elementLg2")); + assertEquals(expected.toString(),actual.toString()); + } + + @Test void shouldConstructLangContent1() { List actual = dataSetsImpl.constructLangContent1("elementLg1"); @@ -67,18 +88,16 @@ void shouldConstructLangContent2() { assertEquals(expected,actual); } + @Test void shouldReturnStepsOfGetCreator() { List creatorUris = List.of(" Insee ","Ined ","Ine d","Ined"); List stepOne = new ArrayList<>(); for (String s : creatorUris) { stepOne.add(s.trim());} List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); - boolean responseOne = stepOne.equals(List.of("Insee", "Ined", "Ine d", "Ined")); boolean responseTwo = stepTwo.toString().equals("[Insee, Ined, Ine d]"); - assertTrue(responseOne&responseTwo); - } From bd02cdb62c01af7d34905437eea843977e52aafb Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 12:02:26 +0100 Subject: [PATCH 07/12] feature : Sonar issues --- src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java | 2 +- .../java/fr/insee/rmes/services/datasets/DataSetsImplTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 55b23a1a..716bd6a0 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -25,7 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; import java.util.*; - + @Service public class DataSetsImpl extends RdfService implements DataSetsServices { diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index 5e838d04..23171cd3 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -97,7 +97,7 @@ void shouldReturnStepsOfGetCreator() { List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); boolean responseOne = stepOne.equals(List.of("Insee", "Ined", "Ine d", "Ined")); boolean responseTwo = stepTwo.toString().equals("[Insee, Ined, Ine d]"); - assertTrue(responseOne&responseTwo); + assertTrue(responseOne && responseTwo); } From e1b64b0ad8b0feb636a08d9a0b3f41eee4ef56a6 Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 14:06:22 +0100 Subject: [PATCH 08/12] feature : Sonar issues --- .../rmes/services/datasets/DataSetsImpl.java | 8 +++---- .../services/datasets/DataSetsImplTest.java | 24 ++++++++++++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 716bd6a0..ed969489 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -24,8 +24,9 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; + import java.util.*; - + @Service public class DataSetsImpl extends RdfService implements DataSetsServices { @@ -375,9 +376,7 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb reponse.setSpatialResolution(spatialResolutionList); } } - - - + @Override public String getDataSetByIDSummary(String id) throws RmesException, JsonProcessingException { //parametrage de la requête @@ -388,7 +387,6 @@ public String getDataSetByIDSummary(String id) throws RmesException, JsonProcess JSONObject dataSetId = repoGestion.getResponseAsObject(buildRequest(Constants.DATASETS_QUERIES_PATH+DATASET_BY_ID_PATH, "getDataSetByIDSummary.ftlh", params)); if (dataSetId.has("id")) { DataSet dataSet = objectMapper.readValue(dataSetId.toString(), DataSet.class); - Id id1 = new Id(dataSet.getId()); Uri uri = new Uri(dataSet.getUri()); Modified modified = new Modified(dataSet.getDateMiseAJour()); diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index 23171cd3..9783013b 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; import fr.insee.rmes.dto.datasets.PatchDatasetDTO; -import fr.insee.rmes.model.datasets.Theme; +import fr.insee.rmes.model.datasets.*; import fr.insee.rmes.modelSwagger.dataset.*; import fr.insee.rmes.persistence.RepositoryGestion; import fr.insee.rmes.services.utils.DataSetsUtilsTest; @@ -44,6 +44,28 @@ class DataSetsImplTest { RepositoryGestion repoGestion; public static final ObjectMapper MAPPER = new JsonMapper(); + @Test + void shouldGetDataSetBySummary() throws JsonProcessingException { + + JSONObject dataSetId = new JSONObject(); + dataSetId.put("id","ID"); + dataSetId.put("uri","URI"); + dataSetId.put("dateMiseAJour","today"); + + DataSetModelSwagger dataSetModelSwagger = null; + + if (dataSetId.has("id")) { + ObjectMapper objectMapper = new ObjectMapper(); + DataSet dataSet = objectMapper.readValue(dataSetId.toString(), DataSet.class); + Id id1 = new Id(dataSet.getId()); + Uri uri = new Uri(dataSet.getUri()); + Modified modified = new Modified(dataSet.getDateMiseAJour()); + dataSetModelSwagger = new DataSetModelSwagger(id1, uri, modified); + } + assertFalse(dataSetModelSwagger == null); + } + + @Test void shouldReturnLabelInformationOne() { From e8d722cbdfbf011e3f332a51c8c19694598a368f Mon Sep 17 00:00:00 2001 From: SM Date: Wed, 19 Mar 2025 14:09:55 +0100 Subject: [PATCH 09/12] feature : Sonar issues --- src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java | 2 +- .../java/fr/insee/rmes/services/datasets/DataSetsImplTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index ed969489..d9567e5b 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -376,7 +376,7 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb reponse.setSpatialResolution(spatialResolutionList); } } - + @Override public String getDataSetByIDSummary(String id) throws RmesException, JsonProcessingException { //parametrage de la requête diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index 9783013b..a9aa2eb1 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -62,7 +62,7 @@ void shouldGetDataSetBySummary() throws JsonProcessingException { Modified modified = new Modified(dataSet.getDateMiseAJour()); dataSetModelSwagger = new DataSetModelSwagger(id1, uri, modified); } - assertFalse(dataSetModelSwagger == null); + assertNotNull(dataSetModelSwagger); } From 08c085745ccf83d4c9f451157172e4143f2052b7 Mon Sep 17 00:00:00 2001 From: SM Date: Mon, 24 Mar 2025 15:43:32 +0100 Subject: [PATCH 10/12] feature : Improve code quality --- .../rmes/services/datasets/DataSetsImpl.java | 28 ++++++------ .../services/datasets/DataSetsImplTest.java | 44 ++----------------- 2 files changed, 17 insertions(+), 55 deletions(-) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index d9567e5b..7864ee95 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -152,19 +152,19 @@ protected DataSetModelSwagger findDataSetModelSwagger(String id) throws RmesExce } } - protected IdLabel labelInformation(String id,String string1,String string2){ + protected IdLabel labelInformation(String id,String label1,String label2){ List listOfLangContent = null; - if( string1.isEmpty() && !string2.isEmpty()){ - listOfLangContent = constructLangContent2(string2); + if( label1.isEmpty() && !label2.isEmpty()){ + listOfLangContent = constructLangContent2(label2); } - if( !string1.isEmpty() && string2.isEmpty()){ - listOfLangContent = constructLangContent1(string1); + if( !label1.isEmpty() && label2.isEmpty()){ + listOfLangContent = constructLangContent1(label1); } - if( !string1.isEmpty() && !string2.isEmpty()){ - listOfLangContent = constructLangContent(string1,string2); + if( !label1.isEmpty() && !label2.isEmpty()){ + listOfLangContent = constructLangContent(label1,label2); } return new IdLabel(id,listOfLangContent); @@ -230,9 +230,9 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb //récupération de publisher if (organisations_result.has("idPublisher")) { String id = organisations_result.getString("idPublisher"); - String string1 =organisations_result.getString("labelPublisherLg1"); - String string2 =organisations_result.getString("labelPublisherLg2"); - reponse.setPublisher(labelInformation(id,string1,string2)); + String label1 =organisations_result.getString("labelPublisherLg1"); + String label2 =organisations_result.getString("labelPublisherLg2"); + reponse.setPublisher(labelInformation(id,label1,label2)); } //récupération de type @@ -488,14 +488,14 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti private List getCreator(List creatorUris) throws RmesException { - List stepOne = new ArrayList<>(); - for (String s : creatorUris) { stepOne.add(s.trim());} - List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); + List listStepOne = new ArrayList<>(); + for (String s : creatorUris) { listStepOne.add(s.trim());} + List listStepTwo = new ArrayList<>(new LinkedHashSet<>(listStepOne)); List identifiers = new ArrayList<>(); List creator = new ArrayList<>(); - for (String s : stepTwo){ + for (String s : listStepTwo){ params.put("URI", s); diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index a9aa2eb1..adf0c52f 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -65,51 +65,20 @@ void shouldGetDataSetBySummary() throws JsonProcessingException { assertNotNull(dataSetModelSwagger); } - - @Test - void shouldReturnLabelInformationOne() { + void shouldReturnIdLabelFromTwoStrings() { IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1","elementLg2"); IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent("elementLg1","elementLg2")); assertEquals(expected.toString(),actual.toString()); } @Test - void shouldReturnLabelInformationTwo() { + void shouldReturnIdLabelFromTwoNullStrings() { IdLabel actual = dataSetsImpl.labelInformation("2025","",""); IdLabel expected= new IdLabel("2025", null); assertEquals(expected.toString(),actual.toString()); } - @Test - void shouldReturnLabelInformationThree() { - IdLabel actual = dataSetsImpl.labelInformation("2025","elementLg1",""); - IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent1("elementLg1")); - assertEquals(expected.toString(),actual.toString()); - } - - @Test - void shouldReturnLabelInformationFour() { - IdLabel actual = dataSetsImpl.labelInformation("2025","","elementLg2"); - IdLabel expected= new IdLabel("2025", dataSetsImpl.constructLangContent2("elementLg2")); - assertEquals(expected.toString(),actual.toString()); - } - - - @Test - void shouldConstructLangContent1() { - List actual = dataSetsImpl.constructLangContent1("elementLg1"); - List expected= List.of(LangContent.lg1("elementLg1")); - assertEquals(expected,actual); - } - - @Test - void shouldConstructLangContent2() { - List actual = dataSetsImpl.constructLangContent2("elementLg2"); - List expected= List.of(LangContent.lg2("elementLg2")); - assertEquals(expected,actual); - } - @Test void shouldReturnStepsOfGetCreator() { @@ -123,7 +92,6 @@ void shouldReturnStepsOfGetCreator() { } - @Test void getListDataSetsTest() throws RmesException, JsonProcessingException { JSONArray mockJSON = new JSONArray(DataSetsUtilsTest.DATA_SET_LIST); @@ -287,9 +255,6 @@ void getDataSetByIDDateMiseAJourFalse_shouldReturn404IfInexistentId() throws Rme .hasMessageContaining("Non existent dataset identifier"); } - - - @Test void getDataSetByIDDateMiseAJour_shouldReturn404IfInexistentId() throws RmesException { JSONObject mockJSON = new JSONObject(ResponseUtilsTest.EMPTY_JSON_OBJECT); @@ -300,7 +265,6 @@ void getDataSetByIDDateMiseAJour_shouldReturn404IfInexistentId() throws RmesExce .hasMessageContaining("Non existent dataset identifier"); } - @Test void patchDataset_shouldReturn400() { assertThatThrownBy(() -> dataSetsImpl.patchDataset("jdtest", new PatchDatasetDTO(null, null, null, null, null), ResponseUtilsTest.FAKE_TOKEN, empty())).isInstanceOf(RuntimeException.class) @@ -328,8 +292,6 @@ void testConstructLangContentList(){ assertThat(actual_1).isEqualTo(expected_1); assertThat(actual_2).isEqualTo(expected_2); - } - - + } \ No newline at end of file From d8bdd2feecc65b9edc141751842b285b986e435c Mon Sep 17 00:00:00 2001 From: SM Date: Tue, 25 Mar 2025 15:51:01 +0100 Subject: [PATCH 11/12] feature : improve method getCreator --- .../rmes/services/datasets/DataSetsImpl.java | 30 +++++++++---------- .../getDatasetById/getDataSetByIdCreator.ftlh | 8 ++--- .../getDataSetByIdCreatorInformation.ftlh | 14 +++++++++ .../services/datasets/DataSetsImplTest.java | 12 ++++---- 4 files changed, 38 insertions(+), 26 deletions(-) create mode 100644 src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreatorInformation.ftlh diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 7864ee95..0b9f8c9b 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -179,8 +179,11 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb } //récupération de la liste de creators if (!catalogue_result.optString("creators").isEmpty()){ - List creatorUris = List.of(catalogue_result.getString("creators").split(",")); - List creator = getCreator(creatorUris); + String idCatalogResult = catalogue_result.getString("id"); + params.put("ID",idCatalogResult ); + JSONObject creatorUrisSet = repoGestion.getResponseAsObject(buildRequest(Constants.DATASETS_QUERIES_PATH+DATASET_BY_ID_PATH, "getDataSetByIdCreatorInformation.ftlh", params)); + List creatorUris =List.of(creatorUrisSet.getString("names").split(",")); + List creator = getCreator(creatorUris,idCatalogResult); reponse.setCreator(creator); } //récupération du subtitle @@ -486,32 +489,29 @@ public Distributions[] getDataSetDistributionsById(String id) throws RmesExcepti return distributionReponse; } - private List getCreator(List creatorUris) throws RmesException { + private List getCreator(List creatorUris,String idCatalogue) throws RmesException { - List listStepOne = new ArrayList<>(); - for (String s : creatorUris) { listStepOne.add(s.trim());} - List listStepTwo = new ArrayList<>(new LinkedHashSet<>(listStepOne)); + List listCreatorUrisWithoutExternalSpace= new ArrayList<>(); + for (String s : creatorUris) {listCreatorUrisWithoutExternalSpace.add(s.trim());} + List listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(listCreatorUrisWithoutExternalSpace)); List identifiers = new ArrayList<>(); List creator = new ArrayList<>(); - for (String s : listStepTwo){ - - params.put("URI", s); - + for (String s : listWithoutDuplicates){ + params.put("CREATOR", s); + params.put("ID", idCatalogue); JSONObject creator_result = repoGestion.getResponseAsObject(buildRequest(Constants.DATASETS_QUERIES_PATH+DATASET_BY_ID_PATH, "getDataSetByIdCreator.ftlh", params)); String id = creator_result.getString("idCreator"); if(!identifiers.contains(id.trim())){ - String string1 = creator_result.getString("labelCreatorLg1"); - String string2 = creator_result.getString("labelCreatorLg2"); - creator.add(labelInformation(id.trim(),string1,string2)); + String labelCreatorLg1 = creator_result.getString("labelCreatorLg1"); + String labelCreatorLg2 = creator_result.getString("labelCreatorLg2"); + creator.add(labelInformation(id.trim(),labelCreatorLg1,labelCreatorLg2)); identifiers.add(id.trim()); } - } - return creator; } diff --git a/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreator.ftlh b/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreator.ftlh index 7cbda3bd..86eb57ac 100644 --- a/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreator.ftlh +++ b/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreator.ftlh @@ -1,16 +1,14 @@ SELECT DISTINCT ?creator ?labelCreatorLg1 ?labelCreatorLg2 ?idCreator -FROM <${DATASETS_GRAPH}> -FROM <${ORGANISATIONS_GRAPH}> -FROM <${ORGANISATIONS_GRAPH}/insee> WHERE { ?uri a dcat:CatalogRecord ; foaf:primaryTopic ?uriDataset . - ?uriDataset dcterms:identifier "${ID}" . + ?uriDataset dcterms:identifier '${ID}' . OPTIONAL{?uriDataset dcterms:creator ?creator . - ?creator dcterms:identifier ?idCreator . + ?creator dcterms:identifier ?idCreator. + ?creator dcterms:identifier '${CREATOR}'. ?creator skos:prefLabel ?labelCreatorLg1 . FILTER(lang(?labelCreatorLg1)= '${LG1}') . ?creator skos:prefLabel ?labelCreatorLg2 . diff --git a/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreatorInformation.ftlh b/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreatorInformation.ftlh new file mode 100644 index 00000000..dee7fae6 --- /dev/null +++ b/src/main/resources/queries/dataSets/getDatasetById/getDataSetByIdCreatorInformation.ftlh @@ -0,0 +1,14 @@ +SELECT DISTINCT (group_concat(distinct ?idCreator;separator=",") as ?names) + +WHERE { + ?uri a dcat:CatalogRecord ; + foaf:primaryTopic ?uriDataset . + ?uriDataset dcterms:identifier '${ID}' . + + OPTIONAL{?uriDataset dcterms:creator ?creator . + ?creator dcterms:identifier ?idCreator. + ?creator skos:prefLabel ?labelCreatorLg1 . + FILTER(lang(?labelCreatorLg1)= '${LG1}') . + ?creator skos:prefLabel ?labelCreatorLg2 . + FILTER(lang(?labelCreatorLg2)= '${LG2}') .} +} \ No newline at end of file diff --git a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java index adf0c52f..daadaf45 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -83,12 +83,12 @@ void shouldReturnIdLabelFromTwoNullStrings() { @Test void shouldReturnStepsOfGetCreator() { List creatorUris = List.of(" Insee ","Ined ","Ine d","Ined"); - List stepOne = new ArrayList<>(); - for (String s : creatorUris) { stepOne.add(s.trim());} - List stepTwo = new ArrayList<>(new LinkedHashSet<>(stepOne)); - boolean responseOne = stepOne.equals(List.of("Insee", "Ined", "Ine d", "Ined")); - boolean responseTwo = stepTwo.toString().equals("[Insee, Ined, Ine d]"); - assertTrue(responseOne && responseTwo); + List creatorUrisWithoutExternalSpaces = new ArrayList<>(); + for (String s : creatorUris) {creatorUrisWithoutExternalSpaces.add(s.trim());} + List deleteDuplicatesCreatorUris = new ArrayList<>(new LinkedHashSet<>(creatorUrisWithoutExternalSpaces)); + boolean correctDeletionOfSpaces = creatorUrisWithoutExternalSpaces.equals(List.of("Insee", "Ined", "Ine d", "Ined")); + boolean goodDuplicateRemoval = deleteDuplicatesCreatorUris .toString().equals("[Insee, Ined, Ine d]"); + assertTrue(correctDeletionOfSpaces && goodDuplicateRemoval); } From 67e6a601922927e5760671118472e95882317f1f Mon Sep 17 00:00:00 2001 From: Hugo <103732523+HugoBouttes@users.noreply.github.com> Date: Wed, 21 May 2025 13:20:51 +0200 Subject: [PATCH 12/12] fix : add missing "{" --- src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java index 80381431..7575cf2d 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -180,6 +180,7 @@ private void removeEmptyKeys(JSONObject jsonObject) { keys.remove(); } } + } protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONObject catalogue_result, JSONObject adms_result, JSONObject codes_result, JSONObject organisations_result, JSONObject structures_result) throws RmesException, JsonProcessingException {