2014-07-02 12:57:14 +02:00
|
|
|
package org.gcube.portlets.user.databasesmanager.client.toolbar;
|
|
|
|
|
|
|
|
import java.util.logging.Level;
|
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
|
|
import org.gcube.portlets.user.databasesmanager.client.GWTdbManagerServiceAsync;
|
|
|
|
import org.gcube.portlets.user.databasesmanager.client.datamodel.SubmitQueryData;
|
2014-07-04 12:36:43 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.RandomSamplingEvent;
|
2014-07-03 14:44:03 +02:00
|
|
|
import org.gcube.portlets.user.databasesmanager.client.events.SamplingEvent;
|
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;
|
|
|
|
import org.gcube.portlets.user.databasesmanager.client.form.GxtFormSubmitQuery;
|
|
|
|
import org.gcube.portlets.user.databasesmanager.client.utils.ConstantsPortlet;
|
|
|
|
|
|
|
|
//import org.gcube.portlets.user.dbmanager.client.GWTdbManagerServiceAsync;
|
|
|
|
//import org.gcube.portlets.user.dbmanager.client.datamodel.SubmitQueryData;
|
|
|
|
//import org.gcube.portlets.user.dbmanager.client.events.SubmitQueryEvent;
|
|
|
|
//import org.gcube.portlets.user.dbmanager.client.form.GxtFormSubmitQuery;
|
|
|
|
//import org.gcube.portlets.user.dbmanager.client.utils.ConstantsPortlet;
|
|
|
|
|
|
|
|
import com.extjs.gxt.ui.client.Style.ButtonArrowAlign;
|
|
|
|
import com.extjs.gxt.ui.client.Style.ButtonScale;
|
|
|
|
import com.extjs.gxt.ui.client.Style.Scroll;
|
|
|
|
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.SelectionListener;
|
|
|
|
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-07-03 15:16:56 +02:00
|
|
|
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
|
|
|
|
import com.extjs.gxt.ui.client.event.Listener;
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
public class GxtToolbarFunctionality {
|
|
|
|
|
|
|
|
private HandlerManager eventBus = null;
|
|
|
|
|
|
|
|
private Button btnSubmitQuery;
|
|
|
|
// private Button btnGetInfo;
|
|
|
|
private Button btnShowCreateTable;
|
|
|
|
private Button btnSimpleSample;
|
|
|
|
private Button btnSmartSample;
|
|
|
|
private Button btnRandomSample;
|
|
|
|
|
|
|
|
private SubmitQueryData data;
|
|
|
|
|
|
|
|
private ToolBar toolBar;
|
|
|
|
|
|
|
|
// the dialog that contains the form
|
2014-07-03 15:16:56 +02:00
|
|
|
// private Dialog dialog = new Dialog();
|
2014-07-02 18:05:50 +02:00
|
|
|
private Dialog dialog;
|
2014-07-03 15:16:56 +02:00
|
|
|
private MessageBox sample;
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
// RPC service
|
|
|
|
private GWTdbManagerServiceAsync RPCservice = null;
|
|
|
|
|
|
|
|
private static Logger rootLogger = Logger
|
|
|
|
.getLogger("GxtToolbarFunctionality");
|
|
|
|
|
|
|
|
public GxtToolbarFunctionality(HandlerManager eBus,
|
|
|
|
GWTdbManagerServiceAsync service) {
|
|
|
|
|
|
|
|
eventBus = eBus;
|
|
|
|
RPCservice = service;
|
|
|
|
|
|
|
|
toolBar = new ToolBar();
|
|
|
|
initToolBar();
|
|
|
|
addSelectionListenersOnToolBar();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void initToolBar() {
|
|
|
|
|
|
|
|
// setLayout(new FlowLayout(10));
|
|
|
|
|
|
|
|
// Button for Submit Query
|
|
|
|
btnSubmitQuery = new Button(ConstantsPortlet.SUBMITQUERY);
|
|
|
|
// btnSubmitQuery.setIcon(Resources.ICONS.text());
|
|
|
|
btnSubmitQuery.setScale(ButtonScale.SMALL);
|
|
|
|
btnSubmitQuery.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
|
|
|
toolBar.add(btnSubmitQuery);
|
|
|
|
|
|
|
|
// // Button to get information about a database
|
|
|
|
// btnGetInfo = new Button(ConstantsPortlet.GETINFO);
|
|
|
|
// btnGetInfo.setScale(ButtonScale.SMALL);
|
|
|
|
// btnGetInfo.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
|
|
|
// toolBar.add(btnGetInfo);
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
toolBar.add(btnShowCreateTable);
|
|
|
|
|
|
|
|
toolBar.add(new SeparatorToolItem());
|
|
|
|
|
|
|
|
// Button for Simple Sample
|
|
|
|
btnSimpleSample = new Button(ConstantsPortlet.SAMPLING);
|
|
|
|
btnSimpleSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnSimpleSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
|
|
|
|
|
|
|
toolBar.add(btnSimpleSample);
|
|
|
|
|
|
|
|
// Button for Smart Sample
|
|
|
|
btnSmartSample = new Button(ConstantsPortlet.SMARTSAMPLING);
|
|
|
|
btnSmartSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnSmartSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
|
|
|
|
|
|
|
toolBar.add(btnSmartSample);
|
|
|
|
|
|
|
|
// button fro Random Sample
|
|
|
|
btnRandomSample = new Button(ConstantsPortlet.RANDOMSAMPLING);
|
|
|
|
btnRandomSample.setScale(ButtonScale.SMALL);
|
|
|
|
btnRandomSample.setArrowAlign(ButtonArrowAlign.BOTTOM);
|
|
|
|
|
|
|
|
toolBar.add(btnRandomSample);
|
|
|
|
|
|
|
|
// add(toolBar, new FlowData(10));
|
|
|
|
|
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void addSelectionListenersOnToolBar() {
|
|
|
|
|
|
|
|
btnSubmitQuery
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
|
|
|
|
data = null;
|
|
|
|
|
|
|
|
// dialog to insert inputs in order to submit a query
|
|
|
|
|
|
|
|
// final Dialog dialog = new Dialog();
|
2014-07-02 18:05:50 +02:00
|
|
|
dialog = new Dialog();
|
2014-07-02 12:57:14 +02:00
|
|
|
dialog.setLayout(new FitLayout());
|
|
|
|
|
|
|
|
dialog.setModal(true);
|
|
|
|
dialog.setBlinkModal(true);
|
|
|
|
|
|
|
|
dialog.setButtons(Dialog.OKCANCEL);
|
|
|
|
|
|
|
|
// dialog.setPlain(true);
|
|
|
|
// dialog.setCollapsible(false);
|
|
|
|
dialog.setResizable(false);
|
|
|
|
dialog.setHeading("Submit Query");
|
|
|
|
dialog.setWidth(290);
|
|
|
|
dialog.setHeight(250);
|
|
|
|
|
|
|
|
final GxtFormSubmitQuery form = new GxtFormSubmitQuery();
|
|
|
|
|
|
|
|
dialog.add(form);
|
|
|
|
dialog.show();
|
|
|
|
|
|
|
|
dialog.getButtonById(Dialog.OK).addSelectionListener(
|
|
|
|
new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
|
|
|
|
// System.out.println("button OK event");
|
|
|
|
|
2014-07-08 17:53:15 +02:00
|
|
|
// dialog.mask("Loading", "x-mask-loading");
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
// dialog.hide();
|
|
|
|
|
|
|
|
// recover info from dialog
|
|
|
|
setInfoOnSubmitQuery(form);
|
|
|
|
|
|
|
|
// System.out
|
|
|
|
// .println("GxtToolbarFunctionality-> query submitted");
|
|
|
|
|
|
|
|
rootLogger.log(Level.SEVERE,
|
|
|
|
"query submitted");
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
dialog.getButtonById(Dialog.CANCEL)
|
|
|
|
.addSelectionListener(
|
|
|
|
new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(
|
|
|
|
ButtonEvent ce) {
|
|
|
|
|
|
|
|
// System.out
|
|
|
|
// .println("button Cancel event");
|
|
|
|
|
|
|
|
rootLogger.log(Level.INFO,
|
|
|
|
"button Cancel event");
|
|
|
|
|
|
|
|
dialog.hide();
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
btnSimpleSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
2014-07-03 15:16:56 +02:00
|
|
|
// Listener<MessageBoxEvent> l = new Listener<MessageBoxEvent>() {
|
|
|
|
//
|
|
|
|
// @Override
|
|
|
|
// public void handleEvent(MessageBoxEvent be) {
|
|
|
|
// // TODO Auto-generated method stub
|
|
|
|
//
|
|
|
|
// Button btn = ce.getButton();
|
|
|
|
//
|
|
|
|
// if (btn.getText().equals("Yes"))
|
|
|
|
// {
|
|
|
|
//
|
|
|
|
// //fire event
|
|
|
|
//
|
|
|
|
// eventBus.fireEvent(new SamplingEvent());
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// };
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// sample = new MessageBox();
|
|
|
|
//
|
|
|
|
// sample.confirm("Confirm", "Are you sure you want to perform the sampling", l);
|
|
|
|
//
|
|
|
|
|
2014-07-03 14:44:03 +02:00
|
|
|
//fire event
|
|
|
|
|
|
|
|
eventBus.fireEvent(new SamplingEvent());
|
|
|
|
|
|
|
|
|
|
|
|
// // TODO: insert the result of the sample operation
|
|
|
|
//
|
|
|
|
// // TODO: manage the exception case (returned from
|
|
|
|
// // algorithm "Simple Sample") with an alert
|
|
|
|
//
|
|
|
|
// // System.out.println("simple sample event");
|
|
|
|
//
|
|
|
|
// Dialog d = new Dialog();
|
|
|
|
// d.setHeading("Simple Sample");
|
|
|
|
//
|
|
|
|
// // d.setBodyStyle("fontWeight:bold;padding:13px;");
|
|
|
|
//
|
|
|
|
// d.setBodyStyle("padding:9px;");
|
|
|
|
// d.setSize(600, 400);
|
|
|
|
// d.setScrollMode(Scroll.AUTO);
|
|
|
|
// d.setHideOnButtonClick(true);
|
|
|
|
// d.setModal(true);
|
|
|
|
// d.setMaximizable(true);
|
|
|
|
// d.addText("Result Table 1");
|
|
|
|
// d.show();
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
btnSmartSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// TODO Auto-generated method stub
|
2014-07-04 12:09:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
//fire event
|
|
|
|
eventBus.fireEvent(new SmartSamplingEvent());
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
// TODO: insert the result of the sample operation
|
|
|
|
|
|
|
|
// TODO: manage the exception case (returned from
|
|
|
|
// algorithm "Smart Sample") with an alert
|
|
|
|
|
|
|
|
// System.out.println("simple sample event");
|
|
|
|
|
2014-07-03 15:16:56 +02:00
|
|
|
// Dialog d = new Dialog();
|
|
|
|
// d.setHeading("Smart Sample");
|
|
|
|
//
|
|
|
|
// // d.setBodyStyle("fontWeight:bold;padding:13px;");
|
|
|
|
//
|
|
|
|
// d.setBodyStyle("padding:9px;");
|
|
|
|
// d.setSize(600, 400);
|
|
|
|
// d.setScrollMode(Scroll.AUTO);
|
|
|
|
// d.setHideOnButtonClick(true);
|
|
|
|
// d.setModal(true);
|
|
|
|
// d.setMaximizable(true);
|
|
|
|
// d.addText("Result Table 2");
|
|
|
|
// d.show();
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
btnRandomSample
|
|
|
|
.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// TODO Auto-generated method stub
|
2014-07-04 12:36:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
//fire event
|
|
|
|
eventBus.fireEvent(new RandomSamplingEvent());
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
// TODO: insert the result of the sample operation
|
|
|
|
|
|
|
|
// TODO: manage the exception case (returned from
|
|
|
|
// algorithm "Random Sample") with an alert
|
|
|
|
|
|
|
|
// System.out.println("simple sample event");
|
|
|
|
|
2014-07-03 15:16:56 +02:00
|
|
|
// Dialog d = new Dialog();
|
|
|
|
// d.setHeading("Random Sample");
|
|
|
|
//
|
|
|
|
// // d.setBodyStyle("fontWeight:bold;padding:13px;");
|
|
|
|
//
|
|
|
|
// d.setBodyStyle("padding:9px;");
|
|
|
|
// d.setSize(600, 400);
|
|
|
|
// d.setScrollMode(Scroll.AUTO);
|
|
|
|
// d.setHideOnButtonClick(true);
|
|
|
|
// d.setModal(true);
|
|
|
|
// d.setMaximizable(true);
|
|
|
|
// d.addText("Result Table 3");
|
|
|
|
// d.show();
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
2014-07-04 11:07:19 +02:00
|
|
|
|
|
|
|
btnShowCreateTable.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void componentSelected(ButtonEvent ce) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//fire event
|
|
|
|
|
|
|
|
eventBus.fireEvent(new ShowCreateTableEvent());
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
2014-07-02 12:57:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void disableButtonOnToolbar(int infoTreeDepthSelectedItem,
|
|
|
|
boolean infoSelectedItemIsSchema) {
|
|
|
|
|
|
|
|
// System.out.println("GxtToolbarFunctionality-> depth: "
|
|
|
|
// + infoTreeDepthSelectedItem);
|
|
|
|
|
|
|
|
rootLogger.log(Level.INFO, "selectedItem depth: "
|
|
|
|
+ infoTreeDepthSelectedItem);
|
|
|
|
|
|
|
|
switch (infoTreeDepthSelectedItem) {
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
btnSubmitQuery.disable();
|
|
|
|
// btnGetInfo.enable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
|
|
btnSubmitQuery.enable();
|
|
|
|
// btnGetInfo.disable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4: // check to verify that this level refers to schema or table
|
|
|
|
// and
|
|
|
|
// manage it differently
|
|
|
|
if (infoSelectedItemIsSchema == true) {
|
|
|
|
// this tree level is a schema
|
|
|
|
|
|
|
|
btnSubmitQuery.enable();
|
|
|
|
// btnShowCreateTable.enable();
|
|
|
|
btnShowCreateTable.disable();
|
|
|
|
btnSimpleSample.disable();
|
|
|
|
btnSmartSample.disable();
|
|
|
|
btnRandomSample.disable();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
// this tree level is a table
|
|
|
|
btnSubmitQuery.enable();
|
|
|
|
btnShowCreateTable.enable();
|
|
|
|
btnSimpleSample.enable();
|
|
|
|
btnSmartSample.enable();
|
|
|
|
btnRandomSample.enable();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 5: // if there is the schema this level refers to table
|
|
|
|
|
|
|
|
btnSubmitQuery.enable();
|
|
|
|
btnShowCreateTable.enable();
|
|
|
|
btnSimpleSample.enable();
|
|
|
|
btnSmartSample.enable();
|
|
|
|
btnRandomSample.enable();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public ToolBar getToolBar() {
|
|
|
|
return this.toolBar;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setInfoOnSubmitQuery(GxtFormSubmitQuery form) {
|
|
|
|
|
|
|
|
data = form.getSubmitQueryData();
|
|
|
|
|
|
|
|
String query = data.getQuery();
|
|
|
|
|
|
|
|
if ((query == null) || (query.equals(""))) {
|
|
|
|
MessageBox.alert("Warning", "Query field null", null);
|
|
|
|
|
|
|
|
} else {
|
2014-07-08 17:53:15 +02:00
|
|
|
|
|
|
|
dialog.mask("Loading", "x-mask-loading");
|
2014-07-02 12:57:14 +02:00
|
|
|
|
|
|
|
eventBus.fireEvent(new SubmitQueryEvent());
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public SubmitQueryData getSubmitQueryData() {
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Dialog getDialogForm() {
|
|
|
|
|
|
|
|
return dialog;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|