diff --git a/pom.xml b/pom.xml
index 65bdbf87..99303154 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
fr.insee
Pogues-BO
jar
- 4.8.1
+ 4.8.2-SNAPSHOT
Pogues-Back-Office
diff --git a/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClient.java b/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClient.java
index 980f7709..9777176a 100644
--- a/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClient.java
+++ b/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClient.java
@@ -28,6 +28,8 @@ public interface EnoClient {
String getDDITOLunaticJSON(String inputAsString, Map params) throws URISyntaxException, IOException, EnoException;
String getDDITOXForms(String inputAsString) throws URISyntaxException, IOException, EnoException;
+
+ String getJSONPoguesToLunaticJson(String inputAsString, Map params) throws URISyntaxException, IOException, EnoException;
void getParameters () throws Exception;
diff --git a/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClientImpl.java b/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClientImpl.java
index 0d531170..b9038a38 100644
--- a/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClientImpl.java
+++ b/src/main/java/fr/insee/pogues/api/remote/eno/transforms/EnoClientImpl.java
@@ -15,7 +15,9 @@
import org.springframework.web.reactive.function.client.WebClientResponseException;
import org.springframework.web.util.UriComponentsBuilder;
+import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.util.Map;
@@ -29,7 +31,11 @@ public class EnoClientImpl implements EnoClient{
@Autowired
private WebClient webClient;
- private static final String BASE_PATH = "/questionnaire/DEFAULT";
+ private static String DEFAULT_CONTEXT = "DEFAULT";
+
+ private static final String DSFR_QUERY_PARAM = "dsfr";
+
+ private static final String BASE_PATH = "/questionnaire/" + DEFAULT_CONTEXT;
private static final String MODE = "CAWI";
public EnoClientImpl(WebClient webClient) {
@@ -63,7 +69,7 @@ public String getDDITOLunaticJSON(String inputAsString, Map para
MultiValueMap queryParams = new LinkedMultiValueMap<>();
String modePathParam = params.get("mode") != null ? params.get("mode").toString() : MODE;
String WSPath = BASE_PATH + "/lunatic-json/" + modePathParam;
- queryParams.add("dsfr", Boolean.TRUE.equals(params.get("dsfr")) ? "true" : "false");
+ queryParams.add(DSFR_QUERY_PARAM, Boolean.TRUE.equals(params.get("dsfr")) ? "true" : "false");
return callEnoApiWithParams(inputAsString, WSPath, queryParams);
}
@@ -72,6 +78,19 @@ public String getDDITOXForms(String inputAsString) throws EnoException, PoguesEx
return callEnoApi(inputAsString, BASE_PATH+"/xforms");
}
+ @Override
+ public String getJSONPoguesToLunaticJson(String inputAsString, Map params) throws URISyntaxException, IOException, EnoException {
+ log.info("getJSONPoguesToLunaticJson - started");
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ String modePathParam = params.get("mode") != null ? params.get("mode").toString() : MODE;
+ String WSPath = String.format("/questionnaire/pogues-2-lunatic/%s/%s",
+ DEFAULT_CONTEXT,
+ modePathParam);
+ log.info("WSPath : {} ",WSPath);
+ queryParams.add(DSFR_QUERY_PARAM, Boolean.TRUE.equals(params.get("dsfr")) ? "true" : "false");
+ return callEnoApiWithParams(inputAsString, WSPath, queryParams);
+ }
+
@Override
public String getDDIToODT (String inputAsString) throws EnoException, PoguesException {
return callEnoApi(inputAsString, BASE_PATH+"/fodt");
diff --git a/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSON.java b/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSON.java
new file mode 100644
index 00000000..29524708
--- /dev/null
+++ b/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSON.java
@@ -0,0 +1,6 @@
+package fr.insee.pogues.transforms.visualize.eno;
+
+import fr.insee.pogues.transforms.visualize.ModelTransformer;
+
+public interface PoguesJSONToLunaticJSON extends ModelTransformer {
+}
diff --git a/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSONImpl.java b/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSONImpl.java
new file mode 100644
index 00000000..7061e6a8
--- /dev/null
+++ b/src/main/java/fr/insee/pogues/transforms/visualize/eno/PoguesJSONToLunaticJSONImpl.java
@@ -0,0 +1,30 @@
+package fr.insee.pogues.transforms.visualize.eno;
+
+import fr.insee.pogues.api.remote.eno.transforms.EnoClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.Map;
+
+import static fr.insee.pogues.utils.IOStreamsUtils.inputStream2String;
+import static fr.insee.pogues.utils.IOStreamsUtils.string2BOAS;
+
+@Service
+public class PoguesJSONToLunaticJSONImpl implements PoguesJSONToLunaticJSON {
+
+ @Autowired
+ private EnoClient enoClient;
+
+ @Override
+ public ByteArrayOutputStream transform(InputStream inputStream, Map params, String surveyName) throws Exception {
+ String inputAsString = inputStream2String(inputStream);
+ String outputAsString = transform(inputAsString, params);
+ return string2BOAS(outputAsString);
+ }
+
+ private String transform(String inputAsString, Map params) throws Exception {
+ return enoClient.getJSONPoguesToLunaticJson(inputAsString, params);
+ }
+}
diff --git a/src/main/java/fr/insee/pogues/webservice/rest/VisualizeWithURI.java b/src/main/java/fr/insee/pogues/webservice/rest/VisualizeWithURI.java
index df9d80e5..91de4af0 100644
--- a/src/main/java/fr/insee/pogues/webservice/rest/VisualizeWithURI.java
+++ b/src/main/java/fr/insee/pogues/webservice/rest/VisualizeWithURI.java
@@ -5,6 +5,7 @@
import fr.insee.pogues.transforms.visualize.PoguesJSONToPoguesXML;
import fr.insee.pogues.transforms.visualize.eno.DDIToLunaticJSON;
import fr.insee.pogues.transforms.visualize.eno.DDIToXForms;
+import fr.insee.pogues.transforms.visualize.eno.PoguesJSONToLunaticJSON;
import fr.insee.pogues.transforms.visualize.eno.PoguesXMLToDDI;
import fr.insee.pogues.transforms.visualize.uri.LunaticJSONToUriQueen;
import fr.insee.pogues.transforms.visualize.uri.LunaticJSONToUriStromaeV2;
@@ -52,7 +53,7 @@ public class VisualizeWithURI {
XFormsToURIStromaeV1 xformToUri;
@Autowired
- DDIToLunaticJSON ddiToLunaticJSON;
+ PoguesJSONToLunaticJSON poguesJSONToLunaticJSON;
@Autowired
LunaticJSONToUriQueen lunaticJSONToUriQueen;
@@ -69,8 +70,6 @@ public class VisualizeWithURI {
@Autowired
SuggesterVisuService suggesterVisuService;
- private static final String CONTENT_DISPOSITION = HttpHeaders.CONTENT_DISPOSITION;
-
@PostMapping(path = "visualize/{dataCollection}/{questionnaire}", consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get visualization URI from JSON serialized Pogues entity", description = "dataCollection MUST refer to the name attribute owned by the nested DataCollectionObject")
@io.swagger.v3.oas.annotations.parameters.RequestBody(description = "JSON representation of the Pogues Model")
@@ -108,9 +107,7 @@ public ResponseEntity visualizeCatiQueenFromBody(@RequestBody String req
URI uri;
ByteArrayOutputStream outputStream = pipeline.from(string2InputStream(request))
.map(jsonToJsonDeref::transform, params, questionnaireName.toLowerCase())
- .map(jsonToXML::transform, params, questionnaireName.toLowerCase())
- .map(poguesXMLToDDI::transform, params, questionnaireName.toLowerCase())
- .map(ddiToLunaticJSON::transform, params, questionnaireName.toLowerCase())
+ .map(poguesJSONToLunaticJSON::transform, params, questionnaireName.toLowerCase())
.transform();
uri = lunaticJSONToUriQueen.transform(output2Input(outputStream), params, questionnaireName.toLowerCase());
return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(uri.toString());
@@ -129,9 +126,7 @@ public ResponseEntity visualizeQueenFromBody(@RequestBody String request
URI uri;
ByteArrayOutputStream outputStream = pipeline.from(new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8)))
.map(jsonToJsonDeref::transform, params, questionnaireName.toLowerCase())
- .map(jsonToXML::transform, params, questionnaireName.toLowerCase())
- .map(poguesXMLToDDI::transform, params, questionnaireName.toLowerCase())
- .map(ddiToLunaticJSON::transform, params, questionnaireName.toLowerCase())
+ .map(poguesJSONToLunaticJSON::transform, params, questionnaireName.toLowerCase())
.transform();
uri = lunaticJSONToUriQueen.transform(output2Input(outputStream), params, questionnaireName.toLowerCase());
return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(uri.toString());
@@ -152,9 +147,7 @@ public ResponseEntity visualizeStromaeV2FromBody(@RequestBody String req
URI uri;
ByteArrayOutputStream outputStream = pipeline.from(string2InputStream(request))
.map(jsonToJsonDeref::transform, params, questionnaireName.toLowerCase())
- .map(jsonToXML::transform, params, questionnaireName.toLowerCase())
- .map(poguesXMLToDDI::transform, params, questionnaireName.toLowerCase())
- .map(ddiToLunaticJSON::transform, params, questionnaireName.toLowerCase())
+ .map(poguesJSONToLunaticJSON::transform, params, questionnaireName.toLowerCase())
.transform();
uri = lunaticJSONToUriStromaeV2.transform(output2Input(outputStream), params, questionnaireName.toLowerCase());
@@ -176,9 +169,7 @@ public ResponseEntity visualizeStromaeV3FromBody(@RequestBody String req
URI uri;
ByteArrayOutputStream outputStream = pipeline.from(string2InputStream(request))
.map(jsonToJsonDeref::transform, params, questionnaireName.toLowerCase())
- .map(jsonToXML::transform, params, questionnaireName.toLowerCase())
- .map(poguesXMLToDDI::transform, params, questionnaireName.toLowerCase())
- .map(ddiToLunaticJSON::transform, params, questionnaireName.toLowerCase())
+ .map(poguesJSONToLunaticJSON::transform, params, questionnaireName.toLowerCase())
.transform();
uri = lunaticJSONToUriStromaeV3.transform(output2Input(outputStream), params, questionnaireName.toLowerCase());
return ResponseEntity.status(HttpStatus.OK).contentType(MediaType.TEXT_PLAIN).body(uri.toString());