From 115413471b0af3cf0d734ab3aa8fa680a8ec0d88 Mon Sep 17 00:00:00 2001
From: Baptiste Toulemonde <toulemonde@cines.fr>
Date: Mon, 18 Oct 2021 15:37:26 +0200
Subject: [PATCH] add endpoint to convert csw iso 19115 to rdf xml

---
 .../SmartHarvesterTransformerController.java  | 33 ++++++++++++++++
 .../service/MappingFromIsoService.java        | 39 +++++++++++++++++++
 2 files changed, 72 insertions(+)
 create mode 100644 src/main/java/com/smartharvester/controller/SmartHarvesterTransformerController.java
 create mode 100644 src/main/java/com/smartharvester/service/MappingFromIsoService.java

diff --git a/src/main/java/com/smartharvester/controller/SmartHarvesterTransformerController.java b/src/main/java/com/smartharvester/controller/SmartHarvesterTransformerController.java
new file mode 100644
index 0000000..8709a89
--- /dev/null
+++ b/src/main/java/com/smartharvester/controller/SmartHarvesterTransformerController.java
@@ -0,0 +1,33 @@
+package com.smartharvester.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.smartharvester.service.MappingFromIsoService;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+
+@CrossOrigin(origins = "*")
+@RequestMapping("/harvester/api/transform")
+@Tag(name = "Harvest",description = "transform xml iso 19115 to RDF")
+@RestController
+public class SmartHarvesterTransformerController {
+	
+	@Autowired
+	private MappingFromIsoService mappingService;
+	
+	@GetMapping
+	public ResponseEntity<String> transformXmlToRdf(@RequestParam  (value="url") String url, @RequestParam  (value="catalogId") String catalogId) {
+		try {
+			return ResponseEntity.ok().body(this.mappingService.mapfromCWStoRDF(url, catalogId));
+		} catch (Exception e) {
+			return ResponseEntity.badRequest().body("ERROR " +  e.getMessage());
+		}
+	}
+
+}
diff --git a/src/main/java/com/smartharvester/service/MappingFromIsoService.java b/src/main/java/com/smartharvester/service/MappingFromIsoService.java
new file mode 100644
index 0000000..fd732d3
--- /dev/null
+++ b/src/main/java/com/smartharvester/service/MappingFromIsoService.java
@@ -0,0 +1,39 @@
+package com.smartharvester.service;
+
+
+import java.io.StringWriter;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class MappingFromIsoService {
+
+	public String mapfromCWStoRDF(String url, String catalogId) throws Exception {
+
+		StreamSource xslt = new StreamSource("https://raw.githubusercontent.com/baptiste-Cines/tesXsl/master/test.xsl");
+
+		
+		StreamSource xml = new StreamSource(url);
+		TransformerFactory factory = TransformerFactory.newInstance();
+
+		Transformer transformer = factory.newTransformer(xslt);
+		transformer.setParameter("catalogId", catalogId);
+		transformer.setParameter("outputSchema", "extended");
+		
+		StringWriter writer = new StringWriter();
+		StreamResult result = new StreamResult(writer);
+		
+
+		transformer.transform(xml, result);
+		
+		
+		return writer.toString();
+	}
+	
+	
+
+}
-- 
GitLab