diff --git a/distro/changelog.xml b/distro/changelog.xml
index 206eada..8537775 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -77,6 +77,15 @@
top header in the portlet made invisible. GxtBorderLayout
class modified.
+
+ bug fixed in DatabasesResourcesManager component and related
+ to samplings operations and the related column values truncation.If
+ quote is truncated the parsecvsString in servlet does not work fine.
+ Row, GxtBorderLayoutPanel, GWTdbManagerServiceImpl,
+ GxtBorderLayoutPanel classes modified to manage in a correct way the
+ exception generated in class Row while parsing a csv row in a values
+ list for samplings operations.
+
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/Row.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/Row.java
index 6cd05f4..e849f28 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/Row.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/Row.java
@@ -16,7 +16,7 @@ public class Row extends BaseModelData implements Serializable {
public Row() {
}
- public Row(List attributes, List values, int index) {
+ public Row(List attributes, List values, int index) throws Exception{
set("index", index);
for (int i = 0; i < attributes.size(); i++) {
set(attributes.get(i), values.get(i));
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
index d80948d..71babcf 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtBorderLayoutPanel.java
@@ -1678,7 +1678,7 @@ public class GxtBorderLayoutPanel extends ContentPanel {
}
MessageBox.alert("Error ",
- "
Message:" + caught.getMessage(), null);
+ "
Message:Error in server while loading data. Exception: " + caught.getMessage(), null);
// if the submit query event has been performed the
// dialog form is unmasked otherwise if a sampling
diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java b/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
index 31ac3f1..dc24b22 100644
--- a/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/databasesmanager/server/GWTdbManagerServiceImpl.java
@@ -1457,30 +1457,38 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
if (isSessionExpired())
throw new SessionExpiredException();
- List rows = new ArrayList();
-
+ List rows = null;
+ try{
if (result != null) {
+ rows = new ArrayList();
for (int i = 0; i < result.size(); i++) {
List attrValues = parse(result.get(i).getValue());
Row element = new Row(attrNames, attrValues, i);
rows.add(element);
}
}
+
return rows;
+ } catch (Exception e) {
+ logger.error("dbmanager-> ", e);
+ throw new Exception(e);
+ }
}
private List parse(String row) throws Exception {
String delimiter = ",";
- // print check
- // logger.info("row: " + row);
-
List elements = new ArrayList();
+
+ try{
String phrase = row;
+// logger.info("row: " + phrase);
int idxdelim = -1;
boolean quot = false;
phrase = phrase.trim();
+
while ((idxdelim = phrase.indexOf(delimiter)) >= 0) {
+// logger.info("delimiter: " + idxdelim);
quot = phrase.startsWith("\"");
if (quot) {
phrase = phrase.substring(1);
@@ -1506,16 +1514,22 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements
elements.add(phrase.substring(0, idxdelim));
phrase = phrase.substring(idxdelim + 1).trim();
}
- // logger.info("server token: " + phrase);
+// logger.info("token: " + phrase);
}
- if (phrase.startsWith("\""))
+ if (phrase.startsWith("\"")){
phrase = phrase.substring(1);
+ }
- if (phrase.endsWith("\""))
- phrase = phrase.substring(0, phrase.length() - 1);
-
+ if (phrase.endsWith("\"")){
+ phrase = phrase.substring(0, phrase.length() - 1);}
+
elements.add(phrase);
- // logger.info("size: " + elements.size());
+// logger.info("server token: " + phrase);
+// logger.info("size: " + elements.size());
+ }catch (Exception e) {
+ logger.error("dbmanager-> ", e);
+ throw e;
+ }
return elements;
}