From 2110d24e973fb83cec3e72d2140c01b604962517 Mon Sep 17 00:00:00 2001
From: Mirco Nasuti <mirco.nasuti@chuv.ch>
Date: Thu, 2 Nov 2017 11:46:48 +0100
Subject: [PATCH] Bugfix: variables/groups API when data cannot be found in DB

---
 src/main/java/eu/hbp/mip/controllers/GroupsApi.java   | 11 ++++++-----
 .../java/eu/hbp/mip/controllers/VariablesApi.java     | 10 +++++-----
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
index 8bdba0cc9..29aff6afb 100644
--- a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
@@ -56,12 +56,13 @@ public class GroupsApi {
         String sqlQuery = String.format(
                 "SELECT * FROM meta_variables where target_table='%s'", featuresMainTable.toUpperCase());
         SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
-        data.next();
-        String json = ((PGobject) data.getObject("hierarchy")).getValue();
-
-        JsonObject root = gson.fromJson(json, JsonObject.class);
-        removeVariablesRecursive(root);
 
+        JsonObject root = new JsonObject();
+        if (data.next()) {
+            String json = ((PGobject) data.getObject("hierarchy")).getValue();
+            root = gson.fromJson(json, JsonObject.class);
+            removeVariablesRecursive(root);
+        }
         return gson.toJson(root);
     }
 
diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
index 8664d5986..9138ec1b9 100644
--- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
@@ -140,13 +140,13 @@ public class VariablesApi {
         String sqlQuery = String.format(
                 "SELECT * FROM meta_variables where upper(target_table)='%s'", featuresMainTable.toUpperCase());
         SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
-        data.next();
-        String json = ((PGobject) data.getObject("hierarchy")).getValue();
-
-        JsonObject root = gson.fromJson(json, JsonObject.class);
 
         List<String> variables = new LinkedList<>();
-        extractVariablesRecursive(root, variables);
+        if (data.next()) {
+            String json = ((PGobject) data.getObject("hierarchy")).getValue();
+            JsonObject root = gson.fromJson(json, JsonObject.class);
+            extractVariablesRecursive(root, variables);
+        }
 
         return variables;
     }
-- 
GitLab