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 173d09e..6de2d3d 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 @@ -5,6 +5,7 @@ import java.util.List; import com.extjs.gxt.ui.client.data.BaseModelData; +//class that represents an item that will be displayed in the tree. The item can be a resource, a database, a schema and a table. public class FileModel extends BaseModelData implements Serializable { private static final long serialVersionUID = 1L; @@ -13,14 +14,22 @@ public class FileModel extends BaseModelData implements Serializable { // 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; + + // set if the object is a database private boolean isDatabase = false; + // to keep track information about the database private List DBInfo = null; private boolean isDBInfoDisplayed = false; + // to keep track information about the details of a table private List TableDetails = null; private boolean isTableDetailsDisplayed = false; + // to keep track of the database type private String DatabaseType; public FileModel() { @@ -36,7 +45,7 @@ public class FileModel extends BaseModelData implements Serializable { } public void setId() { - set("ID", this.ID++); + set("ID", ID++); } public int getId() { @@ -74,6 +83,7 @@ public class FileModel extends BaseModelData implements Serializable { } + // set if the object is a schema public void setIsSchema(boolean value) { set("isSchema", value); @@ -83,6 +93,7 @@ public class FileModel extends BaseModelData implements Serializable { return get("isSchema"); } + // set if the object is a table public void setIsTable(boolean value) { set("isTable", value); @@ -136,7 +147,7 @@ public class FileModel extends BaseModelData implements Serializable { } public void setDatabaseType(String value) { - + DatabaseType = value; } 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 7f5dd8e..d1c3cec 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 @@ -32,19 +32,21 @@ import com.google.gwt.user.client.rpc.AsyncCallback; public class GxtTreePanel extends LayoutContainer { - //to manage the tree + // to manage the tree private TreeStore store; private TreePanel treePanel; - //to manage events + // to manage events private HandlerManager eventBus = null; private String value = ""; private int treeDepthSelectedItem; private boolean SelectedItemIsSchema = false; + + //the rpc remote service private GWTdbManagerServiceAsync RPCservice = null; - //to keep track of innformation associated to a database + // to keep track of information associated to a database private LinkedHashMap dataDBInfo = null; private String ResourceNameSelected; @@ -52,10 +54,12 @@ public class GxtTreePanel extends LayoutContainer { private String SchemaNameSelected; private String TableNameSelected; + // to keep track of information associated to the selected item private LinkedHashMap infoOnSelectedItem; private static Logger rootLogger = Logger.getLogger("GxtTreePanel"); + // constructor public GxtTreePanel(HandlerManager eBus, GWTdbManagerServiceAsync service) throws Exception { @@ -115,7 +119,7 @@ public class GxtTreePanel extends LayoutContainer { // load the root loadRootItemTree(); - // Single selection Mode + // set single selection Mode treePanel.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); // select root item @@ -138,24 +142,21 @@ public class GxtTreePanel extends LayoutContainer { private void addListeners() { + // to manage the selection item event in the tree treePanel.getSelectionModel().addSelectionChangedListener( new SelectionChangedListener() { @Override public void selectionChanged( SelectionChangedEvent se) { - - // System.out.println("SelectionChangedListener"); - + + //reset infromation at each selection dataDBInfo = null; - ResourceNameSelected = null; DatabaseNameSelected = null; SchemaNameSelected = null; TableNameSelected = null; - infoOnSelectedItem = null; - SelectedItemIsSchema = false; // the selected element @@ -181,6 +182,7 @@ public class GxtTreePanel extends LayoutContainer { // System.out.println("GxtTreePanel Depth: " // + store.getDepth(data.get(0))); + //get the depth level treeDepthSelectedItem = store.getDepth(data.get(0)); // rootLogger.log(Level.INFO, @@ -189,6 +191,8 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.INFO, "selectedItem level depth: " + treeDepthSelectedItem); + + //get children number for the selected item int numChildrenFolder = store.getChildCount(data.get(0)); @@ -197,10 +201,11 @@ public class GxtTreePanel extends LayoutContainer { setInfoOnSelectedItem(data.get(0)); - // check to make the RPC call once + // 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 treePanel.mask("Loading", "x-mask-loading"); // selectedItem.setIsSchema(false); @@ -210,24 +215,30 @@ public class GxtTreePanel extends LayoutContainer { // loadResources(data.get(0)); // break; - case 2: + case 2: //the selected item is the resource // selectedItem.setIsSchema(false); loadDBInfo(data.get(0)); break; - case 3: + case 3: //the selected item is a database if (selectedItem.getDatabaseType().equals( ConstantsPortlet.POSTGRES)) { + //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()); + // System.out.println("database mysql: " + + // data.get(0).getName() + + // data.get(0).getDatabaseType()); + //load tables for mysql database + loadTables(data.get(0)); } break; - case 4: + case 4: //load tables for postgres database // selectedItem.setIsSchema(false); loadTables(data.get(0)); break; @@ -236,10 +247,12 @@ public class GxtTreePanel extends LayoutContainer { } else { + //if the selected item has already been been loaded + setInfoOnSelectedItem(data.get(0)); } - // fire event + // fire event when an item has been selected in the tree eventBus.fireEvent(new SelectedItemEvent()); } @@ -247,6 +260,7 @@ public class GxtTreePanel extends LayoutContainer { } + //load the root private void loadRootItemTree() throws Exception { // treePanel.mask("Loading", "x-mask-loading"); @@ -268,11 +282,13 @@ public class GxtTreePanel extends LayoutContainer { } + //get the tree depth public int getTreeDepthSelectedItem() { return treeDepthSelectedItem; } + //load resources private void loadResources(final FileModel element, final GxtTreePanel tree) { // System.out.println("Start RPC - getResources"); @@ -281,7 +297,7 @@ public class GxtTreePanel extends LayoutContainer { // "GxtTreePanel-> Start RPC - getResource"); rootLogger.log(Level.SEVERE, "Start RPC - getResource"); - // call remote service + // call rpc remote service RPCservice.getResource(new AsyncCallback>() { @@ -347,6 +363,7 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.SEVERE, "End RPC - getResource"); } + //load information fo a database private void loadDBInfo(final FileModel element) { // System.out.println("Start RPC - getDBInfo"); @@ -495,13 +512,16 @@ public class GxtTreePanel extends LayoutContainer { FileModel child = new FileModel(DBName); + //set that the item is a database child.setIsDatabase(true); child.setDBInfo(DBInfo); - - //check print -// rootLogger.log(Level.INFO, "DatabaseType: " + DatabaseType); + // check print + // rootLogger.log(Level.INFO, "DatabaseType: " + + // DatabaseType); + + //set the database type considering the driver infromation child.setDatabaseType(DatabaseType); children.add(child); @@ -540,6 +560,8 @@ public class GxtTreePanel extends LayoutContainer { rootLogger.log(Level.SEVERE, "End RPC - getDBInfo"); } + + //load schema private void loadSchema(final FileModel element) { @@ -592,8 +614,8 @@ public class GxtTreePanel extends LayoutContainer { // element.setIsSchema(false); // element.setIsLoaded(false); -// loadTables(element); - + // loadTables(element); + rootLogger.log(Level.INFO, "the database has not schema"); } else { @@ -688,68 +710,61 @@ public class GxtTreePanel extends LayoutContainer { // // System.out.println(element.getName()); // // } - - String resource=""; - String database=""; - String schema=""; - - - if (element.isDatabase()){ //the selected item is a database - - database= element.getName(); - resource=store.getParent(element).getName(); - - - + + String resource = ""; + String database = ""; + String schema = ""; + + if (element.isDatabase()) { // the selected item is a database + + database = element.getName(); + resource = store.getParent(element).getName(); + dataInput.put("ResourceName", resource); - dataInput.put("DatabaseName", database); + dataInput.put("DatabaseName", database); dataInput.put("SchemaName", ""); - - }else { //the selected item is a schema - + + } else { // the selected item is a schema + FileModel db = store.getParent(element); database = db.getName(); - + resource = store.getParent(db).getName(); schema = element.getName(); - + dataInput.put("ResourceName", resource); dataInput.put("DatabaseName", database); dataInput.put("SchemaName", schema); - -// dataInput.put("ResourceName", resource.getName()); -// dataInput.put("DatabaseName", database.getName()); -// dataInput.put("SchemaName", element.getName()); - - + + // dataInput.put("ResourceName", resource.getName()); + // dataInput.put("DatabaseName", database.getName()); + // dataInput.put("SchemaName", element.getName()); + } -// FileModel database = store.getParent(element); -// FileModel resource = store.getParent(database); -// -// dataInput.put("ResourceName", resource.getName()); -// dataInput.put("DatabaseName", database.getName()); - -// if (element.getDatabaseType().equals(ConstantsPortlet.POSTGRES)){ -// -// -// } -// else{ -// dataInput.put("SchemaName", ""); -// } - - + // FileModel database = store.getParent(element); + // FileModel resource = store.getParent(database); + // + // dataInput.put("ResourceName", resource.getName()); + // dataInput.put("DatabaseName", database.getName()); + + // if (element.getDatabaseType().equals(ConstantsPortlet.POSTGRES)){ + // + // + // } + // else{ + // dataInput.put("SchemaName", ""); + // } // System.out.println("schema name: " + element.getName()); -// rootLogger.log(Level.INFO, "ResourceName: " + resource.getName()); -// rootLogger.log(Level.INFO, "DatabaseName: " + database.getName()); -// rootLogger.log(Level.INFO, "SchemaName: " + element.getName()); - + // rootLogger.log(Level.INFO, "ResourceName: " + resource.getName()); + // rootLogger.log(Level.INFO, "DatabaseName: " + database.getName()); + // rootLogger.log(Level.INFO, "SchemaName: " + element.getName()); + rootLogger.log(Level.INFO, "ResourceName: " + resource); rootLogger.log(Level.INFO, "DatabaseName: " + database); rootLogger.log(Level.INFO, "SchemaName: " + schema); - // System.out.println(parent1.getName()); // System.out.println(parent.getName()); @@ -775,7 +790,7 @@ public class GxtTreePanel extends LayoutContainer { if (treePanel.isMasked()) treePanel.unmask(); - + element.setIsLoaded(true); } @@ -805,11 +820,12 @@ public class GxtTreePanel extends LayoutContainer { element.setIsExpanded(false); treePanel.setExpanded(element, false); - } else { for (int i = 0; i < result.size(); i++) { + + result.get(i).setIsExpanded(false); @@ -819,11 +835,11 @@ public class GxtTreePanel extends LayoutContainer { // element.setIsLoaded(true); - //ppritn check + // ppritn check // System.out.println(result.get(i).getName()); -// rootLogger.log(Level.INFO, "table: " -// + result.get(i).getName()); + // rootLogger.log(Level.INFO, "table: " + // + result.get(i).getName()); } @@ -899,6 +915,7 @@ public class GxtTreePanel extends LayoutContainer { } + //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(); @@ -910,8 +927,7 @@ public class GxtTreePanel extends LayoutContainer { // a // schema - // System.out.println("is a schema"); - + rootLogger.log(Level.SEVERE, "setInfo for selected item schema"); SelectedItemIsSchema = true; @@ -964,8 +980,8 @@ public class GxtTreePanel extends LayoutContainer { infoOnSelectedItem.put("ResourceName", ResourceNameSelected); infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); -// infoOnSelectedItem.put("SchemaName", ""); - infoOnSelectedItem.put("TableName", TableNameSelected); + // infoOnSelectedItem.put("SchemaName", ""); +// infoOnSelectedItem.put("TableName", TableNameSelected); } else if (treeDepthSelectedItem == 5) { // the selected item is a table // so the database is @@ -993,8 +1009,8 @@ public class GxtTreePanel extends LayoutContainer { infoOnSelectedItem.put("ResourceName", ResourceNameSelected); infoOnSelectedItem.put("DatabaseName", DatabaseNameSelected); - infoOnSelectedItem.put("SchemaName", SchemaNameSelected); - infoOnSelectedItem.put("TableName", TableNameSelected); +// infoOnSelectedItem.put("SchemaName", SchemaNameSelected); +// infoOnSelectedItem.put("TableName", TableNameSelected); } else if (treeDepthSelectedItem == 3) { // the selected item is a // database 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 439ae27..3c08803 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 @@ -457,6 +457,9 @@ public class GWTdbManagerServiceImpl extends RemoteServiceServlet implements inputParameters.get(0).setValue(dataDB.get("ResourceName")); inputParameters.get(1).setValue(dataDB.get("DatabaseName")); + + rootLogger.log(Level.INFO, "ResourceName " + dataDB.get("ResourceName")); + rootLogger.log(Level.INFO, "DatabaseName" + dataDB.get("DatabaseName")); inputParameters.get(2).setValue(String.valueOf(valueReadOnlyQuery)); inputParameters.get(3).setValue(String.valueOf(smartCorrectionQuery)); diff --git a/src/main/resources/org/gcube/portlets/user/databasesmanager/DatabasesManager.gwt.xml b/src/main/resources/org/gcube/portlets/user/databasesmanager/DatabasesManager.gwt.xml index ac35edb..51b719a 100644 --- a/src/main/resources/org/gcube/portlets/user/databasesmanager/DatabasesManager.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/databasesmanager/DatabasesManager.gwt.xml @@ -5,7 +5,7 @@ - + @@ -29,6 +29,6 @@ - +