From cd4a2ebe8fcfed8cd47bc8e54de6b1f35ecb528e Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Fri, 16 Dec 2016 15:02:03 +0000 Subject: [PATCH] added url of the product to the result set of the methods get-catalogue-id-and-url-from-name (previously known as get-catalogue-id-from-name) git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/grsf-publisher-ws@140043 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../services/GrsfPublisherFisheryService.java | 21 ++++++++++++---- .../services/GrsfPublisherStockService.java | 24 ++++++++++++++----- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherFisheryService.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherFisheryService.java index d4b8240..064647f 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherFisheryService.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherFisheryService.java @@ -63,6 +63,8 @@ public class GrsfPublisherFisheryService { // Logger private static final org.slf4j.Logger logger = LoggerFactory.getLogger(GrsfPublisherFisheryService.class); + private static final String PRODUCT_URL_FIELD_KEY = "Product URL"; + @GET @Path("hello") @Produces(MediaType.TEXT_PLAIN) @@ -241,7 +243,7 @@ public class GrsfPublisherFisheryService { // add the "Product URL" to the field Map> addField = new HashMap>(); - addField.put("Product URL", Arrays.asList(productUrl)); + addField.put(PRODUCT_URL_FIELD_KEY, Arrays.asList(productUrl)); catalogue.patchProductCustomFields(id, apiKey, addField); if(!groups.isEmpty()){ @@ -412,9 +414,9 @@ public class GrsfPublisherFisheryService { } @GET - @Path("get-catalogue-id-from-name") + @Path("get-catalogue-id-and-url-from-name") @Produces(MediaType.APPLICATION_JSON) - public Response getCatalogueIdFromKBID( + public Response getCatalogueIdAndUrlFromKBID( @QueryParam("name") String name){ // retrieve context and username @@ -436,7 +438,18 @@ public class GrsfPublisherFisheryService { CkanDataset dataset = catalogue.getDataset(name, catalogue.getApiKeyFromUsername(username)); if(dataset != null){ - responseBean.setResult(dataset.getId()); + + Map result = new HashMap(); + result.put("id", dataset.getId()); + + // retrieve the product url + Map customFields = dataset.getExtrasAsHashMap(); + if(customFields.containsKey(PRODUCT_URL_FIELD_KEY)) + result.put("url", customFields.get(PRODUCT_URL_FIELD_KEY)); + else + result.put("url", catalogue.getUrlFromDatasetIdOrName(dataset.getId())); + + responseBean.setResult(result); responseBean.setSuccess(true); }else{ responseBean.setMessage("Unable to retrieve a catalogue product with name " + name); diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherStockService.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherStockService.java index 00afa4f..8741065 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherStockService.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/services/GrsfPublisherStockService.java @@ -63,6 +63,8 @@ public class GrsfPublisherStockService { // Logger private static final org.slf4j.Logger logger = LoggerFactory.getLogger(GrsfPublisherStockService.class); + private static final String PRODUCT_URL_FIELD_KEY = "Product URL"; + @GET @Path("hello") @Produces(MediaType.TEXT_PLAIN) @@ -231,7 +233,7 @@ public class GrsfPublisherStockService { // add the "Product URL" to the field Map> addField = new HashMap>(); - addField.put("Product URL", Arrays.asList(productUrl)); + addField.put(PRODUCT_URL_FIELD_KEY, Arrays.asList(productUrl)); catalogue.patchProductCustomFields(id, apiKey, addField); if(!groups.isEmpty()){ @@ -309,7 +311,7 @@ public class GrsfPublisherStockService { status = Status.BAD_REQUEST; throw new Exception("The specified source in the path is unrecognized. Values accepted are [ram, firms, fishsource, grsf]"); } - + logger.info("The request is to delete a stock object of source " + sourceInPath); // retrieve the catalogue instance @@ -400,9 +402,9 @@ public class GrsfPublisherStockService { } @GET - @Path("get-catalogue-id-from-name") + @Path("get-catalogue-id-and-url-from-name") @Produces(MediaType.APPLICATION_JSON) - public Response getCatalogueIdFromKBID( + public Response getCatalogueIdAndUrlFromKBID( @QueryParam("name") String name){ // retrieve context and username @@ -425,10 +427,20 @@ public class GrsfPublisherStockService { CkanDataset dataset = catalogue.getDataset(name, catalogue.getApiKeyFromUsername(username)); if(dataset != null){ - responseBean.setResult(dataset.getId()); + + Map result = new HashMap(); + result.put("id", dataset.getId()); + + // retrieve the product url + Map customFields = dataset.getExtrasAsHashMap(); + if(customFields.containsKey(PRODUCT_URL_FIELD_KEY)) + result.put("url", customFields.get(PRODUCT_URL_FIELD_KEY)); + else + result.put("url", catalogue.getUrlFromDatasetIdOrName(dataset.getId())); + + responseBean.setResult(result); responseBean.setSuccess(true); }else{ - status = Status.INTERNAL_SERVER_ERROR; responseBean.setMessage("Unable to retrieve a catalogue product with name " + name); }