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; }