From 0b9262eaba7323ec23c3e4e538a0df4bb1f499c8 Mon Sep 17 00:00:00 2001 From: "Yi (Alan) Wang" Date: Mon, 13 Nov 2017 17:11:45 -0800 Subject: [PATCH] Modify owners and compliance API exceptions (#858) --- .../dao/table/DatasetComplianceDao.java | 9 ++- .../java/wherehows/dao/view/OwnerViewDao.java | 5 +- .../app/controllers/api/v1/Dataset.java | 58 ++++++++++++------- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/wherehows-dao/src/main/java/wherehows/dao/table/DatasetComplianceDao.java b/wherehows-dao/src/main/java/wherehows/dao/table/DatasetComplianceDao.java index c88f64d353..f56de33dd8 100644 --- a/wherehows-dao/src/main/java/wherehows/dao/table/DatasetComplianceDao.java +++ b/wherehows-dao/src/main/java/wherehows/dao/table/DatasetComplianceDao.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.List; import java.util.Map; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import javax.persistence.EntityManagerFactory; import lombok.extern.slf4j.Slf4j; import wherehows.models.table.DsCompliance; @@ -50,7 +51,8 @@ public class DatasetComplianceDao extends BaseDao { return findBy(DsCompliance.class, "datasetId", datasetId); } - public DatasetCompliance getDatasetComplianceByDatasetId(int datasetId, String datasetUrn) throws IOException { + @Nullable + public DatasetCompliance getDatasetComplianceByDatasetId(int datasetId, @Nonnull String datasetUrn) throws Exception { return dsComplianceToDatasetCompliance(findComplianceById(datasetId)); } @@ -118,7 +120,8 @@ public class DatasetComplianceDao extends BaseDao { dsCompliance.setModifiedBy(actor); } - public DsComplianceSuggestion findComplianceSuggestionByUrn(@Nonnull String datasetUrn) { + @Nullable + public DsComplianceSuggestion findComplianceSuggestionByUrn(@Nonnull String datasetUrn) throws Exception { throw new UnsupportedOperationException("Compliance Suggestion not implemented."); } @@ -163,7 +166,7 @@ public class DatasetComplianceDao extends BaseDao { * @return DatasetCompliance * @throws IOException */ - public DatasetCompliance dsComplianceToDatasetCompliance(DsCompliance dsCompliance) throws IOException { + public DatasetCompliance dsComplianceToDatasetCompliance(@Nonnull DsCompliance dsCompliance) throws IOException { DatasetCompliance compliance = new DatasetCompliance(); compliance.setDatasetId(dsCompliance.getDatasetId()); compliance.setDatasetUrn(dsCompliance.getDatasetUrn()); diff --git a/wherehows-dao/src/main/java/wherehows/dao/view/OwnerViewDao.java b/wherehows-dao/src/main/java/wherehows/dao/view/OwnerViewDao.java index a35e914b4a..d9653c4d4d 100644 --- a/wherehows-dao/src/main/java/wherehows/dao/view/OwnerViewDao.java +++ b/wherehows-dao/src/main/java/wherehows/dao/view/OwnerViewDao.java @@ -16,6 +16,8 @@ package wherehows.dao.view; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import javax.persistence.EntityManagerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +45,8 @@ public class OwnerViewDao extends BaseViewDao { * @param datasetUrn String * @return List of DatasetOwner */ - public List getDatasetOwnersByUrn(String datasetUrn) { + @Nullable + public List getDatasetOwnersByUrn(@Nonnull String datasetUrn) throws Exception { Map params = new HashMap<>(); params.put("datasetUrn", datasetUrn); diff --git a/wherehows-frontend/app/controllers/api/v1/Dataset.java b/wherehows-frontend/app/controllers/api/v1/Dataset.java index 83b94edda6..44d8508834 100644 --- a/wherehows-frontend/app/controllers/api/v1/Dataset.java +++ b/wherehows-frontend/app/controllers/api/v1/Dataset.java @@ -307,21 +307,31 @@ public class Dataset extends Controller { return ok(result); } - public static Result getDatasetOwnersByID(int id) { - ObjectNode result = Json.newObject(); - + public static Promise getDatasetOwnersByID(int id) { + List owners = null; try { String urn = getDatasetUrnByIdOrCache(id); - result.set("owners", Json.toJson(OWNER_VIEW_DAO.getDatasetOwnersByUrn(urn))); - result.put("status", "ok"); + owners = OWNER_VIEW_DAO.getDatasetOwnersByUrn(urn); } catch (Exception e) { - Logger.warn("Failed to get owners: " + e.toString()); - result.put("status", "failed"); - result.put("message", "Error: " + e.getMessage()); + if (e.toString().contains("Response status 404")) { + JsonNode result = Json.newObject().put("status", "failed").put("msg", "Not found"); + return Promise.promise(() -> ok(result)); + } + + Logger.error("Fetch owners Error: ", e); + JsonNode result = + Json.newObject().put("status", "failed").put("error", "true").put("msg", "Fetch data Error: " + e.toString()); + return Promise.promise(() -> ok(result)); } - return ok(result); + if (owners == null) { + JsonNode result = Json.newObject().put("status", "failed").put("msg", "Not found"); + return Promise.promise(() -> ok(result)); + } + + JsonNode result = Json.newObject().put("status", "ok").set("owners", Json.toJson(owners)); + return Promise.promise(() -> ok(result)); } public static Result updateDatasetOwners(int id) { @@ -872,17 +882,23 @@ public class Dataset extends Controller { record = COMPLIANCE_DAO.getDatasetComplianceByDatasetId(datasetId, urn); } catch (Exception e) { - Logger.warn("Failed to get compliance: " + e.toString()); - JsonNode result = Json.newObject() - .put("status", "failed") - .put("error", "true") - .put("msg", "Fetch data Error: " + e.getMessage()); + if (e.toString().contains("Response status 404")) { + JsonNode result = Json.newObject().put("status", "failed").put("msg", "Not found"); + return Promise.promise(() -> ok(result)); + } + Logger.error("Fetch compliance Error: ", e); + JsonNode result = + Json.newObject().put("status", "failed").put("error", "true").put("msg", "Fetch data Error: " + e.toString()); + return Promise.promise(() -> ok(result)); + } + + if (record == null) { + JsonNode result = Json.newObject().put("status", "failed").put("msg", "Not found"); return Promise.promise(() -> ok(result)); } JsonNode result = Json.newObject().put("status", "ok").set("complianceInfo", Json.toJson(record)); - return Promise.promise(() -> ok(result)); } @@ -941,12 +957,14 @@ public class Dataset extends Controller { try { record = COMPLIANCE_DAO.findComplianceSuggestionByUrn(datasetUrn); } catch (Exception e) { - Logger.warn("Failed to get compliance suggestion: " + e.toString()); - JsonNode result = Json.newObject() - .put("status", "failed") - .put("error", "true") - .put("msg", "Fetch data Error: " + e.getMessage()); + if (e.toString().contains("Response status 404")) { + JsonNode result = Json.newObject().put("status", "failed").put("msg", "Not found"); + return Promise.promise(() -> ok(result)); + } + Logger.error("Fetch compliance suggestion Error: ", e); + JsonNode result = + Json.newObject().put("status", "failed").put("error", "true").put("msg", "Fetch data Error: " + e.toString()); return Promise.promise(() -> ok(result)); }