From c96b6cc551c7009dd8cfdb0f2adcf38245499192 Mon Sep 17 00:00:00 2001 From: Loredana Liccardo Date: Wed, 29 Oct 2014 15:59:36 +0000 Subject: [PATCH] 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. changelogfile modified. git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/databases-manager-portlet@101167 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 9 +++++ .../client/datamodel/Row.java | 2 +- .../client/panels/GxtBorderLayoutPanel.java | 2 +- .../server/GWTdbManagerServiceImpl.java | 36 +++++++++++++------ 4 files changed, 36 insertions(+), 13 deletions(-) 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; }