diff --git a/src/main/java/fr/insee/rmes/modelSwagger/dataset/DataSetModelSwagger.java b/src/main/java/fr/insee/rmes/modelSwagger/dataset/DataSetModelSwagger.java index 49c5ee2a..982d14c2 100644 --- a/src/main/java/fr/insee/rmes/modelSwagger/dataset/DataSetModelSwagger.java +++ b/src/main/java/fr/insee/rmes/modelSwagger/dataset/DataSetModelSwagger.java @@ -11,6 +11,7 @@ import jakarta.annotation.Generated; import jakarta.validation.Valid; import java.io.Serializable; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -195,4 +196,26 @@ public DataSetModelSwagger(Id id, List title, Uri uri, Modified mod this.validationState = validationState; this.themeModelSwaggerS = themeModelSwaggerS; } + + + public Id getIdWithTypeId(){ + Id id = new Id(this.id); + return id; + } + + public Uri getUriWithTypeUri(){ + Uri uri = new Uri(this.uri); + return uri; + } + + public void addKeyword(LangContent langContent) { + if (this.keyword == null) { + this.keyword = new ArrayList<>(); + this.keyword.add(langContent); + } + else { + this.keyword.add(langContent); + } + } + } 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 1bb563a1..3307a6b7 100644 --- a/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java +++ b/src/main/java/fr/insee/rmes/services/datasets/DataSetsImpl.java @@ -254,12 +254,22 @@ protected void testPresenceVariablePuisAjout(DataSetModelSwagger reponse, JSONOb } //récupération de keyword if (catalogue_result.has("keywordLg1") ){ - List keyword = constructLangContentList(catalogue_result.getString("keywordLg1"),Config.LG1); - reponse.setKeyword(keyword); + if (catalogue_result.getString("keywordLg1").length()>0){ + LangContent langContentLg1 = new LangContent(Config.LG1,catalogue_result.getString("keywordLg1")); + reponse.addKeyword(langContentLg1); + } + else { + catalogue_result.remove("keywordLg1"); + } } if (catalogue_result.has("keywordLg2") ){ - List keyword = constructLangContentList(catalogue_result.getString("keywordLg2"),Config.LG2); - reponse.setKeyword(keyword); + if (catalogue_result.getString("keywordLg2").length()>0){ + LangContent langContentLg2 = new LangContent(Config.LG2,catalogue_result.getString("keywordLg2")); + reponse.addKeyword(langContentLg2); + } + else { + catalogue_result.remove("keywordLg2"); + } } 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 a4d3bbc7..c8871257 100644 --- a/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java +++ b/src/test/java/fr/insee/rmes/services/datasets/DataSetsImplTest.java @@ -148,6 +148,46 @@ static void setUp() { Config.LG2 = "en"; } + @Test + void testPresenceVariablePuisAjout_Keywords() throws RmesException, JsonProcessingException { + DataSetModelSwagger dataSetModelSwaggerWith= new DataSetModelSwagger(); + + JSONObject empty = new JSONObject(); + HashMap mapWith = new HashMap<>(); + mapWith.put("keywordLg1", "contentFR"); + mapWith.put("keywordLg2", "contentEN"); + + JSONObject catalogueWithKeywords = new JSONObject(mapWith); + + dataSetsImpl.testPresenceVariablePuisAjout(dataSetModelSwaggerWith,catalogueWithKeywords,empty,empty,empty,empty); + + LangContent langContentLg1 = new LangContent("fr", "contentFR"); + LangContent langContentLg2 = new LangContent("en", "contentEN"); + ArrayList langContentsExpected = new ArrayList<>(); + langContentsExpected.add(langContentLg1); + langContentsExpected.add(langContentLg2); + + assertEquals(langContentsExpected,dataSetModelSwaggerWith.getKeyword()); + + } + + @Test + void testPresenceVariablePuisAjout_KeywordsVide() throws RmesException, JsonProcessingException { + DataSetModelSwagger dataSetModelSwaggerWithout= new DataSetModelSwagger(); + JSONObject empty = new JSONObject(); + + HashMap mapWithout = new HashMap<>(); + mapWithout.put("keywordLg1", ""); + mapWithout.put("keywordLg2", ""); + JSONObject catalogueWithoutKeywords = new JSONObject(mapWithout); + + dataSetsImpl.testPresenceVariablePuisAjout(dataSetModelSwaggerWithout,catalogueWithoutKeywords,empty,empty,empty,empty); + + assertEquals(null,dataSetModelSwaggerWithout.getKeyword()); + + } + + @Test void getDataSetByIDDateMiseAJourFalse_shouldReturn404IfInexistentId() throws RmesException { JSONObject mockJSON = new JSONObject(ResponseUtilsTest.EMPTY_JSON_OBJECT);