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
This commit is contained in:
Loredana Liccardo 2014-07-09 14:55:19 +00:00
parent ae5d05aa29
commit bdbf09c7dc
4 changed files with 246 additions and 145 deletions

View File

@ -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) {

View File

@ -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<String> parsedList;
// private ArrayList<String> parsedList;
private List<String> listAttributes;
private List<Row> rows;
// private List<Row> 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<FileModel> 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<FileModel> 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<FileModel> data = treePanel.getTreePanel().getSelectionModel()
.getSelectedItems();
FileModel selectedItem = data.get(0);
// recover input data
LinkedHashMap<String, String> dataDB = treePanel
.getInfoOnSelectedItem();
// LinkedHashMap<String, String> dataForSubmitQuery = treePanel
// .getInfoOnSelectedItem();
LinkedHashMap<String, String> dataForSubmitQuery = new LinkedHashMap<String, String>();
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<FileModel> 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<List<Result>>() {
@ -511,7 +544,7 @@ public class GxtBorderLayoutPanel extends ContentPanel {
rootLogger.log(Level.SEVERE, "SUCCESS RPC submitQuery");
rows = new ArrayList<Row>();
// rows = new ArrayList<Row>();
// 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<Row>();
// rows = new ArrayList<Row>();
// 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<Row>();
// rows = new ArrayList<Row>();
// 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<Row>();
// rows = new ArrayList<Row>();
// System.out.println("result size: " + result.size());

View File

@ -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<String, FileModel> dataDBInfo = null;
// private LinkedHashMap<String, FileModel> 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<String, String> infoOnSelectedItem;
@ -149,15 +149,15 @@ public class GxtTreePanel extends LayoutContainer {
@Override
public void selectionChanged(
SelectionChangedEvent<FileModel> 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<FileModel> 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<String, FileModel> getDataOnDB() {
return dataDBInfo;
}
// public LinkedHashMap<String, FileModel> 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<String, String>();
// infoOnSelectedItem = new LinkedHashMap<String, String>();
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<String, String> getInfoOnSelectedItem() {
return infoOnSelectedItem;
}
// // get information about the selected item
// public LinkedHashMap<String, String> getInfoOnSelectedItem() {
//
// return infoOnSelectedItem;
// }
public TreePanel<FileModel> getTreePanel() {
return this.treePanel;

View File

@ -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);