From bdbf09c7dca44733c6a0b15166c69122e9278af2 Mon Sep 17 00:00:00 2001 From: Loredana Liccardo Date: Wed, 9 Jul 2014 14:55:19 +0000 Subject: [PATCH] bug fixed and refactor of the code in GXTTreePanel, GxtBorderLayout, GWTdbManagerServiceImpl and FileModel classes git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/databases-manager-portlet@98529 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/datamodel/FileModel.java | 64 ++++- .../client/panels/GxtBorderLayoutPanel.java | 79 ++++-- .../client/panels/GxtTreePanel.java | 246 ++++++++++-------- .../server/GWTdbManagerServiceImpl.java | 2 +- 4 files changed, 246 insertions(+), 145 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/FileModel.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/FileModel.java index 6de2d3d..71263f8 100644 --- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/FileModel.java +++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/datamodel/FileModel.java @@ -13,12 +13,12 @@ public class FileModel extends BaseModelData implements Serializable { private static int ID = 0; // private int id; private boolean isExpanded = true; - // private boolean isSchema = false; // set to true value if the object has been managed calling rpc remote // methods private boolean isLoaded = false; - // private boolean isTable = false; + private boolean isTable = false; + private boolean isSchema = false; // set if the object is a database private boolean isDatabase = false; @@ -32,6 +32,9 @@ public class FileModel extends BaseModelData implements Serializable { // to keep track of the database type private String DatabaseType; + private String ResourceName = null; + private String DatabaseName = null; + public FileModel() { setId(); // setIsExpanded(true); @@ -83,25 +86,52 @@ public class FileModel extends BaseModelData implements Serializable { } + // // set if the object is a schema + // public void setIsSchema(boolean value) { + // + // set("isSchema", value); + // } + // + // public boolean isSchema() { + // return get("isSchema"); + // } + // set if the object is a schema public void setIsSchema(boolean value) { - set("isSchema", value); + // set("isSchema", value); + + isSchema = value; } public boolean isSchema() { - return get("isSchema"); + // return get("isSchema"); + + return isSchema; } + // // set if the object is a table + // public void setIsTable(boolean value) { + // + // set("isTable", value); + // } + // + // public boolean isTable() { + // + // return get("isTable"); + // } + // set if the object is a table public void setIsTable(boolean value) { - set("isTable", value); + // set("isTable", value); + isTable = value; } public boolean isTable() { - return get("isTable"); + // return get("isTable"); + return isTable; } public void setIsDatabase(boolean value) { @@ -156,6 +186,28 @@ public class FileModel extends BaseModelData implements Serializable { return this.DatabaseType; } + public void setResourceName(String value) { + + ResourceName = value; + + } + + public String getResourceName() { + return ResourceName; + + } + + public void setDatabaseName(String value) { + + DatabaseName = value; + + } + + public String getDatabaseName() { + return DatabaseName; + + } + @Override public boolean equals(Object obj) { if (obj != null && obj instanceof FileModel) { 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 55c12de..cd946d5 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 @@ -50,6 +50,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.MessageBoxEvent; +//class that represents the container of all components public class GxtBorderLayoutPanel extends ContentPanel { /* Create Root Logger */ @@ -62,11 +63,12 @@ public class GxtBorderLayoutPanel extends ContentPanel { private ContentPanel centerBottom; private GxtTreePanel treePanel; private GxtToolbarFunctionality toolbar; - private ArrayList parsedList; +// private ArrayList parsedList; private List listAttributes; - private List rows; +// private List rows; + //to manage events private HandlerManager eventBus = null; // RPC service @@ -204,23 +206,45 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.SEVERE, "Event received"); - int DepthSelectedItem = treePanel - .getTreeDepthSelectedItem(); +// int DepthSelectedItem = treePanel +// .getTreeDepthSelectedItem(); + + // System.out.println("GxtBorderLayoutPanel-> Depth: " // + DepthSelectedItem); // element name selected - String text = treePanel.getValue(); +// String text = treePanel.getValue(); // System.out // .println("GxtBorderLayoutPanel-> item selected: " // + text); + + + List data = treePanel.getTreePanel() + .getSelectionModel().getSelectedItems(); + + FileModel selectedItem = data.get(0); + + int DepthSelectedItem = treePanel.getTreeStore().getDepth(selectedItem); + + + + + String text = selectedItem.getName(); + rootLogger.log(Level.INFO, "item selected: " + text); +// toolbar.disableButtonOnToolbar(DepthSelectedItem, +// treePanel.getSelectedItemIsSchema()); + toolbar.disableButtonOnToolbar(DepthSelectedItem, - treePanel.getSelectedItemIsSchema()); + selectedItem.isSchema()); + + + if (DepthSelectedItem != 3) { @@ -230,10 +254,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { } - List data = treePanel.getTreePanel() - .getSelectionModel().getSelectedItems(); - - FileModel selectedItem = data.get(0); + if (DepthSelectedItem == 3) { // the item selected is a // database. @@ -244,8 +265,8 @@ public class GxtBorderLayoutPanel extends ContentPanel { // .getSelectionModel().getSelectedItems(); // FileModel selectedItem = data.get(0); - FileModel parent = treePanel.getTreeStore() - .getParent(selectedItem); +// FileModel parent = treePanel.getTreeStore() +// .getParent(selectedItem); // displayDBInfo(parent); @@ -377,11 +398,26 @@ public class GxtBorderLayoutPanel extends ContentPanel { // variable that keeps track of the managed event submitQueryEventManaged = false; + + + List data = treePanel.getTreePanel().getSelectionModel() + .getSelectedItems(); + FileModel selectedItem = data.get(0); // recover input data - LinkedHashMap dataDB = treePanel - .getInfoOnSelectedItem(); +// LinkedHashMap dataForSubmitQuery = treePanel +// .getInfoOnSelectedItem(); + + LinkedHashMap dataForSubmitQuery = new LinkedHashMap(); + + dataForSubmitQuery.put("ResourceName", selectedItem.getResourceName()); + dataForSubmitQuery.put("DatabaseName", selectedItem.getDatabaseName()); + + //print check +// System.out.println("ResourceName" + selectedItem.getResourceName()); +// +// System.out.println("DatabaseName" + selectedItem.getDatabaseName()); final SubmitQueryData dataQuery = toolbar.getSubmitQueryData(); @@ -392,10 +428,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { // force the "true" value for the readonly input. // determine the language - List data = treePanel.getTreePanel().getSelectionModel() - .getSelectedItems(); - FileModel selectedItem = data.get(0); - + String dialect; if (selectedItem.isDatabase()) { // the selected item is a database @@ -460,7 +493,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.INFO, "Dialect used for smart correction: " + language); - RPCservice.submitQuery(dataDB, dataQuery.getQuery(), true, + RPCservice.submitQuery(dataForSubmitQuery, dataQuery.getQuery(), true, dataQuery.getSmartCorrection(), language, new AsyncCallback>() { @@ -511,7 +544,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.SEVERE, "SUCCESS RPC submitQuery"); - rows = new ArrayList(); +// rows = new ArrayList(); // System.out.println("result size: " + result.size()); @@ -662,7 +695,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.SEVERE, "SUCCESS RPC sample"); - rows = new ArrayList(); +// rows = new ArrayList(); // System.out.println("result size: " + result.size()); @@ -795,7 +828,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.SEVERE, "SUCCESS RPC smartSample"); - rows = new ArrayList(); +// rows = new ArrayList(); // System.out.println("result size: " + result.size()); @@ -928,7 +961,7 @@ public class GxtBorderLayoutPanel extends ContentPanel { rootLogger.log(Level.SEVERE, "SUCCESS RPC randomSample"); - rows = new ArrayList(); +// rows = new ArrayList(); // System.out.println("result size: " + result.size()); diff --git a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java index d1c3cec..e0786e8 100644 --- a/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java +++ b/src/main/java/org/gcube/portlets/user/databasesmanager/client/panels/GxtTreePanel.java @@ -41,18 +41,18 @@ public class GxtTreePanel extends LayoutContainer { private String value = ""; private int treeDepthSelectedItem; - private boolean SelectedItemIsSchema = false; - - //the rpc remote service +// private boolean SelectedItemIsSchema = false; + + // the rpc remote service private GWTdbManagerServiceAsync RPCservice = null; // to keep track of information associated to a database - private LinkedHashMap dataDBInfo = null; +// private LinkedHashMap dataDBInfo = null; - private String ResourceNameSelected; - private String DatabaseNameSelected; - private String SchemaNameSelected; - private String TableNameSelected; +// private String ResourceNameSelected; +// private String DatabaseNameSelected; +// private String SchemaNameSelected; +// private String TableNameSelected; // to keep track of information associated to the selected item private LinkedHashMap infoOnSelectedItem; @@ -149,15 +149,15 @@ public class GxtTreePanel extends LayoutContainer { @Override public void selectionChanged( SelectionChangedEvent se) { - - //reset infromation at each selection - dataDBInfo = null; - ResourceNameSelected = null; - DatabaseNameSelected = null; - SchemaNameSelected = null; - TableNameSelected = null; - infoOnSelectedItem = null; - SelectedItemIsSchema = false; + + // reset infromation at each selection +// dataDBInfo = null; +// ResourceNameSelected = null; +// DatabaseNameSelected = null; +// SchemaNameSelected = null; +// TableNameSelected = null; +// infoOnSelectedItem = null; +// SelectedItemIsSchema = false; // the selected element List data = treePanel.getSelectionModel() @@ -170,6 +170,8 @@ public class GxtTreePanel extends LayoutContainer { // selected FileModel selectedItem = data.get(0); + + value = data.get(0).get("name"); @@ -182,7 +184,7 @@ public class GxtTreePanel extends LayoutContainer { // System.out.println("GxtTreePanel Depth: " // + store.getDepth(data.get(0))); - //get the depth level + // get the depth level treeDepthSelectedItem = store.getDepth(data.get(0)); // rootLogger.log(Level.INFO, @@ -191,8 +193,8 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.INFO, "selectedItem level depth: " + treeDepthSelectedItem); - - //get children number for the selected item + + // get children number for the selected item int numChildrenFolder = store.getChildCount(data.get(0)); @@ -201,11 +203,12 @@ public class GxtTreePanel extends LayoutContainer { setInfoOnSelectedItem(data.get(0)); - // check to make the RPC call only one time. The selected item has not loaded + // check to make the RPC call only one time. The + // selected item has not loaded if ((numChildrenFolder == 0) && (data.get(0).isLoaded() != true)) { - //to mask the tree panel + // to mask the tree panel treePanel.mask("Loading", "x-mask-loading"); // selectedItem.setIsSchema(false); @@ -215,30 +218,30 @@ public class GxtTreePanel extends LayoutContainer { // loadResources(data.get(0)); // break; - case 2: //the selected item is the resource + case 2: // the selected item is the resource // selectedItem.setIsSchema(false); loadDBInfo(data.get(0)); break; - case 3: //the selected item is a database + case 3: // the selected item is a database if (selectedItem.getDatabaseType().equals( ConstantsPortlet.POSTGRES)) { - //load schema for postgres database - + // load schema for postgres database + // selectedItem.setIsSchema(false); loadSchema(data.get(0)); } else { // System.out.println("database mysql: " + // data.get(0).getName() + // data.get(0).getDatabaseType()); - - //load tables for mysql database + + // load tables for mysql database loadTables(data.get(0)); } break; - case 4: //load tables for postgres database + case 4: // load tables for postgres database // selectedItem.setIsSchema(false); loadTables(data.get(0)); break; @@ -246,11 +249,11 @@ public class GxtTreePanel extends LayoutContainer { } } - else { - //if the selected item has already been been loaded - - setInfoOnSelectedItem(data.get(0)); - } + // else { + // //if the selected item has already been been loaded + // + // setInfoOnSelectedItem(data.get(0)); + // } // fire event when an item has been selected in the tree eventBus.fireEvent(new SelectedItemEvent()); @@ -260,7 +263,7 @@ public class GxtTreePanel extends LayoutContainer { } - //load the root + // load the root private void loadRootItemTree() throws Exception { // treePanel.mask("Loading", "x-mask-loading"); @@ -282,13 +285,13 @@ public class GxtTreePanel extends LayoutContainer { } - //get the tree depth - public int getTreeDepthSelectedItem() { +// // get the tree depth +// public int getTreeDepthSelectedItem() { +// +// return treeDepthSelectedItem; +// } - return treeDepthSelectedItem; - } - - //load resources + // load resources private void loadResources(final FileModel element, final GxtTreePanel tree) { // System.out.println("Start RPC - getResources"); @@ -363,7 +366,7 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.SEVERE, "End RPC - getResource"); } - //load information fo a database + // load information fo a database private void loadDBInfo(final FileModel element) { // System.out.println("Start RPC - getDBInfo"); @@ -512,7 +515,7 @@ public class GxtTreePanel extends LayoutContainer { FileModel child = new FileModel(DBName); - //set that the item is a database + // set that the item is a database child.setIsDatabase(true); child.setDBInfo(DBInfo); @@ -521,7 +524,8 @@ public class GxtTreePanel extends LayoutContainer { // rootLogger.log(Level.INFO, "DatabaseType: " + // DatabaseType); - //set the database type considering the driver infromation + // set the database type considering the driver + // infromation child.setDatabaseType(DatabaseType); children.add(child); @@ -560,8 +564,8 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.SEVERE, "End RPC - getDBInfo"); } - - //load schema + + // load schema private void loadSchema(final FileModel element) { @@ -633,6 +637,11 @@ public class GxtTreePanel extends LayoutContainer { // if (numChildrenFolder == 0) { + for (int i = 0; i < result.size(); i++) { + + element.setIsSchema(true); + } + addChildren(element, result); element.setIsLoaded(true); @@ -824,14 +833,14 @@ public class GxtTreePanel extends LayoutContainer { } else { for (int i = 0; i < result.size(); i++) { - - + + result.get(i).setIsTable(true); result.get(i).setIsExpanded(false); result.get(i).setIsLoaded(true); - result.get(i).setIsSchema(false); + // result.get(i).setIsSchema(false); // element.setIsLoaded(true); @@ -863,14 +872,14 @@ public class GxtTreePanel extends LayoutContainer { } - public boolean getSelectedItemIsSchema() { +// public boolean getSelectedItemIsSchema() { +// +// return SelectedItemIsSchema; +// } - return SelectedItemIsSchema; - } - - public LinkedHashMap getDataOnDB() { - return dataDBInfo; - } +// public LinkedHashMap getDataOnDB() { +// return dataDBInfo; +// } // public FileModel getSelectedItem(){ // @@ -891,34 +900,35 @@ public class GxtTreePanel extends LayoutContainer { } } - public String getResourceNameSelected() { +// public String getResourceNameSelected() { +// +// return ResourceNameSelected; +// +// } +// +// public String getDatabaseNameSelected() { +// +// return DatabaseNameSelected; +// +// } - return ResourceNameSelected; +// public String getSchemaNameSelected() { +// +// return SchemaNameSelected; +// +// } +// +// public String getTableNameSelected() { +// +// return TableNameSelected; +// +// } - } - - public String getDatabaseNameSelected() { - - return DatabaseNameSelected; - - } - - public String getSchemaNameSelected() { - - return SchemaNameSelected; - - } - - public String getTableNameSelected() { - - return TableNameSelected; - - } - - //set information (useful for the submitquery operation) for the selected item. The selected item can be a schema, a table and a database. + // set information (useful for the submitquery operation) for the selected + // item. The selected item can be a schema, a table and a database. private void setInfoOnSelectedItem(FileModel element) { - infoOnSelectedItem = new LinkedHashMap(); +// infoOnSelectedItem = new LinkedHashMap(); if ((treeDepthSelectedItem == 4) && (element.isSchema() == true)) { // the // selected @@ -927,25 +937,26 @@ public class GxtTreePanel extends LayoutContainer { // a // schema - rootLogger.log(Level.SEVERE, "setInfo for selected item schema"); - SelectedItemIsSchema = true; +// SelectedItemIsSchema = true; - // //recover schema name - // SchemaNameSelected = element.getName(); // recover database name FileModel database = store.getParent(element); - DatabaseNameSelected = database.getName(); + String DatabaseName = database.getName(); + // recover resource name FileModel resource = store.getParent(database); - ResourceNameSelected = resource.getName(); + String ResourceName = resource.getName(); + + element.setResourceName(ResourceName); + element.setDatabaseName(DatabaseName); - infoOnSelectedItem.put("ResourceName", ResourceNameSelected); - infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); +// infoOnSelectedItem.put("ResourceName", ResourceNameSelected); +// infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); } @@ -962,26 +973,27 @@ public class GxtTreePanel extends LayoutContainer { // mysql // type - // System.out.println("is a table"); - rootLogger.log(Level.SEVERE, "setInfo for selected item table"); // recover table name - TableNameSelected = element.getName(); +// TableNameSelected = element.getName(); // recover database name FileModel database = store.getParent(element); - DatabaseNameSelected = database.getName(); + String DatabaseName = database.getName(); // recover resource name FileModel resource = store.getParent(database); - ResourceNameSelected = resource.getName(); + String ResourceName = resource.getName(); + + element.setResourceName(ResourceName); + element.setDatabaseName(DatabaseName); - infoOnSelectedItem.put("ResourceName", ResourceNameSelected); - infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); +// infoOnSelectedItem.put("ResourceName", ResourceNameSelected); +// infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); // infoOnSelectedItem.put("SchemaName", ""); -// infoOnSelectedItem.put("TableName", TableNameSelected); + // infoOnSelectedItem.put("TableName", TableNameSelected); } else if (treeDepthSelectedItem == 5) { // the selected item is a table // so the database is @@ -992,51 +1004,55 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.SEVERE, "setInfo for selected item table"); // recover table name - TableNameSelected = element.getName(); +// TableNameSelected = element.getName(); // recover schema name FileModel schema = store.getParent(element); - SchemaNameSelected = schema.getName(); +// SchemaNameSelected = schema.getName(); // recover database name FileModel database = store.getParent(schema); - DatabaseNameSelected = database.getName(); + String DatabaseName = database.getName(); // recover resource name FileModel resource = store.getParent(database); - ResourceNameSelected = resource.getName(); + String ResourceName = resource.getName(); + + element.setResourceName(ResourceName); + element.setDatabaseName(DatabaseName); - infoOnSelectedItem.put("ResourceName", ResourceNameSelected); - infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); -// infoOnSelectedItem.put("SchemaName", SchemaNameSelected); -// infoOnSelectedItem.put("TableName", TableNameSelected); +// infoOnSelectedItem.put("ResourceName", ResourceNameSelected); +// infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); + // infoOnSelectedItem.put("SchemaName", SchemaNameSelected); + // infoOnSelectedItem.put("TableName", TableNameSelected); } else if (treeDepthSelectedItem == 3) { // the selected item is a // database - // System.out.println("is a database"); - rootLogger.log(Level.SEVERE, "setInfo for selected item database"); // recover database name - DatabaseNameSelected = element.getName(); + String DatabaseName = element.getName(); // recover resource name FileModel resource = store.getParent(element); - ResourceNameSelected = resource.getName(); - - infoOnSelectedItem.put("ResourceName", ResourceNameSelected); - infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); + String ResourceName = resource.getName(); + + element.setResourceName(ResourceName); + element.setDatabaseName(DatabaseName); +// infoOnSelectedItem.put("ResourceName", ResourceNameSelected); +// infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); } } - public LinkedHashMap getInfoOnSelectedItem() { - - return infoOnSelectedItem; - } +// // get information about the selected item +// public LinkedHashMap getInfoOnSelectedItem() { +// +// return infoOnSelectedItem; +// } public TreePanel getTreePanel() { return this.treePanel; 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 3c08803..47998a3 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 @@ -291,7 +291,7 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements FileModel obj = new FileModel(outputMap.get(String.valueOf(i))); - obj.setIsSchema(true); +// obj.setIsSchema(true); // obj.setIsLoaded(true);