From 927a4ad5e21c26e907eb13db0eee2c6618612bc3 Mon Sep 17 00:00:00 2001 From: "Yi (Alan) Wang" Date: Tue, 16 May 2017 16:49:57 -0700 Subject: [PATCH] Add frontend privacy API to combine compliance and security (#510) --- .../app/controllers/api/v1/Dataset.java | 72 +++++++++++++++++++ wherehows-api/conf/routes | 4 ++ 2 files changed, 76 insertions(+) diff --git a/wherehows-api/app/controllers/api/v1/Dataset.java b/wherehows-api/app/controllers/api/v1/Dataset.java index 2b48a7c08a..8dad5fb96f 100644 --- a/wherehows-api/app/controllers/api/v1/Dataset.java +++ b/wherehows-api/app/controllers/api/v1/Dataset.java @@ -962,4 +962,76 @@ public class Dataset extends Controller } return Promise.promise(() -> ok(Json.newObject().put("status", "ok"))); } + + public static Promise getDatasetPrivacy(int datasetId) { + DatasetCompliance complianceRecord = null; + try { + complianceRecord = DatasetsDAO.getDatasetComplianceByDatasetId(datasetId); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Fetch data Error: " + e.getMessage()); + + return Promise.promise(() -> ok(result)); + } + + DatasetSecurity securityRecord = null; + try { + securityRecord = DatasetsDAO.getDatasetSecurityByDatasetId(datasetId); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Fetch data Error: " + e.getMessage()); + + return Promise.promise(() -> ok(result)); + } + + ObjectNode result = Json.newObject().put("status", "ok"); + result.set("privacyCompliancePolicy", Json.toJson(complianceRecord)); + result.set("securitySpecification", Json.toJson(securityRecord)); + + return Promise.promise(() -> ok(result)); + } + + public static Promise updateDatasetPrivacy(int datasetId) { + String username = session("user"); + if (StringUtils.isBlank(username)) { + JsonNode result = + Json.newObject().put("status", "failed") + .put("error", "true") + .put("msg", "Unauthorized User."); + + return Promise.promise(() -> ok(result)); + } + + try { + DatasetsDAO.updateDatasetCompliancePolicy(datasetId, request().body().asJson().get("privacyCompliancePolicy")); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Update Compliance Policy Error: " + e.getMessage()); + + Logger.warn("Update Compliance Policy fail", e); + + return Promise.promise(() -> ok(result)); + } + + try { + DatasetsDAO.updateDatasetSecurityInfo(datasetId, request().body().asJson().get("securitySpecification")); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Update Security Specification Error: " + e.getMessage()); + + Logger.warn("Update Security Specification fail", e); + + return Promise.promise(() -> ok(result)); + } + + return Promise.promise(() -> ok(Json.newObject().put("status", "ok"))); + } } diff --git a/wherehows-api/conf/routes b/wherehows-api/conf/routes index ef2761d3e9..aade68d044 100644 --- a/wherehows-api/conf/routes +++ b/wherehows-api/conf/routes @@ -146,6 +146,10 @@ GET /api/v1/datasets/:id/security POST /api/v1/datasets/:id/security controllers.api.v1.Dataset.updateDatasetSecurity(id:Int) +GET /api/v1/datasets/:id/privacy controllers.api.v1.Dataset.getDatasetPrivacy(id:Int) + +POST /api/v1/datasets/:id/privacy controllers.api.v1.Dataset.updateDatasetPrivacy(id:Int) + GET /api/v1/urn/watch controllers.api.v1.Dataset.getWatchedUrnId() POST /api/v1/urn/watch controllers.api.v1.Dataset.watchURN()