2014-07-02 12:57:14 +02:00
|
|
|
package org.gcube.portlets.user.databasesmanager.client.toolbar;
|
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
import java.util.LinkedHashMap;
|
2014-07-02 12:57:14 +02:00
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
2014-08-01 11:27:40 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.GWTdbManagerServiceAsync;
|
2014-09-18 14:10:36 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.datamodel.FileModel;
|
2014-07-02 12:57:14 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.datamodel.SubmitQueryData;
|
2014-07-11 20:22:24 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.LoadTablesEvent;
|
2014-07-04 12:36:43 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.RandomSamplingEvent;
|
2014-09-12 14:05:22 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.RefreshDataEvent;
|
2014-07-03 14:44:03 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SamplingEvent;
|
2014-09-18 14:10:36 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SelectedItemEvent;
|
2014-07-14 10:06:55 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SelectedTableEvent;
|
2014-07-04 11:07:19 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.ShowCreateTableEvent;
|
2014-07-04 12:09:47 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SmartSamplingEvent;
|
2014-07-02 12:57:14 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SubmitQueryEvent;
|
2014-09-18 14:10:36 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.interfaces.SelectedItemEventHandler;
|
2014-07-14 10:06:55 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.interfaces.SelectedTableEventHandler;
|
2014-07-02 12:57:14 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.form.GxtFormSubmitQuery;
|
|
|
|
import org.gcube.portlets.user.databasesmanager.client.utils.ConstantsPortlet;
|
2014-08-01 18:11:36 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.utils.UIDGenerator;
|
2014-09-29 15:13:02 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.shared.SessionExpiredException;
|
|
|
|
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
|
2014-08-01 18:11:36 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
|
|
|
|
import com.extjs.gxt.ui.client.Style.ButtonScale;
|
|
|
|
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
2014-07-25 15:54:30 +02:00
|
|
|
import com.extjs.gxt.ui.client.event.Events;
|
|
|
|
import com.extjs.gxt.ui.client.event.Listener;
|
2014-09-24 12:05:57 +02:00
|
|
|
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
|
2014-07-02 12:57:14 +02:00
|
|
|
import com.extjs.gxt.ui.client.event.SelectionListener;
|
2014-07-25 15:54:30 +02:00
|
|
|
import com.extjs.gxt.ui.client.event.WindowEvent;
|
2014-07-02 12:57:14 +02:00
|
|
|
import com.extjs.gxt.ui.client.widget.Dialog;
|
|
|
|
import com.extjs.gxt.ui.client.widget.MessageBox;
|
|
|
|
import com.extjs.gxt.ui.client.widget.button.Button;
|
|
|
|
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
|
|
|
|
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
|
|
|
|
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
|
|
|
|
import com.google.gwt.event.shared.HandlerManager;
|
2014-08-01 18:11:36 +02:00
|
|
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-18 18:05:55 +02:00
|
|
|
//toolbar to contain buttons
|
2014-07-02 12:57:14 +02:00
|
|
|
public class GxtToolbarFunctionality {
|
2014-07-18 18:05:55 +02:00
|
|
|
// event bus
|
2014-07-02 12:57:14 +02:00
|
|
|
private HandlerManager eventBus = null;
|
2014-07-18 18:05:55 +02:00
|
|
|
// buttons
|
2014-07-11 20:22:24 +02:00
|
|
|
private Button btnTablesList;
|
2014-07-02 12:57:14 +02:00
|
|
|
private Button btnSubmitQuery;
|
|
|
|
// private Button btnGetInfo;
|
|
|
|
private Button btnShowCreateTable;
|
|
|
|
private Button btnSimpleSample;
|
|
|
|
private Button btnSmartSample;
|
|
|
|
private Button btnRandomSample;
|
2014-09-12 14:05:22 +02:00
|
|
|
private Button btnRefresCachedData;
|
2014-07-18 18:05:55 +02:00
|
|
|
// toolbar
|
2014-07-02 12:57:14 +02:00
|
|
|
private ToolBar toolBar;
|
2014-07-24 17:07:34 +02:00
|
|
|
// dialog list. Each dialog contains a form
|
|
|
|
private LinkedHashMap<Integer, Dialog> dialogList = new LinkedHashMap<Integer, Dialog>();
|
|
|
|
private LinkedHashMap<Integer, SubmitQueryData> submitQueryDataList = new LinkedHashMap<Integer, SubmitQueryData>();
|
2014-08-01 18:11:36 +02:00
|
|
|
private static int ID = 0; // ID associated to a dialog form
|
2014-08-25 17:55:53 +02:00
|
|
|
// uid list related to submit query operations
|
2014-08-01 18:11:36 +02:00
|
|
|
private LinkedHashMap<Integer, String> uidSubmitQueryList = new LinkedHashMap<Integer, String>();
|
2014-07-18 18:05:55 +02:00
|
|
|
// GWT logger
|
2014-07-02 12:57:14 +02:00
|
|
|
private static Logger rootLogger = Logger
|
|
|
|
.getLogger("GxtToolbarFunctionality");
|
2014-07-30 16:41:11 +02:00
|
|
|
// RPC service
|
2014-08-25 17:55:53 +02:00
|
|
|
private GWTdbManagerServiceAsync RPCservice = null;
|
2014-09-18 14:10:36 +02:00
|
|
|
// selected table
|
|
|
|
private String selectedTable;
|
|
|
|
// databse information related to the selected table
|
|
|
|
private FileModel tableInfo;
|
|
|
|
// proposed query displayed in the submit query form
|
|
|
|
private String queryForSubmitOperation = "select * from %1$s limit 10";
|
|
|
|
private boolean isTableSelected = false;
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// Constructor
|
2014-08-25 17:55:53 +02:00
|
|
|
// public GxtToolbarFunctionality(HandlerManager eBus) {
|
|
|
|
// eventBus = eBus;
|
|
|
|
// toolBar = new ToolBar();
|
|
|
|
// initToolBar();
|
|
|
|
// addHandler();
|
|
|
|
// addSelectionListenersOnToolBar();
|
|
|
|
// }
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// Constructor with GWTdbManagerServiceAsync service parameter
|
2014-08-25 17:55:53 +02:00
|
|
|
public GxtToolbarFunctionality(HandlerManager eBus,
|
|
|
|
GWTdbManagerServiceAsync service) {
|
|
|
|
eventBus = eBus;
|
|
|
|
RPCservice = service;
|
|
|
|
toolBar = new ToolBar();
|
|
|
|
initToolBar();
|
|
|
|
addHandler();
|
|
|
|
addSelectionListenersOnToolBar();
|
|
|
|
}
|
2014-07-30 16:41:11 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
private void initToolBar() {
|
|
|
|
// setLayout(new FlowLayout(10));
|
|
|
|
|
2014-07-11 20:22:24 +02:00
|
|
|
// Button for tables list
|
|
|
|
btnTablesList = new Button(ConstantsPortlet.TABLESLIST);
|
|
|
|
// btnSubmitQuery.setIcon(Resources.ICONS.text());
|
|
|
|
btnTablesList.setScale(ButtonScale.SMALL);
|
|
|
|
btnTablesList.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-24 17:07:34 +02:00
|
|
|
btnTablesList
|
|
|
|
.setToolTip("returns the list of tables contained in the database schema");
|
2014-07-11 20:22:24 +02:00
|
|
|
toolBar.add(btnTablesList);
|
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
// Button for Submit Query
|
|
|
|
btnSubmitQuery = new Button(ConstantsPortlet.SUBMITQUERY);
|
|
|
|
// btnSubmitQuery.setIcon(Resources.ICONS.text());
|
|
|
|
btnSubmitQuery.setScale(ButtonScale.SMALL);
|
|
|
|
btnSubmitQuery.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-24 17:07:34 +02:00
|
|
|
btnSubmitQuery
|
|
|
|
.setToolTip("allows to submit a query to the selected database");
|
2014-07-02 12:57:14 +02:00
|
|
|
toolBar.add(btnSubmitQuery);
|
|
|
|
|
|
|
|
// Button to get the "show create table"
|
2014-07-08 17:53:15 +02:00
|
|
|
btnShowCreateTable = new Button(ConstantsPortlet.TABLEDETAILS);
|
2014-07-02 12:57:14 +02:00
|
|
|
btnShowCreateTable.setScale(ButtonScale.SMALL);
|
|
|
|
btnShowCreateTable.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-24 17:07:34 +02:00
|
|
|
btnShowCreateTable
|
|
|
|
.setToolTip("gets information about the selected table, e.g. create statement, number of rows, columns names");
|
2014-07-02 12:57:14 +02:00
|
|
|
toolBar.add(btnShowCreateTable);
|
|
|
|
toolBar.add(new SeparatorToolItem());
|
|
|
|
|
|
|
|
// Button for Simple Sample
|
|
|
|
btnSimpleSample = new Button(ConstantsPortlet.SAMPLING);
|
|
|
|
btnSimpleSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnSimpleSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-23 13:03:40 +02:00
|
|
|
btnSimpleSample.setToolTip("retrieves the first 100 rows of the table");
|
2014-07-02 12:57:14 +02:00
|
|
|
toolBar.add(btnSimpleSample);
|
|
|
|
|
|
|
|
// Button for Smart Sample
|
|
|
|
btnSmartSample = new Button(ConstantsPortlet.SMARTSAMPLING);
|
|
|
|
btnSmartSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnSmartSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-24 17:07:34 +02:00
|
|
|
btnSmartSample
|
|
|
|
.setToolTip("retrieves the first 100 rows of the table, maximising the number of non empty columns");
|
2014-07-02 12:57:14 +02:00
|
|
|
toolBar.add(btnSmartSample);
|
|
|
|
|
2014-07-18 18:05:55 +02:00
|
|
|
// button for Random Sample
|
2014-07-02 12:57:14 +02:00
|
|
|
btnRandomSample = new Button(ConstantsPortlet.RANDOMSAMPLING);
|
|
|
|
btnRandomSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnRandomSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-07-24 17:07:34 +02:00
|
|
|
btnRandomSample
|
|
|
|
.setToolTip("retrieves 100 randomly picked rows from the table");
|
2014-07-02 12:57:14 +02:00
|
|
|
toolBar.add(btnRandomSample);
|
2014-09-12 14:05:22 +02:00
|
|
|
toolBar.add(new SeparatorToolItem());
|
|
|
|
|
|
|
|
// button for Random Sample
|
|
|
|
btnRefresCachedData = new Button(ConstantsPortlet.REFRESHCACHEDDATA);
|
|
|
|
btnRefresCachedData.setScale(ButtonScale.SMALL);
|
|
|
|
btnRefresCachedData.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
2014-09-18 14:10:36 +02:00
|
|
|
btnRefresCachedData.setToolTip("refreshes data");
|
2014-09-12 14:05:22 +02:00
|
|
|
toolBar.add(btnRefresCachedData);
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
// add(toolBar, new FlowData(10));
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// disable buttons
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
2014-07-18 18:05:55 +02:00
|
|
|
|
2014-07-14 10:06:55 +02:00
|
|
|
private void addHandler() {
|
2014-07-18 18:05:55 +02:00
|
|
|
|
|
|
|
eventBus.addHandler(SelectedTableEvent.TYPE,
|
|
|
|
new SelectedTableEventHandler() {
|
|
|
|
@Override
|
|
|
|
public void onSelectedTable(
|
|
|
|
SelectedTableEvent selectedTableEvent) {
|
|
|
|
// enable button for table details and sampling
|
2014-07-30 16:41:11 +02:00
|
|
|
// operations
|
2014-07-18 18:05:55 +02:00
|
|
|
btnTablesList.enable();
|
|
|
|
btnSubmitQuery.enable();
|
|
|
|
btnShowCreateTable.enable();
|
|
|
|
btnSimpleSample.enable();
|
|
|
|
btnSmartSample.enable();
|
|
|
|
btnRandomSample.enable();
|
2014-09-18 14:10:36 +02:00
|
|
|
|
|
|
|
// get selected table name and related database
|
|
|
|
// information
|
|
|
|
String tableName = selectedTableEvent
|
|
|
|
.getSelectedTable();
|
|
|
|
FileModel tableInfo = selectedTableEvent.getTableInfo();
|
|
|
|
setInfoOnSelectedTable(tableName, tableInfo);
|
|
|
|
isTableSelected = true;
|
2014-10-01 15:38:16 +02:00
|
|
|
// rootLogger.info("table clicked: " + isTableSelected);
|
2014-09-18 14:10:36 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
eventBus.addHandler(SelectedItemEvent.TYPE,
|
|
|
|
new SelectedItemEventHandler() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onSelectedItem(
|
|
|
|
SelectedItemEvent selectedItemEvent) {
|
|
|
|
|
|
|
|
isTableSelected = false;
|
2014-10-01 15:38:16 +02:00
|
|
|
// rootLogger.info("item clicked: " + isTableSelected);
|
2014-09-18 14:10:36 +02:00
|
|
|
|
2014-07-18 18:05:55 +02:00
|
|
|
}
|
2014-09-18 14:10:36 +02:00
|
|
|
|
2014-07-18 18:05:55 +02:00
|
|
|
});
|
2014-07-14 10:06:55 +02:00
|
|
|
}
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
private void addSelectionListenersOnToolBar() {
|
|
|
|
|
|
|
|
btnSubmitQuery
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// dialog to insert inputs in order to submit a query
|
2014-07-25 15:54:30 +02:00
|
|
|
final Dialog dialog = new Dialog() {
|
2014-07-30 16:41:11 +02:00
|
|
|
// override the maximize event modifying it with a
|
|
|
|
// different behavior if the mimimize event occurs
|
2014-07-25 15:54:30 +02:00
|
|
|
public void maximize() {
|
|
|
|
if (isCollapsed()) {
|
|
|
|
expand();
|
|
|
|
} else {
|
|
|
|
super.maximize();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2014-07-30 16:41:11 +02:00
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
ID++;
|
2014-07-30 16:41:11 +02:00
|
|
|
|
2014-07-25 20:03:14 +02:00
|
|
|
final int dialogID = ID;
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.setLayout(new FitLayout());
|
2014-07-24 17:07:34 +02:00
|
|
|
// dialog.setModal(true);
|
2014-07-25 15:54:30 +02:00
|
|
|
// dialog.setBlinkModal(true);
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.setButtons(Dialog.OKCANCEL);
|
|
|
|
// dialog.setPlain(true);
|
|
|
|
// dialog.setCollapsible(false);
|
|
|
|
dialog.setResizable(false);
|
2014-07-15 11:43:43 +02:00
|
|
|
dialog.setMaximizable(true);
|
2014-07-25 15:54:30 +02:00
|
|
|
dialog.setMinimizable(true);
|
2014-07-25 20:03:14 +02:00
|
|
|
dialog.setHeading("Submit Query " + dialogID);
|
2014-07-15 11:43:43 +02:00
|
|
|
dialog.setSize(600, 500);
|
2014-07-25 15:54:30 +02:00
|
|
|
// dialog.setConstrain(false);
|
|
|
|
// dialog.setTitleCollapse(true);
|
2014-07-18 18:05:55 +02:00
|
|
|
// dialog.setWidth(290);
|
|
|
|
// dialog.setHeight(250);
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-09-18 14:10:36 +02:00
|
|
|
// create form to submit a query
|
|
|
|
final GxtFormSubmitQuery form;
|
|
|
|
// get query for submit operation
|
|
|
|
String query = null;
|
|
|
|
|
|
|
|
if (isTableSelected == true) {
|
|
|
|
query = getQueryForSubmitOperation();
|
|
|
|
}
|
|
|
|
if ((query != null) && (!query.equals(""))) {
|
|
|
|
form = new GxtFormSubmitQuery(query);
|
|
|
|
} else {
|
|
|
|
form = new GxtFormSubmitQuery();
|
|
|
|
}
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.add(form);
|
|
|
|
dialog.show();
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// minimize event handled
|
2014-07-25 15:54:30 +02:00
|
|
|
dialog.addListener(Events.Minimize,
|
|
|
|
new Listener<WindowEvent>() {
|
|
|
|
@Override
|
|
|
|
public void handleEvent(WindowEvent be) {
|
2014-07-30 16:41:11 +02:00
|
|
|
// collapse the dialog
|
|
|
|
be.getWindow().collapse();
|
2014-07-25 15:54:30 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// override maximize event
|
2014-07-25 15:54:30 +02:00
|
|
|
dialog.addListener(Events.Maximize,
|
|
|
|
new Listener<WindowEvent>() {
|
|
|
|
@Override
|
|
|
|
public void handleEvent(WindowEvent be) {
|
2014-07-30 16:41:11 +02:00
|
|
|
// expand the dialog
|
2014-07-25 15:54:30 +02:00
|
|
|
if (be.getWindow().isCollapsed()) {
|
|
|
|
be.getWindow().expand();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// listener on the dialog "ok" button
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.getButtonById(Dialog.OK).addSelectionListener(
|
|
|
|
new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
2014-09-12 14:05:22 +02:00
|
|
|
// deactivate the button
|
|
|
|
dialog.getButtonById(Dialog.OK)
|
|
|
|
.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
// recover info from dialog
|
2014-07-30 16:41:11 +02:00
|
|
|
setInfoOnSubmitQuery(form, dialog,
|
|
|
|
dialogID);
|
2014-07-02 12:57:14 +02:00
|
|
|
rootLogger.log(Level.SEVERE,
|
|
|
|
"query submitted");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// listener on the dialog "cancel" button
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.getButtonById(Dialog.CANCEL)
|
|
|
|
.addSelectionListener(
|
|
|
|
new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(
|
|
|
|
ButtonEvent ce) {
|
|
|
|
rootLogger.log(Level.INFO,
|
|
|
|
"button Cancel event");
|
2014-08-25 17:55:53 +02:00
|
|
|
|
2014-08-29 15:39:04 +02:00
|
|
|
if (uidSubmitQueryList
|
2014-09-12 14:05:22 +02:00
|
|
|
.get(dialogID) != null) {
|
|
|
|
|
|
|
|
// remove computation
|
|
|
|
RPCservice.removeComputation(
|
|
|
|
uidSubmitQueryList
|
|
|
|
.get(dialogID),
|
|
|
|
new AsyncCallback<Boolean>() {
|
|
|
|
@Override
|
|
|
|
public void onSuccess(
|
|
|
|
Boolean result) {
|
2014-08-01 18:11:36 +02:00
|
|
|
rootLogger
|
2014-09-12 14:05:22 +02:00
|
|
|
.log(Level.SEVERE,
|
|
|
|
"SUCCESS RPC removeComputation");
|
|
|
|
if (result
|
|
|
|
.booleanValue() == true) {
|
|
|
|
rootLogger
|
|
|
|
.log(Level.INFO,
|
|
|
|
"computation removed with uid: "
|
|
|
|
+ uidSubmitQueryList
|
|
|
|
.get(dialogID));
|
2014-10-01 15:38:16 +02:00
|
|
|
} else {
|
|
|
|
rootLogger
|
|
|
|
.log(Level.INFO,
|
|
|
|
"computation can not be removed because it is already finished");
|
2014-09-12 14:05:22 +02:00
|
|
|
}
|
2014-08-01 18:11:36 +02:00
|
|
|
}
|
2014-09-12 14:05:22 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onFailure(
|
|
|
|
Throwable caught) {
|
|
|
|
rootLogger
|
|
|
|
.log(Level.SEVERE,
|
|
|
|
"FAILURE RPC removeComputation");
|
2014-10-01 15:38:16 +02:00
|
|
|
|
|
|
|
if (caught instanceof SessionExpiredException) {
|
|
|
|
rootLogger
|
|
|
|
.log(Level.INFO,
|
|
|
|
"Session expired");
|
|
|
|
CheckSession
|
|
|
|
.showLogoutDialog();
|
2014-09-29 15:13:02 +02:00
|
|
|
return;
|
2014-10-01 15:38:16 +02:00
|
|
|
}
|
|
|
|
|
2014-09-12 14:05:22 +02:00
|
|
|
}
|
|
|
|
});
|
2014-08-29 15:39:04 +02:00
|
|
|
}
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.hide();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
btnSimpleSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
2014-07-11 20:22:24 +02:00
|
|
|
// fire event
|
2014-07-03 14:44:03 +02:00
|
|
|
eventBus.fireEvent(new SamplingEvent());
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
btnSmartSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
2014-07-11 20:22:24 +02:00
|
|
|
// fire event
|
2014-07-04 12:09:47 +02:00
|
|
|
eventBus.fireEvent(new SmartSamplingEvent());
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
btnRandomSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
2014-07-11 20:22:24 +02:00
|
|
|
// fire event
|
2014-07-04 12:36:43 +02:00
|
|
|
eventBus.fireEvent(new RandomSamplingEvent());
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
});
|
2014-07-11 20:22:24 +02:00
|
|
|
|
|
|
|
btnShowCreateTable
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// fire event
|
|
|
|
eventBus.fireEvent(new ShowCreateTableEvent());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
btnTablesList
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// fire event
|
|
|
|
eventBus.fireEvent(new LoadTablesEvent());
|
|
|
|
}
|
|
|
|
});
|
2014-09-18 14:10:36 +02:00
|
|
|
|
|
|
|
btnRefresCachedData
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
|
|
|
|
rootLogger.log(Level.INFO, "REFRESH BUTTON");
|
|
|
|
// fire event
|
|
|
|
eventBus.fireEvent(new RefreshDataEvent());
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// buttons enable/disable operation depending from the item selected in the
|
|
|
|
// tree
|
2014-07-14 10:06:55 +02:00
|
|
|
public void enableButtonOnToolbar(int infoTreeDepthSelectedItem,
|
2014-07-11 20:22:24 +02:00
|
|
|
boolean infoSelectedItemIsSchema, String databaseType) {
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
rootLogger.log(Level.INFO, "selectedItem depth: "
|
|
|
|
+ infoTreeDepthSelectedItem);
|
|
|
|
|
|
|
|
switch (infoTreeDepthSelectedItem) {
|
|
|
|
|
|
|
|
case 1:
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.enable();
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
2014-09-18 14:10:36 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.enable();
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.enable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
2014-09-18 14:10:36 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
2014-07-11 20:22:24 +02:00
|
|
|
if ((databaseType != null)
|
|
|
|
&& (databaseType.equals(ConstantsPortlet.MYSQL))) {
|
|
|
|
btnTablesList.enable();
|
|
|
|
btnSubmitQuery.enable();
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.enable();
|
2014-07-11 20:22:24 +02:00
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-11 20:22:24 +02:00
|
|
|
}
|
|
|
|
if ((databaseType != null)
|
|
|
|
&& (databaseType.equals(ConstantsPortlet.POSTGRES))) {
|
|
|
|
btnTablesList.disable();
|
|
|
|
btnSubmitQuery.enable();
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.enable();
|
2014-07-11 20:22:24 +02:00
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
}
|
2014-07-02 12:57:14 +02:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 4: // check to verify that this level refers to schema or table
|
2014-07-30 16:41:11 +02:00
|
|
|
// and manage it differently
|
2014-07-02 12:57:14 +02:00
|
|
|
if (infoSelectedItemIsSchema == true) {
|
|
|
|
// this tree level is a schema
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.enable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.enable();
|
2014-09-15 12:07:30 +02:00
|
|
|
btnRefresCachedData.enable();
|
2014-07-02 12:57:14 +02:00
|
|
|
// btnShowCreateTable.enable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
// this tree level is a table
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.enable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.enable();
|
|
|
|
btnShowCreateTable.enable();
|
|
|
|
btnSimpleSample.enable();
|
|
|
|
btnSmartSample.enable();
|
|
|
|
btnRandomSample.enable();
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 5: // if there is the schema this level refers to table
|
2014-07-11 20:22:24 +02:00
|
|
|
btnTablesList.enable();
|
2014-07-02 12:57:14 +02:00
|
|
|
btnSubmitQuery.enable();
|
|
|
|
btnShowCreateTable.enable();
|
|
|
|
btnSimpleSample.enable();
|
|
|
|
btnSmartSample.enable();
|
|
|
|
btnRandomSample.enable();
|
2014-09-12 14:05:22 +02:00
|
|
|
btnRefresCachedData.disable();
|
2014-07-02 12:57:14 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2014-07-18 18:05:55 +02:00
|
|
|
|
|
|
|
public void disableButtonsOperationsOnTable() {
|
2014-07-14 10:06:55 +02:00
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
2014-07-18 18:05:55 +02:00
|
|
|
btnRandomSample.disable();
|
2014-07-14 10:06:55 +02:00
|
|
|
}
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
public ToolBar getToolBar() {
|
|
|
|
return this.toolBar;
|
|
|
|
}
|
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
private void setInfoOnSubmitQuery(GxtFormSubmitQuery form,
|
2014-09-24 12:05:57 +02:00
|
|
|
final Dialog SubmtQueryDialog, int dialogID) {
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
SubmitQueryData data = form.getSubmitQueryData();
|
|
|
|
// data = form.getSubmitQueryData();
|
2014-08-25 17:55:53 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
String query = data.getQuery();
|
2014-10-01 15:38:16 +02:00
|
|
|
|
|
|
|
Listener<MessageBoxEvent> l = new Listener<MessageBoxEvent>() {
|
|
|
|
public void handleEvent(MessageBoxEvent ce) {
|
|
|
|
SubmtQueryDialog.getButtonById(Dialog.OK).enable();
|
2014-09-24 12:05:57 +02:00
|
|
|
}
|
2014-10-01 15:38:16 +02:00
|
|
|
};
|
2014-08-25 17:55:53 +02:00
|
|
|
|
2014-07-02 12:57:14 +02:00
|
|
|
if ((query == null) || (query.equals(""))) {
|
2014-09-24 12:05:57 +02:00
|
|
|
MessageBox.alert("Warning", "Query field null", l);
|
2014-07-02 12:57:14 +02:00
|
|
|
} else {
|
2014-07-25 20:03:14 +02:00
|
|
|
dialogList.put(new Integer(dialogID), SubmtQueryDialog);
|
|
|
|
submitQueryDataList.put(new Integer(dialogID), data);
|
2014-08-25 17:55:53 +02:00
|
|
|
|
|
|
|
// generate a UID for this request
|
2014-08-01 18:11:36 +02:00
|
|
|
UIDGenerator generator = new UIDGenerator();
|
|
|
|
String uidSubmitQuery = generator.get();
|
2014-08-25 17:55:53 +02:00
|
|
|
// add uid for the submit query operation
|
2014-08-01 18:11:36 +02:00
|
|
|
uidSubmitQueryList.put(new Integer(dialogID), uidSubmitQuery);
|
2014-08-25 17:55:53 +02:00
|
|
|
// System.out.println("UID: " + uidSubmitQuery);
|
2014-07-25 20:03:14 +02:00
|
|
|
SubmtQueryDialog.getBody().mask("Loading", "x-mask-loading");
|
2014-08-25 17:55:53 +02:00
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
// fire event
|
2014-07-25 20:03:14 +02:00
|
|
|
eventBus.fireEvent(new SubmitQueryEvent(dialogID));
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
// public SubmitQueryData getSubmitQueryData() {
|
|
|
|
// return data;
|
|
|
|
// }
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
// public LinkedHashMap<Dialog, ArrayList<String>> getDialogForm() {
|
|
|
|
// // return dialog;
|
|
|
|
// return dialogList;
|
|
|
|
// }
|
2014-07-02 12:57:14 +02:00
|
|
|
|
2014-07-24 17:07:34 +02:00
|
|
|
public LinkedHashMap<Integer, Dialog> getDialogFormList() {
|
|
|
|
return dialogList;
|
|
|
|
}
|
|
|
|
|
|
|
|
public LinkedHashMap<Integer, SubmitQueryData> getSubmitQueryDataList() {
|
|
|
|
return submitQueryDataList;
|
|
|
|
}
|
2014-08-25 17:55:53 +02:00
|
|
|
|
2014-08-01 18:11:36 +02:00
|
|
|
public LinkedHashMap<Integer, String> getUIDSubmitQueryList() {
|
|
|
|
return uidSubmitQueryList;
|
|
|
|
}
|
2014-07-25 15:54:30 +02:00
|
|
|
|
2014-09-18 14:10:36 +02:00
|
|
|
private void setInfoOnSelectedTable(String table, FileModel info) {
|
|
|
|
selectedTable = table;
|
|
|
|
tableInfo = info;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private String getQueryForSubmitOperation() {
|
|
|
|
String query = "";
|
|
|
|
|
|
|
|
if (tableInfo.isDatabase()) {
|
|
|
|
if (tableInfo.getDatabaseType().equals(ConstantsPortlet.MYSQL)) {
|
|
|
|
|
|
|
|
String dbName = tableInfo.getDatabaseName();
|
|
|
|
// the full name equal to "dbname.tablename"
|
|
|
|
String tableName = dbName + "." + selectedTable;
|
|
|
|
// query = String.format(queryForSubmitOperation, tableName);
|
|
|
|
query = "select * from " + tableName + " limit 10";
|
|
|
|
|
2014-10-01 15:38:16 +02:00
|
|
|
// System.out.println("query mysql: " + query);
|
2014-09-18 14:10:36 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (tableInfo.isSchema()) { // database postgres
|
|
|
|
String schemaName = tableInfo.getName();
|
|
|
|
// the full name equal to "schemaname.tablename"
|
|
|
|
String tableName = schemaName + "." + "\"" + selectedTable + "\"";
|
|
|
|
// query = String.format(queryForSubmitOperation, tableName);
|
|
|
|
query = "select * from " + tableName + " limit 10";
|
2014-10-01 15:38:16 +02:00
|
|
|
// System.out.println("query postgres: " + query);
|
2014-09-18 14:10:36 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return query;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-07-30 16:41:11 +02:00
|
|
|
// public Integer getDialogID() {
|
|
|
|
// return new Integer(ID);
|
|
|
|
// }
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|