Skip to content
Snippets Groups Projects
Commit e17c9f78 authored by Baptiste Toulemonde's avatar Baptiste Toulemonde
Browse files

WIP

parent 98a1b5b9
No related branches found
No related tags found
1 merge request!18Feature/semantic enrichment
......@@ -2,10 +2,12 @@ package com.smartharvester.controller;
import com.smartharvester.model.mapping.Path;
import com.smartharvester.model.mapping.request.KeywordRequest;
import com.smartharvester.model.mapping.request.MappingRequest;
import com.smartharvester.model.mapping.response.MappingResponse;
import com.smartharvester.service.MappingFromIsoService;
import com.smartharvester.service.MappingService;
import com.smartharvester.service.OpenApiServiceImpl;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.json.JSONException;
import org.slf4j.Logger;
......@@ -36,6 +38,9 @@ public class SmartHarvesterMappingController {
@Autowired
private MappingService mappingService;
@Autowired
private OpenApiServiceImpl openApiService;
@GetMapping
public ResponseEntity<String> transformXmlToRdf(@RequestParam(value = "url") String url,
@RequestParam(value = "catalogId") String catalogId) {
......@@ -50,7 +55,7 @@ public class SmartHarvesterMappingController {
public ResponseEntity<MappingResponse> map(@RequestBody MappingRequest mappingRequest,
@RequestParam("catalogId") String catalogId, @RequestParam String fdpUrl, @RequestParam boolean isJsonpath) {
ResponseEntity<?> responseEntity;
List<String> urls = mappingRequest.getUrls();
List<String> ids = mappingRequest.getIds();
List<Path> paths = mappingRequest.getPaths();
String fdpToken = mappingRequest.getFdpToken();
List<String> publishedUrl = new ArrayList<>();
......@@ -58,6 +63,9 @@ public class SmartHarvesterMappingController {
List<Path> distributionPaths = paths.stream().filter(path -> path.getDcatClass().equals("dcat:distribution"))
.collect(Collectors.toList());
List<String> urls = new ArrayList<>();
ids.parallelStream().forEach(id -> urls.addAll(this.openApiService.getUrls(this.openApiService.getOpenApiByUUDI(catalogId), id)));
for (String url : urls) {
String datasetId;
......@@ -105,4 +113,15 @@ public class SmartHarvesterMappingController {
}
@PostMapping("/keywords")
public ResponseEntity<List<String>> getKeywords (@RequestBody KeywordRequest req) {
List<String> keywords = new ArrayList<>();
if (req.isJSonPath()) {
} else {
}
return ResponseEntity.ok(keywords);
}
}
package com.smartharvester.model.mapping.request;
import java.util.List;
public class KeywordRequest {
private boolean isJSonPath;
private List<String> keywordPaths;
public boolean isJSonPath() {
return isJSonPath;
}
public void setJSonPath(boolean JSonPath) {
isJSonPath = JSonPath;
}
public List<String> getKeywordPaths() {
return keywordPaths;
}
public void setKeywordPaths(List<String> keywordPaths) {
this.keywordPaths = keywordPaths;
}
}
......@@ -6,17 +6,17 @@ import java.util.List;
public class MappingRequest {
private List<String> urls;
private List<String> ids;
private List<Path> paths;
private String fdpToken;
public List<String> getUrls() {
return urls;
public List<String> getIds() {
return ids;
}
public void setUrls(List<String> urls) {
this.urls = urls;
public void setIds(List<String> ids) {
this.ids = ids;
}
public List<Path> getPaths() {
......
......@@ -7,9 +7,8 @@ import com.smartharvester.model.openapi.OpenApiPathItemParameter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
public class OpenApiServiceImpl implements OpenApiService {
......@@ -61,5 +60,74 @@ public class OpenApiServiceImpl implements OpenApiService {
openApiDaoRepository.save(openApi);
}
public List<String> getUrls(OpenApi openApi, String id) {
List<Map<String, OpenApiPathItem>> datasetItems =
(List<Map<String, OpenApiPathItem>>) this.getDatasetItems(openApi);
List<String> paths = this.getPaths(openApi);
List<String> urls = new ArrayList<>();
for (int i = 0; i < datasetItems.size(); i++) {
String url = "";
List<OpenApiPathItemParameter> parameters = datasetItems.get(i).get("get").getParameters();
Map<String, String> mapQueryParameters = new HashMap<>();
Map<String, String> mapPathParameters = new HashMap<>();
for(OpenApiPathItemParameter param: parameters) {
if (param.getRequired()) {
if(param.getIn().equals("query")) {
mapQueryParameters.put(param.getName(), id);
} else if (param.getIn().equals("path")){
paths.set(i, paths.get(i).replace("{" + param.getName() + "}", id));
}
} else {
if(param.getIn().equals("query")) {
mapQueryParameters.put(param.getName(), param.getSchema().getDefaultValue());
} else if (param.getIn().equals("path")){
mapPathParameters.put(param.getName(), param.getSchema().getDefaultValue());
}
}
}
String listOfParams = "?";
String pathParam = "";
for(Map.Entry<String, String> entry: mapQueryParameters.entrySet()) {
listOfParams = listOfParams.concat(entry.getKey() + "=" + entry.getValue() + "&");
}
for(Map.Entry<String, String> entry: mapPathParameters.entrySet()) {
pathParam += "/" + entry.getValue();
}
listOfParams = StringUtils.substring(listOfParams, 0, listOfParams.length() - 1);
url = this.getBaseUrl(openApi) + paths.get(i) + pathParam + listOfParams;
String pathToData = datasetItems.get(i).get("get").getResponses()
.get(datasetItems.get(i).get("get").getResponses().keySet().toArray()[0]).getContent()
.get("application/json").getExample();
urls.add(url);
}
return urls;
}
public Collection<Map<String, OpenApiPathItem>> getDatasetItems(OpenApi openApi) {
return openApi.getPaths().values().stream().filter(e -> e.get("get").getTags().get(0).equals("dataset"))
.collect(
Collectors.toList());
}
public List<String> getPaths(OpenApi openApi) {
List<String> paths = new ArrayList<>();
for (Map.Entry<String, Map<String, OpenApiPathItem>> mapEntry : openApi.getPaths().entrySet()) {
if (mapEntry.getValue().get("get").getTags().get(0).equals("dataset")) {
paths.add(mapEntry.getKey());
}
}
return paths;
}
public String getBaseUrl(OpenApi openApi) {
return openApi.getServers().get(0).getUrl();
}
}
......@@ -6,8 +6,8 @@ spring.jackson.serialization.indent-output=true
server.port=8080
# 3. MongoDB configuration.
spring.data.mongodb.uri=mongodb://admin:adminadmin@90.147.167.103:27017/fdp?authSource=admin
#spring.data.mongodb.uri=mongodb://admin:adminadmin@90.147.167.103:27017/fdp?authSource=admin
spring.data.mongodb.uri=mongodb://10.6.10.97:27017/fdp?authSource=admin
# 4. Logging configuration.
logging.level.com.assignment.springboot.mongo=DEBUG
......@@ -42,4 +42,4 @@ spring.security.oauth2.client.provider.oidc.issuer-uri=https://iam-pillar.cloud.
spring.security.oauth2.client.registration.oidc.client-id=a03a6ac2-acfe-4916-9d0f-db874ea94e75
spring.security.oauth2.client.registration.oidc.client-secret=cLONCJ8MccdHwobCEMSl_sYDJGKpmBxH16SyiRIBx8XeoDa2ZLwzTvF_aVoEeOt3h2sNbZqltRqhfHKeI3g7Dw
spring.security.oauth2.client.registration.oidc.scope=address,phone,openid,email,profile
spring.security.oauth2.client.registration.oidc.redirect-uri=http://localhost:4200/callback
\ No newline at end of file
spring.security.oauth2.client.registration.oidc.redirect-uri=http://localhost:4200/callback
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment