diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 5f95c03..ba09c09 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -4,15 +4,6 @@
-
- uses
-
-
- uses
-
-
- uses
-
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml b/src/main/java/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
index 21a1677..0a78d4f 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
@@ -1,33 +1,45 @@
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ExpressionWidgetEntry.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ExpressionWidgetEntry.java
index d28c995..781364d 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ExpressionWidgetEntry.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ExpressionWidgetEntry.java
@@ -1,106 +1,196 @@
package org.gcube.portlets.user.td.expressionwidget.client;
+import java.util.ArrayList;
-
+import org.gcube.portlets.user.td.expressionwidget.client.expression.ConditionOnMultiColumnWidget;
+import org.gcube.portlets.user.td.expressionwidget.client.utils.UtilsGXT3;
+import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync;
+import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException;
+import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
+import org.gcube.portlets.user.td.gwtservice.shared.user.UserInfo;
+import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
+import org.gcube.portlets.user.td.widgetcommonevent.client.type.SessionExpiredType;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.TabResourceType;
-import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType;
-import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnMockUp;
-import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.web.bindery.event.shared.EventBus;
-import com.google.web.bindery.event.shared.SimpleEventBus;
import com.sencha.gxt.widget.core.client.container.Viewport;
-
/**
*
- * @author "Giancarlo Panichi"
- * g.panichi@isti.cnr.it
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
*
*/
-public class ExpressionWidgetEntry implements EntryPoint {
- protected EventBus eventBus;
- protected static final String JSP_TAG_ID = "tdp";
-
+public class ExpressionWidgetEntry implements EntryPoint {
+ private EventBus eventBus;
+ private TRId trId;
+ private ArrayList columns;
+ private static final String JSP_TAG_ID = "tdp";
+
public void onModuleLoad() {
-
Log.debug("ExpressionWidgetEntry");
- startInDevMode();
-
- //TabularResource: [ id=86, type=STANDARD, lastTable=[ id=1159, type=Generic]]
-
- EventBus eventBus= new SimpleEventBus();
- TRId trId=new TRId("86",TabResourceType.STANDARD, "1159");
- //String columnName="zwqvvx";
-
- //Column Expression Dialog
- //ColumnExpressionDialog expressionDialog=new ColumnExpressionDialog("1", ColumnTypeCode.ATTRIBUTE, ColumnDataType.Integer, eventBus);
- //expressionDialog.show();
-
-
- //Column Filter Dialog
- //id=2, tableId=8, tableType=Generic
- //ColumnFilterDialog columnFilterDialog=new ColumnFilterDialog(trId, columnName, eventBus);
- //columnFilterDialog.show();
-
- //Multi Column Filter Dialog
- //MultiColumnFilterDialog multiColumnFilterDialog= new MultiColumnFilterDialog(trId, eventBus);
- //multiColumnFilterDialog.show();
-
- //Replace Column By Expression Dialog
- //ReplaceColumnByExpressionDialog replaceColumnByExpression= new ReplaceColumnByExpressionDialog(trId, columnName, eventBus);
- //replaceColumnByExpression.show();
-
- //HelpReplaceColumnByExpressionDialog
- //HelpReplaceColumnByExpressionDialog help= new HelpReplaceColumnByExpressionDialog(eventBus);
- //help.show();
-
- //Replace Expression Dialog
- ColumnMockUp columnMockUp=new ColumnMockUp(null, null, "TestMock", ColumnTypeCode.ATTRIBUTE, ColumnDataType.Text,"");
- ReplaceExpressionDialog replaceExpressionDialog=new ReplaceExpressionDialog(columnMockUp,trId,eventBus);
- replaceExpressionDialog.show();
-
-
-
- Log.info("Hello!");
+ callHello();
+
}
-
- protected void startInDevMode() {
+
+ private void init() {
+
+ // TabularResource: [ id=86, type=STANDARD, lastTable=[ id=1159,
+ // type=Generic]]
+
+ // EventBus eventBus= new SimpleEventBus();
+ trId = new TRId("86", TabResourceType.STANDARD, "1159");
+ // String columnName="zwqvvx";
+
+ // Column Expression Dialog
+ // ColumnExpressionDialog expressionDialog=new
+ // ColumnExpressionDialog("1", ColumnTypeCode.ATTRIBUTE,
+ // ColumnDataType.Integer, eventBus);
+ // expressionDialog.show();
+
+ // Column Filter Dialog
+ // id=2, tableId=8, tableType=Generic
+ // ColumnFilterDialog columnFilterDialog=new ColumnFilterDialog(trId,
+ // columnName, eventBus);
+ // columnFilterDialog.show();
+
+ // Multi Column Filter Dialog
+ // MultiColumnFilterDialog multiColumnFilterDialog= new
+ // MultiColumnFilterDialog(trId, eventBus);
+ // multiColumnFilterDialog.show();
+
+ // Replace Column By Expression Dialog
+ // ReplaceColumnByExpressionDialog replaceColumnByExpression= new
+ // ReplaceColumnByExpressionDialog(trId, columnName, eventBus);
+ // replaceColumnByExpression.show();
+
+ // HelpReplaceColumnByExpressionDialog
+ // HelpReplaceColumnByExpressionDialog help= new
+ // HelpReplaceColumnByExpressionDialog(eventBus);
+ // help.show();
+
+ // Replace Expression Dialog
+ // ColumnMockUp columnMockUp=new ColumnMockUp(null, null, "TestMock",
+ // ColumnTypeCode.ATTRIBUTE, ColumnDataType.Text,"");
+ // ReplaceExpressionDialog replaceExpressionDialog=new
+ // ReplaceExpressionDialog(columnMockUp,trId,eventBus);
+ // replaceExpressionDialog.show();
+
+ retrieveColumns();
+
+ }
+
+ private void create() {
try {
-
+ ConditionOnMultiColumnWidget cond = new ConditionOnMultiColumnWidget(
+ columns);
+ startInDevMode(cond);
+ } catch (Throwable e) {
+ Log.error("Errore: " + e.getLocalizedMessage());
+ e.printStackTrace();
+
+ }
+ }
+
+ private void startInDevMode(ConditionOnMultiColumnWidget cond) {
+ try {
+
RootPanel root = RootPanel.get(JSP_TAG_ID);
Log.info("Root Panel: " + root);
if (root == null) {
Log.info("Div with id " + JSP_TAG_ID
+ " not found, starting in dev mode");
Viewport viewport = new Viewport();
- viewport.setWidget(new HTML("Hello!"));
+ if (cond == null) {
+ viewport.setWidget(new HTML(
+ "Attention Condition Panel is null!"));
+
+ } else {
+ viewport.setWidget(cond);// new HTML("Hello!")
+ }
viewport.onResize();
RootPanel.get().add(viewport);
} else {
Log.info("Application div with id " + JSP_TAG_ID
+ " found, starting in portal mode");
- /*PortalViewport viewport = new PortalViewport();
- Log.info("Created Viewport");
- viewport.setEnableScroll(false);
- viewport.setWidget(mainWidget);
- Log.info("Set Widget");
- Log.info("getOffsetWidth(): " + viewport.getOffsetWidth());
- Log.info("getOffsetHeight(): " + viewport.getOffsetHeight());
- viewport.onResize();
- root.add(viewport);
- Log.info("Added viewport to root");*/
+ /*
+ * PortalViewport viewport = new PortalViewport();
+ * Log.info("Created Viewport");
+ * viewport.setEnableScroll(false);
+ * viewport.setWidget(mainWidget); Log.info("Set Widget");
+ * Log.info("getOffsetWidth(): " + viewport.getOffsetWidth());
+ * Log.info("getOffsetHeight(): " + viewport.getOffsetHeight());
+ * viewport.onResize(); root.add(viewport);
+ * Log.info("Added viewport to root");
+ */
}
} catch (Exception e) {
e.printStackTrace();
Log.error("Error in attach viewport:" + e.getLocalizedMessage());
}
}
-
-
+
+ private void callHello() {
+ TDGWTServiceAsync.INSTANCE.hello(new AsyncCallback() {
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.info("No valid user found: " + caught.getMessage());
+ if (caught instanceof TDGWTSessionExpiredException) {
+ UtilsGXT3.alert("Error", "Expired Session");
+ } else {
+ UtilsGXT3.alert("Error", "No user found");
+ }
+ }
+
+ @Override
+ public void onSuccess(UserInfo result) {
+ Log.info("Hello: " + result.getUsername());
+ init();
+ }
+
+ });
+
+ }
+
+ private void retrieveColumns() {
+ TDGWTServiceAsync.INSTANCE.getColumns(trId,
+ new AsyncCallback>() {
+
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ if (caught instanceof TDGWTIsLockedException) {
+ Log.error(caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error Locked",
+ caught.getLocalizedMessage());
+
+ } else {
+ Log.error("Error retrieving column: "
+ + caught.getMessage());
+ UtilsGXT3.alert("Error retrieving column",
+ caught.getMessage());
+ }
+ }
+ }
+
+ public void onSuccess(ArrayList result) {
+ Log.debug("Retrived column: " + result);
+ columns = result;
+
+ create();
+ }
+
+ });
+
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/expression/ConditionOnMultiColumnWidget.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/expression/ConditionOnMultiColumnWidget.java
index 77dba91..c0ba56a 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/expression/ConditionOnMultiColumnWidget.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/expression/ConditionOnMultiColumnWidget.java
@@ -6,8 +6,13 @@ import java.util.Iterator;
import java.util.List;
import org.gcube.portlets.user.td.expressionwidget.client.custom.IconButton;
+import org.gcube.portlets.user.td.expressionwidget.client.multicolumn.ArgType;
+import org.gcube.portlets.user.td.expressionwidget.client.multicolumn.ArgTypePropertiesCombo;
+import org.gcube.portlets.user.td.expressionwidget.client.multicolumn.DepthOfExpressionType;
+import org.gcube.portlets.user.td.expressionwidget.client.multicolumn.DepthOfExpressionTypePropertiesCombo;
import org.gcube.portlets.user.td.expressionwidget.client.operation.Operation;
import org.gcube.portlets.user.td.expressionwidget.client.operation.OperationProperties;
+import org.gcube.portlets.user.td.expressionwidget.client.operation.OperationsStore;
import org.gcube.portlets.user.td.expressionwidget.client.properties.ColumnDataPropertiesCombo;
import org.gcube.portlets.user.td.expressionwidget.client.resources.ExpressionResources;
import org.gcube.portlets.user.td.expressionwidget.client.threshold.Threshold;
@@ -49,11 +54,22 @@ import com.sencha.gxt.widget.core.client.form.TextField;
*/
public class ConditionOnMultiColumnWidget extends SimpleContainer {
+
private static final String SIGN = "ConditionOnMultiColumns";
private static final String HEIGHT = "210px";
private static final String WIDTH = "612px";
-
- private String itemIdComboIndent;
+ private static final String COMBO_DEPTH_WIDTH = "64px";
+ private static final String COMBO_FIRST_ELEMENT_COLUMN_WIDTH = "150px";
+ private static final String COMBO_OPERATOR_WIDTH = "150px";
+ private static final String COMBO_FIRST_ARG_TYPE_WIDTH = "120px";
+ private static final String COMBO_FIRST_ARG_COLUMN_WIDTH = "150px";
+ private static final String COMBO_SECOND_ARG_TYPE_WIDTH = "120px";
+ private static final String COMBO_SECOND_ARG_COLUMN_WIDTH = "150px";
+ private static final String COMBO_THRESHOLD_WIDTH = "50px";
+
+
+
+ private String itemIdComboDepth;
private String itemIdFirstElementColumn;
private String itemIdComboOperation;
@@ -76,7 +92,8 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
private ArrayList columns;
private String readableExpression;
- private ConditionOnMultiColumnWidget thisCont;
+
+ // private ConditionOnMultiColumnWidget thisCont;
public ConditionOnMultiColumnWidget(ArrayList columns) {
super();
@@ -102,14 +119,14 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
setHeight(height);
setBorders(true);
forceLayoutOnResize = true;
- thisCont = this;
+ // thisCont = this;
}
protected void create(ArrayList columns) {
this.columns = columns;
- itemIdComboIndent = "ComboIndent" + SIGN;
+ itemIdComboDepth = "ComboDepth" + SIGN;
itemIdFirstElementColumn = "FirstElementColumn" + SIGN;
itemIdComboOperation = "ComboOperation" + SIGN;
@@ -141,26 +158,28 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
protected void setup() {
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
- // Combo Indent
- ColumnDataPropertiesCombo propsIndent = GWT
- .create(ColumnDataPropertiesCombo.class);
- Log.debug("Props: " + propsIndent);
- final ListStore storeIndent = new ListStore(
- propsIndent.id());
- Log.debug("StoreIndent: " + storeIndent);
+ // Combo Depth
+ DepthOfExpressionTypePropertiesCombo propsDepth = GWT
+ .create(DepthOfExpressionTypePropertiesCombo.class);
+ Log.debug("Props: " + propsDepth);
+ final ListStore storeDepth = new ListStore(
+ propsDepth.id());
+ storeDepth.addAll(DepthOfExpressionType.asList());
+ Log.debug("StoreDepth: " + storeDepth);
- Log.debug("StoreIndent created");
- final ComboBox comboIndent = new ComboBox(
- storeIndent, propsIndent.label());
+ Log.debug("StoreDepth created");
+ final ComboBox comboDepth = new ComboBox(
+ storeDepth, propsDepth.label());
- Log.debug("Combo Indent created");
+ Log.debug("Combo Depth created");
- comboIndent.setEmptyText("Select a type...");
- comboIndent.setItemId(itemIdComboIndent);
- comboIndent.setWidth("100px");
- comboIndent.setEditable(false);
- comboIndent.setTriggerAction(TriggerAction.ALL);
- comboIndent.setVisible(false);
+ comboDepth.setEmptyText("");
+ comboDepth.setItemId(itemIdComboDepth);
+ comboDepth.setWidth(COMBO_DEPTH_WIDTH);
+ comboDepth.setEditable(false);
+ comboDepth.setAllowBlank(true);
+
+ comboDepth.setTriggerAction(TriggerAction.ALL);
// Combo FirstElementColumn
ColumnDataPropertiesCombo propsFirstElementColumn = GWT
@@ -178,10 +197,49 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboFirstElementColumn.setEmptyText("Select a column...");
comboFirstElementColumn.setItemId(itemIdFirstElementColumn);
- comboFirstElementColumn.setWidth("100px");
+ comboFirstElementColumn.setWidth(COMBO_FIRST_ELEMENT_COLUMN_WIDTH);
comboFirstElementColumn.setEditable(false);
comboFirstElementColumn.setTriggerAction(TriggerAction.ALL);
- comboFirstElementColumn.setVisible(false);
+
+ // Combo Operator
+ OperationProperties props = GWT.create(OperationProperties.class);
+ Log.debug("Props: " + props);
+ final ListStore storeOperator = new ListStore(
+ props.id());
+ Log.debug("Store: " + storeOperator);
+
+ Log.debug("Store Operator created");
+ final ComboBox comboOperator = new ComboBox(
+ storeOperator, props.label());
+
+ Log.debug("Combo Operator created");
+
+ comboOperator.setEmptyText("Select a condition...");
+ comboOperator.setItemId(itemIdComboOperation);
+ comboOperator.setWidth(COMBO_OPERATOR_WIDTH);
+ comboOperator.setEditable(false);
+ comboOperator.setTriggerAction(TriggerAction.ALL);
+
+ // Combo FirstArgType
+ ArgTypePropertiesCombo propsFirstArgType = GWT
+ .create(ArgTypePropertiesCombo.class);
+ Log.debug("Props: " + propsFirstArgType);
+ final ListStore storeFirstArgType = new ListStore(
+ propsFirstArgType.id());
+ storeFirstArgType.addAll(ArgType.asList());
+ Log.debug("StoreFirstArgType: " + storeFirstArgType);
+
+ Log.debug("StoreFirstArgType created");
+ final ComboBox comboFirstArgType = new ComboBox(
+ storeFirstArgType, propsFirstArgType.label());
+
+ Log.debug("Combo FirstArgType created");
+
+ comboFirstArgType.setEmptyText("Select a column...");
+ comboFirstArgType.setItemId(itemIdFirstArgType);
+ comboFirstArgType.setWidth(COMBO_FIRST_ARG_TYPE_WIDTH);
+ comboFirstArgType.setEditable(false);
+ comboFirstArgType.setTriggerAction(TriggerAction.ALL);
// Combo FirstArgColumn
ColumnDataPropertiesCombo propsFirstArgColumn = GWT
@@ -199,23 +257,40 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboFirstArgColumn.setEmptyText("Select a column...");
comboFirstArgColumn.setItemId(itemIdFirstArgColumn);
- comboFirstArgColumn.setWidth("100px");
+ comboFirstArgColumn.setWidth(COMBO_FIRST_ARG_COLUMN_WIDTH);
comboFirstArgColumn.setEditable(false);
comboFirstArgColumn.setTriggerAction(TriggerAction.ALL);
- comboFirstArgColumn.setVisible(false);
final TextField firstArgValue = new TextField();
firstArgValue.setItemId(itemIdFirstArgValue);
- firstArgValue.setVisible(false);
final DateField firstArgDate = new DateField();
firstArgDate.setItemId(itemIdFirstArgDate);
- firstArgDate.setVisible(false);
// And
final HTML andText = new HTML(
"and
");
- andText.setVisible(false);
+
+ // Combo SecondArgType
+ ArgTypePropertiesCombo propsSecondArgType = GWT
+ .create(ArgTypePropertiesCombo.class);
+ Log.debug("Props: " + propsSecondArgType);
+ final ListStore storeSecondArgType = new ListStore(
+ propsSecondArgType.id());
+ storeSecondArgType.addAll(ArgType.asList());
+ Log.debug("StoreSecondArgType: " + storeSecondArgType);
+
+ Log.debug("StoreSecondArgType created");
+ final ComboBox comboSecondArgType = new ComboBox(
+ storeSecondArgType, propsSecondArgType.label());
+
+ Log.debug("Combo SecondArgType created");
+
+ comboSecondArgType.setEmptyText("Select a column...");
+ comboSecondArgType.setItemId(itemIdSecondArgType);
+ comboSecondArgType.setWidth(COMBO_SECOND_ARG_TYPE_WIDTH);
+ comboSecondArgType.setEditable(false);
+ comboSecondArgType.setTriggerAction(TriggerAction.ALL);
// Combo SecondArgColumn
ColumnDataPropertiesCombo propsSecondArgColumn = GWT
@@ -233,18 +308,15 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboSecondArgColumn.setEmptyText("Select a column...");
comboSecondArgColumn.setItemId(itemIdSecondArgColumn);
- comboSecondArgColumn.setWidth("100px");
+ comboSecondArgColumn.setWidth(COMBO_SECOND_ARG_COLUMN_WIDTH);
comboSecondArgColumn.setEditable(false);
comboSecondArgColumn.setTriggerAction(TriggerAction.ALL);
- comboSecondArgColumn.setVisible(false);
final TextField secondArgValue = new TextField();
secondArgValue.setItemId(itemIdSecondArgValue);
- secondArgValue.setVisible(false);
final DateField secondArgDate = new DateField();
secondArgDate.setItemId(itemIdSecondArgDate);
- secondArgDate.setVisible(false);
// Combo Similarity and Levenshtein threshold
ThresholdProperties propsThreshold = GWT
@@ -263,165 +335,12 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboThreshold.setEmptyText("Select a threshold...");
comboThreshold.setItemId(itemIdComboThreshold);
- comboThreshold.setWidth("100px");
+ comboThreshold.setWidth(COMBO_THRESHOLD_WIDTH);
comboThreshold.setEditable(false);
comboThreshold.setTriggerAction(TriggerAction.ALL);
- comboThreshold.setVisible(false);
final HTML thresholdText = new HTML(
"Threshold:
");
- thresholdText.setVisible(false);
-
- // Operation
- OperationProperties props = GWT.create(OperationProperties.class);
- Log.debug("Props: " + props);
- ListStore storeOp = new ListStore(props.id());
- Log.debug("Store: " + storeOp);
-
- Log.debug("Store created");
- ComboBox comboOp = new ComboBox(storeOp,
- props.label());
-
- Log.debug("Combo created");
-
- comboOp.addSelectionHandler(new SelectionHandler() {
-
- public void onSelection(SelectionEvent event) {
- if (event.getSelectedItem() != null) {
- ColumnData column = comboFirstElementColumn
- .getCurrentValue();
- Operation op = event.getSelectedItem();
- Log.debug("Condition selected:" + op.toString());
- switch (op.getOperatorType()) {
- case EQUALS:
- case GREATER:
- case GREATER_OR_EQUALS:
- case LESSER:
- case LESSER_OR_EQUALS:
- case NOT_EQUALS:
- case NOT_GREATER:
- case NOT_LESSER:
- case BEGINS_WITH:
- case ENDS_WITH:
- case MATCH_REGEX:
- case CONTAINS:
- case NOT_BEGINS_WITH:
- case NOT_ENDS_WITH:
- case NOT_CONTAINS:
- case NOT_MATCH_REGEX:
- case IN:
- case NOT_IN:
- case SOUNDEX:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(true);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- comboThreshold.setVisible(false);
- thresholdText.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- case BETWEEN:
- case NOT_BETWEEN:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(true);
- secondArgValue.setVisible(true);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- case LEVENSHTEIN:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(true);
- storeThreshold.clear();
- storeThreshold
- .addAll(ThresholdStore.thresholdsLevenshtein);
- storeThreshold.commitChanges();
- comboThreshold.clear();
- comboThreshold.reset();
- comboThreshold.setVisible(true);
- comboThreshold.setValue(ThresholdStore
- .defaultThresholdLevenshtein());
-
- }
- break;
- case SIMILARITY:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(true);
- storeThreshold.clear();
- storeThreshold
- .addAll(ThresholdStore.thresholdsSimilarity);
- storeThreshold.commitChanges();
- comboThreshold.clear();
- comboThreshold.reset();
- comboThreshold.setVisible(true);
- comboThreshold.setValue(ThresholdStore
- .defaultThresholdSimilarity());
-
- }
- break;
- case IS_NULL:
- case IS_NOT_NULL:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(false);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- default:
- break;
- }
-
- thisCont.forceLayout();
-
- }
- }
-
- });
-
- comboOp.setEmptyText("Select a condition...");
- comboOp.setItemId(itemIdComboOperation);
- comboOp.setWidth("230px");
- comboOp.setEditable(false);
- comboOp.setTriggerAction(TriggerAction.ALL);
// Button
final IconButton btnAdd = new IconButton();
@@ -432,12 +351,10 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
public void onClick(ClickEvent event) {
Log.debug("Clicked btnAdd");
addCondition();
- thisCont.forceLayout();
vert.forceLayout();
}
});
- btnAdd.setVisible(false);
final IconButton btnDel = new IconButton();
btnDel.setItemId(itemIdBtnDel);
@@ -451,22 +368,541 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
setup();
} else {
if (vert.getWidgetCount() == 1) {
+ } else {
+ // TODO
+
}
}
- thisCont.forceLayout();
vert.forceLayout();
}
});
+
+ // Handlers
+ comboDepth
+ .addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(
+ SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ @SuppressWarnings("unchecked")
+ ComboBox source = (ComboBox) event
+ .getSource();
+
+ DepthOfExpressionType depth = event
+ .getSelectedItem();
+
+ if (depth == null) {
+ Log.debug("Depth Selected: null");
+ } else {
+ Log.debug("Depth Selected: " + depth.getLabel());
+ switch (depth) {
+ case BOTTOM:
+ storeFirstElementColumn.clear();
+ storeFirstElementColumn.addAll(columns);
+ storeFirstElementColumn.commitChanges();
+ comboFirstElementColumn.clear();
+ comboFirstElementColumn.reset();
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(true);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ removeCondition(source);
+ break;
+ case COMMA:
+ case STARTAND:
+ case STARTOR:
+ storeFirstElementColumn.clear();
+ storeFirstElementColumn.addAll(columns);
+ storeFirstElementColumn.commitChanges();
+ comboFirstElementColumn.clear();
+ comboFirstElementColumn.reset();
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(true);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ if (!existCondition(source)) {
+ addCondition();
+ }
+ break;
+ case ENDAND:
+ case ENDOR:
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(false);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(true);
+ btnDel.setVisible(true);
+ removeCondition(source);
+ break;
+ default:
+ break;
+
+ }
+
+ vert.forceLayout();
+ }
+
+ }
+
+ }
+ });
+
+ comboFirstElementColumn
+ .addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ColumnData column = event.getSelectedItem();
+
+ if (column == null) {
+ Log.debug("ComboFirstElement selected: null");
+ storeOperator.clear();
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ } else {
+ Log.debug("ComboFirstElement selected: "
+ + column.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(column
+ .getDataTypeName());
+ if (columnDataType == null) {
+ storeOperator.clear();
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ } else {
+ OperationsStore operationStore = new OperationsStore();
+ storeOperator.clear();
+ storeOperator.addAll(operationStore
+ .getAll(column));
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(true);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ }
+
+ }
+ vert.forceLayout();
+ }
+ }
+ });
+
+ comboOperator.addSelectionHandler(new SelectionHandler() {
+
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ Operation op = event.getSelectedItem();
+ if (op == null) {
+ Log.debug("Operator selected: null");
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + op.toString());
+ switch (op.getOperatorType()) {
+ case EQUALS:
+ case GREATER:
+ case GREATER_OR_EQUALS:
+ case LESSER:
+ case LESSER_OR_EQUALS:
+ case NOT_EQUALS:
+ case NOT_GREATER:
+ case NOT_LESSER:
+ case BEGINS_WITH:
+ case ENDS_WITH:
+ case MATCH_REGEX:
+ case CONTAINS:
+ case NOT_BEGINS_WITH:
+ case NOT_ENDS_WITH:
+ case NOT_CONTAINS:
+ case NOT_MATCH_REGEX:
+ case IN:
+ case NOT_IN:
+ case SOUNDEX:
+ comboFirstArgType.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ case BETWEEN:
+ case NOT_BETWEEN:
+ comboFirstArgType.reset();
+ comboSecondArgType.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(true);
+ comboSecondArgType.setVisible(true);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ case LEVENSHTEIN:
+ comboFirstArgType.reset();
+ storeThreshold.clear();
+ storeThreshold
+ .addAll(ThresholdStore.thresholdsLevenshtein);
+ storeThreshold.commitChanges();
+ comboThreshold.clear();
+ comboThreshold.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(true);
+ comboThreshold.setVisible(true);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ comboThreshold.setValue(ThresholdStore
+ .defaultThresholdLevenshtein());
+
+ break;
+ case SIMILARITY:
+ comboFirstArgType.reset();
+ storeThreshold.clear();
+ storeThreshold
+ .addAll(ThresholdStore.thresholdsSimilarity);
+ storeThreshold.commitChanges();
+ comboThreshold.clear();
+ comboThreshold.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(true);
+ comboThreshold.setVisible(true);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ comboThreshold.setValue(ThresholdStore
+ .defaultThresholdSimilarity());
+
+ break;
+ case IS_NULL:
+ case IS_NOT_NULL:
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ default:
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ }
+ }
+ vert.forceLayout();
+ }
+ }
+
+ });
+
+ comboFirstArgType.addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ArgType argType = event.getSelectedItem();
+ if (argType == null) {
+ Log.debug("Operator selected: null");
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + argType.getLabel());
+ ColumnData firstElementColumn = comboFirstElementColumn
+ .getCurrentValue();
+ if (firstElementColumn == null) {
+ Log.debug("FirstElementColumn selected: null");
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ } else {
+ Log.debug("FirstElementColumn selected: "
+ + firstElementColumn.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(firstElementColumn
+ .getDataTypeName());
+ switch (argType) {
+ case COLUMN:
+ storeFirstArgColumn.clear();
+ storeFirstArgColumn
+ .addAll(getSanitizedColumns(firstElementColumn));
+ storeFirstArgColumn.commitChanges();
+ comboFirstArgColumn.clear();
+ comboFirstArgColumn.reset();
+
+ comboFirstArgColumn.setVisible(true);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ break;
+ case VALUE:
+ comboFirstArgColumn.setVisible(false);
+ if (columnDataType
+ .compareTo(ColumnDataType.Date) == 0) {
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(true);
+ } else {
+ firstArgValue.setVisible(true);
+ firstArgDate.setVisible(false);
+ }
+ break;
+ default:
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ break;
+ }
+ }
+ }
+ vert.forceLayout();
+ }
+
+ }
+ });
+
+ comboSecondArgType.addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ArgType argType = event.getSelectedItem();
+ if (argType == null) {
+ Log.debug("Operator selected: null");
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + argType.getLabel());
+ ColumnData firstElementColumn = comboFirstElementColumn
+ .getCurrentValue();
+ if (firstElementColumn == null) {
+ Log.debug("FirstElementColumn selected: null");
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ } else {
+ Log.debug("FirstElementColumn selected: "
+ + firstElementColumn.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(firstElementColumn
+ .getDataTypeName());
+
+ switch (argType) {
+ case COLUMN:
+ storeSecondArgColumn.clear();
+ storeSecondArgColumn
+ .addAll(getSanitizedColumns(firstElementColumn));
+ storeSecondArgColumn.commitChanges();
+ comboSecondArgColumn.clear();
+ comboSecondArgColumn.reset();
+
+ comboSecondArgColumn.setVisible(true);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ break;
+ case VALUE:
+ comboSecondArgColumn.setVisible(false);
+ if (columnDataType
+ .compareTo(ColumnDataType.Date) == 0) {
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(true);
+ } else {
+ secondArgValue.setVisible(true);
+ secondArgDate.setVisible(false);
+ }
+ break;
+ default:
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ break;
+ }
+ }
+ }
+ vert.forceLayout();
+ }
+
+ }
+ });
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(false);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
btnDel.setVisible(false);
- horiz.add(comboOp, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboDepth, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstElementColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboOperator, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstArgType, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstArgColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(firstArgValue, new BoxLayoutData(new Margins(0)));
horiz.add(firstArgDate, new BoxLayoutData(new Margins(0)));
horiz.add(andText, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboSecondArgType, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboSecondArgColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(secondArgValue, new BoxLayoutData(new Margins(0)));
horiz.add(secondArgDate, new BoxLayoutData(new Margins(0)));
horiz.add(thresholdText, new BoxLayoutData(new Margins(0)));
horiz.add(comboThreshold, new BoxLayoutData(new Margins(0)));
-
horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 0, 2, 0)));
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 0, 2, 0)));
@@ -484,29 +920,28 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
}
protected void addCondition() {
-
final HBoxLayoutContainer horiz = new HBoxLayoutContainer();
- // Combo Indent
- ColumnDataPropertiesCombo propsIndent = GWT
- .create(ColumnDataPropertiesCombo.class);
- Log.debug("Props: " + propsIndent);
- final ListStore storeIndent = new ListStore(
- propsIndent.id());
- Log.debug("StoreIndent: " + storeIndent);
+ // Combo Depth
+ DepthOfExpressionTypePropertiesCombo propsDepth = GWT
+ .create(DepthOfExpressionTypePropertiesCombo.class);
+ Log.debug("Props: " + propsDepth);
+ final ListStore storeDepth = new ListStore(
+ propsDepth.id());
+ storeDepth.addAll(DepthOfExpressionType.asList());
+ Log.debug("StoreDepth: " + storeDepth);
- Log.debug("StoreIndent created");
- final ComboBox comboIndent = new ComboBox(
- storeIndent, propsIndent.label());
+ Log.debug("StoreDepth created");
+ final ComboBox comboDepth = new ComboBox(
+ storeDepth, propsDepth.label());
- Log.debug("Combo Indent created");
+ Log.debug("Combo Depth created");
- comboIndent.setEmptyText("Select a type...");
- comboIndent.setItemId(itemIdComboIndent);
- comboIndent.setWidth("100px");
- comboIndent.setEditable(false);
- comboIndent.setTriggerAction(TriggerAction.ALL);
- comboIndent.setVisible(false);
+ comboDepth.setEmptyText("Select a type...");
+ comboDepth.setItemId(itemIdComboDepth);
+ comboDepth.setWidth(COMBO_DEPTH_WIDTH);
+ comboDepth.setEditable(false);
+ comboDepth.setTriggerAction(TriggerAction.ALL);
// Combo FirstElementColumn
ColumnDataPropertiesCombo propsFirstElementColumn = GWT
@@ -524,10 +959,49 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboFirstElementColumn.setEmptyText("Select a column...");
comboFirstElementColumn.setItemId(itemIdFirstElementColumn);
- comboFirstElementColumn.setWidth("100px");
+ comboFirstElementColumn.setWidth(COMBO_FIRST_ELEMENT_COLUMN_WIDTH);
comboFirstElementColumn.setEditable(false);
comboFirstElementColumn.setTriggerAction(TriggerAction.ALL);
- comboFirstElementColumn.setVisible(false);
+
+ // Combo Operator
+ OperationProperties props = GWT.create(OperationProperties.class);
+ Log.debug("Props: " + props);
+ final ListStore storeOperator = new ListStore(
+ props.id());
+ Log.debug("Store: " + storeOperator);
+
+ Log.debug("Store Operator created");
+ final ComboBox comboOperator = new ComboBox(
+ storeOperator, props.label());
+
+ Log.debug("Combo Operator created");
+
+ comboOperator.setEmptyText("Select a condition...");
+ comboOperator.setItemId(itemIdComboOperation);
+ comboOperator.setWidth(COMBO_OPERATOR_WIDTH);
+ comboOperator.setEditable(false);
+ comboOperator.setTriggerAction(TriggerAction.ALL);
+
+ // Combo FirstArgType
+ ArgTypePropertiesCombo propsFirstArgType = GWT
+ .create(ArgTypePropertiesCombo.class);
+ Log.debug("Props: " + propsFirstArgType);
+ final ListStore storeFirstArgType = new ListStore(
+ propsFirstArgType.id());
+ storeFirstArgType.addAll(ArgType.asList());
+ Log.debug("StoreFirstArgType: " + storeFirstArgType);
+
+ Log.debug("StoreFirstArgType created");
+ final ComboBox comboFirstArgType = new ComboBox(
+ storeFirstArgType, propsFirstArgType.label());
+
+ Log.debug("Combo FirstArgType created");
+
+ comboFirstArgType.setEmptyText("Select a column...");
+ comboFirstArgType.setItemId(itemIdFirstArgType);
+ comboFirstArgType.setWidth(COMBO_FIRST_ARG_TYPE_WIDTH);
+ comboFirstArgType.setEditable(false);
+ comboFirstArgType.setTriggerAction(TriggerAction.ALL);
// Combo FirstArgColumn
ColumnDataPropertiesCombo propsFirstArgColumn = GWT
@@ -545,23 +1019,40 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboFirstArgColumn.setEmptyText("Select a column...");
comboFirstArgColumn.setItemId(itemIdFirstArgColumn);
- comboFirstArgColumn.setWidth("100px");
+ comboFirstArgColumn.setWidth(COMBO_FIRST_ARG_COLUMN_WIDTH);
comboFirstArgColumn.setEditable(false);
comboFirstArgColumn.setTriggerAction(TriggerAction.ALL);
- comboFirstArgColumn.setVisible(false);
final TextField firstArgValue = new TextField();
firstArgValue.setItemId(itemIdFirstArgValue);
- firstArgValue.setVisible(false);
final DateField firstArgDate = new DateField();
firstArgDate.setItemId(itemIdFirstArgDate);
- firstArgDate.setVisible(false);
// And
final HTML andText = new HTML(
"and
");
- andText.setVisible(false);
+
+ // Combo SecondArgType
+ ArgTypePropertiesCombo propsSecondArgType = GWT
+ .create(ArgTypePropertiesCombo.class);
+ Log.debug("Props: " + propsSecondArgType);
+ final ListStore storeSecondArgType = new ListStore(
+ propsSecondArgType.id());
+ storeSecondArgType.addAll(ArgType.asList());
+ Log.debug("StoreSecondArgType: " + storeSecondArgType);
+
+ Log.debug("StoreSecondArgType created");
+ final ComboBox comboSecondArgType = new ComboBox(
+ storeSecondArgType, propsSecondArgType.label());
+
+ Log.debug("Combo SecondArgType created");
+
+ comboSecondArgType.setEmptyText("Select a column...");
+ comboSecondArgType.setItemId(itemIdSecondArgType);
+ comboSecondArgType.setWidth(COMBO_SECOND_ARG_TYPE_WIDTH);
+ comboSecondArgType.setEditable(false);
+ comboSecondArgType.setTriggerAction(TriggerAction.ALL);
// Combo SecondArgColumn
ColumnDataPropertiesCombo propsSecondArgColumn = GWT
@@ -579,18 +1070,15 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboSecondArgColumn.setEmptyText("Select a column...");
comboSecondArgColumn.setItemId(itemIdSecondArgColumn);
- comboSecondArgColumn.setWidth("100px");
+ comboSecondArgColumn.setWidth(COMBO_SECOND_ARG_COLUMN_WIDTH);
comboSecondArgColumn.setEditable(false);
comboSecondArgColumn.setTriggerAction(TriggerAction.ALL);
- comboSecondArgColumn.setVisible(false);
final TextField secondArgValue = new TextField();
secondArgValue.setItemId(itemIdSecondArgValue);
- secondArgValue.setVisible(false);
final DateField secondArgDate = new DateField();
secondArgDate.setItemId(itemIdSecondArgDate);
- secondArgDate.setVisible(false);
// Combo Similarity and Levenshtein threshold
ThresholdProperties propsThreshold = GWT
@@ -609,165 +1097,12 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
comboThreshold.setEmptyText("Select a threshold...");
comboThreshold.setItemId(itemIdComboThreshold);
- comboThreshold.setWidth("100px");
+ comboThreshold.setWidth(COMBO_THRESHOLD_WIDTH);
comboThreshold.setEditable(false);
comboThreshold.setTriggerAction(TriggerAction.ALL);
- comboThreshold.setVisible(false);
final HTML thresholdText = new HTML(
"Threshold:
");
- thresholdText.setVisible(false);
-
- // Operation
- OperationProperties props = GWT.create(OperationProperties.class);
- Log.debug("Props: " + props);
- ListStore storeOp = new ListStore(props.id());
- Log.debug("Store: " + storeOp);
-
- Log.debug("Store created");
- ComboBox comboOp = new ComboBox(storeOp,
- props.label());
-
- Log.debug("Combo created");
-
- comboOp.addSelectionHandler(new SelectionHandler() {
-
- public void onSelection(SelectionEvent event) {
- if (event.getSelectedItem() != null) {
- ColumnData column = comboFirstElementColumn
- .getCurrentValue();
- Operation op = event.getSelectedItem();
- Log.debug("Condition selected:" + op.toString());
- switch (op.getOperatorType()) {
- case EQUALS:
- case GREATER:
- case GREATER_OR_EQUALS:
- case LESSER:
- case LESSER_OR_EQUALS:
- case NOT_EQUALS:
- case NOT_GREATER:
- case NOT_LESSER:
- case BEGINS_WITH:
- case ENDS_WITH:
- case MATCH_REGEX:
- case CONTAINS:
- case NOT_BEGINS_WITH:
- case NOT_ENDS_WITH:
- case NOT_CONTAINS:
- case NOT_MATCH_REGEX:
- case IN:
- case NOT_IN:
- case SOUNDEX:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(true);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- comboThreshold.setVisible(false);
- thresholdText.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- case BETWEEN:
- case NOT_BETWEEN:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(true);
- secondArgValue.setVisible(true);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- case LEVENSHTEIN:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(true);
- storeThreshold.clear();
- storeThreshold
- .addAll(ThresholdStore.thresholdsLevenshtein);
- storeThreshold.commitChanges();
- comboThreshold.clear();
- comboThreshold.reset();
- comboThreshold.setVisible(true);
- comboThreshold.setValue(ThresholdStore
- .defaultThresholdLevenshtein());
-
- }
- break;
- case SIMILARITY:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(true);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(true);
- storeThreshold.clear();
- storeThreshold
- .addAll(ThresholdStore.thresholdsSimilarity);
- storeThreshold.commitChanges();
- comboThreshold.clear();
- comboThreshold.reset();
- comboThreshold.setVisible(true);
- comboThreshold.setValue(ThresholdStore
- .defaultThresholdSimilarity());
-
- }
- break;
- case IS_NULL:
- case IS_NOT_NULL:
- if (column.getDataTypeName().compareTo("Date") == 0) {
- firstArgDate.setVisible(false);
- andText.setVisible(false);
- secondArgDate.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- } else {
- firstArgValue.setVisible(false);
- andText.setVisible(false);
- secondArgValue.setVisible(false);
- thresholdText.setVisible(false);
- comboThreshold.setVisible(false);
- }
- break;
- default:
- break;
- }
-
- thisCont.forceLayout();
-
- }
- }
-
- });
-
- comboOp.setEmptyText("Select a condition...");
- comboOp.setItemId(itemIdComboOperation);
- comboOp.setWidth("230px");
- comboOp.setEditable(false);
- comboOp.setTriggerAction(TriggerAction.ALL);
// Button
final IconButton btnAdd = new IconButton();
@@ -778,12 +1113,10 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
public void onClick(ClickEvent event) {
Log.debug("Clicked btnAdd");
addCondition();
- thisCont.forceLayout();
vert.forceLayout();
}
});
- btnAdd.setVisible(false);
final IconButton btnDel = new IconButton();
btnDel.setItemId(itemIdBtnDel);
@@ -797,30 +1130,581 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
setup();
} else {
if (vert.getWidgetCount() == 1) {
+ } else {
+ // TODO
+
}
}
- thisCont.forceLayout();
vert.forceLayout();
}
});
+
+ // Handlers
+ comboDepth
+ .addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(
+ SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ @SuppressWarnings("unchecked")
+ ComboBox source = (ComboBox) event
+ .getSource();
+
+ DepthOfExpressionType depth = event
+ .getSelectedItem();
+
+ if (depth == null) {
+ Log.debug("Depth Selected: null");
+ } else {
+ Log.debug("Depth Selected: " + depth.getLabel());
+ switch (depth) {
+ case BOTTOM:
+ storeFirstElementColumn.clear();
+ storeFirstElementColumn.addAll(columns);
+ storeFirstElementColumn.commitChanges();
+ comboFirstElementColumn.clear();
+ comboFirstElementColumn.reset();
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(true);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ removeCondition(source);
+ break;
+ case COMMA:
+ case STARTAND:
+ case STARTOR:
+ storeFirstElementColumn.clear();
+ storeFirstElementColumn.addAll(columns);
+ storeFirstElementColumn.commitChanges();
+ comboFirstElementColumn.clear();
+ comboFirstElementColumn.reset();
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(true);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ if (!existCondition(source)) {
+ addCondition();
+ }
+ break;
+ case ENDAND:
+ case ENDOR:
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(false);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(true);
+ btnDel.setVisible(true);
+ removeCondition(source);
+ break;
+ default:
+ break;
+
+ }
+
+ vert.forceLayout();
+ }
+
+ }
+
+ }
+ });
+
+ comboFirstElementColumn
+ .addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ColumnData column = event.getSelectedItem();
+
+ if (column == null) {
+ Log.debug("ComboFirstElement selected: null");
+ storeOperator.clear();
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ } else {
+ Log.debug("ComboFirstElement selected: "
+ + column.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(column
+ .getDataTypeName());
+ if (columnDataType == null) {
+ storeOperator.clear();
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ } else {
+ OperationsStore operationStore = new OperationsStore();
+ storeOperator.clear();
+ storeOperator.addAll(operationStore
+ .getAll(column));
+ storeOperator.commitChanges();
+ comboOperator.clear();
+ comboOperator.reset();
+
+ comboOperator.setVisible(true);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ }
+
+ }
+ vert.forceLayout();
+ }
+ }
+ });
+
+ comboOperator.addSelectionHandler(new SelectionHandler() {
+
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ Operation op = event.getSelectedItem();
+ if (op == null) {
+ Log.debug("Operator selected: null");
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + op.toString());
+ switch (op.getOperatorType()) {
+ case EQUALS:
+ case GREATER:
+ case GREATER_OR_EQUALS:
+ case LESSER:
+ case LESSER_OR_EQUALS:
+ case NOT_EQUALS:
+ case NOT_GREATER:
+ case NOT_LESSER:
+ case BEGINS_WITH:
+ case ENDS_WITH:
+ case MATCH_REGEX:
+ case CONTAINS:
+ case NOT_BEGINS_WITH:
+ case NOT_ENDS_WITH:
+ case NOT_CONTAINS:
+ case NOT_MATCH_REGEX:
+ case IN:
+ case NOT_IN:
+ case SOUNDEX:
+ comboFirstArgType.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ case BETWEEN:
+ case NOT_BETWEEN:
+ comboFirstArgType.reset();
+ comboSecondArgType.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(true);
+ comboSecondArgType.setVisible(true);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ case LEVENSHTEIN:
+ comboFirstArgType.reset();
+ storeThreshold.clear();
+ storeThreshold
+ .addAll(ThresholdStore.thresholdsLevenshtein);
+ storeThreshold.commitChanges();
+ comboThreshold.clear();
+ comboThreshold.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(true);
+ comboThreshold.setVisible(true);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ comboThreshold.setValue(ThresholdStore
+ .defaultThresholdLevenshtein());
+
+ break;
+ case SIMILARITY:
+ comboFirstArgType.reset();
+ storeThreshold.clear();
+ storeThreshold
+ .addAll(ThresholdStore.thresholdsSimilarity);
+ storeThreshold.commitChanges();
+ comboThreshold.clear();
+ comboThreshold.reset();
+
+ comboFirstArgType.setVisible(true);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(true);
+ comboThreshold.setVisible(true);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+
+ comboThreshold.setValue(ThresholdStore
+ .defaultThresholdSimilarity());
+
+ break;
+ case IS_NULL:
+ case IS_NOT_NULL:
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ default:
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
+ btnDel.setVisible(false);
+ break;
+ }
+ }
+ vert.forceLayout();
+ }
+ }
+
+ });
+
+ comboFirstArgType.addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ArgType argType = event.getSelectedItem();
+ if (argType == null) {
+ Log.debug("Operator selected: null");
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + argType.getLabel());
+ ColumnData firstElementColumn = comboFirstElementColumn
+ .getCurrentValue();
+ if (firstElementColumn == null) {
+ Log.debug("FirstElementColumn selected: null");
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ } else {
+ Log.debug("FirstElementColumn selected: "
+ + firstElementColumn.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(firstElementColumn
+ .getDataTypeName());
+ switch (argType) {
+ case COLUMN:
+ storeFirstArgColumn.clear();
+ storeFirstArgColumn
+ .addAll(getSanitizedColumns(firstElementColumn));
+ storeFirstArgColumn.commitChanges();
+ comboFirstArgColumn.clear();
+ comboFirstArgColumn.reset();
+
+ comboFirstArgColumn.setVisible(true);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ break;
+ case VALUE:
+ comboFirstArgColumn.setVisible(false);
+ if (columnDataType
+ .compareTo(ColumnDataType.Date) == 0) {
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(true);
+ } else {
+ firstArgValue.setVisible(true);
+ firstArgDate.setVisible(false);
+ }
+ break;
+ default:
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ break;
+ }
+ }
+ }
+ vert.forceLayout();
+ }
+
+ }
+ });
+
+ comboSecondArgType.addSelectionHandler(new SelectionHandler() {
+
+ @Override
+ public void onSelection(SelectionEvent event) {
+ if (event.getSelectedItem() != null) {
+ ArgType argType = event.getSelectedItem();
+ if (argType == null) {
+ Log.debug("Operator selected: null");
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ } else {
+ Log.debug("Operator selected:" + argType.getLabel());
+ ColumnData firstElementColumn = comboFirstElementColumn
+ .getCurrentValue();
+ if (firstElementColumn == null) {
+ Log.debug("FirstElementColumn selected: null");
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ } else {
+ Log.debug("FirstElementColumn selected: "
+ + firstElementColumn.getLabel());
+ ColumnDataType columnDataType = ColumnDataType
+ .getColumnDataTypeFromId(firstElementColumn
+ .getDataTypeName());
+
+ switch (argType) {
+ case COLUMN:
+ storeSecondArgColumn.clear();
+ storeSecondArgColumn
+ .addAll(getSanitizedColumns(firstElementColumn));
+ storeSecondArgColumn.commitChanges();
+ comboSecondArgColumn.clear();
+ comboSecondArgColumn.reset();
+
+ comboSecondArgColumn.setVisible(true);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ break;
+ case VALUE:
+ comboSecondArgColumn.setVisible(false);
+ if (columnDataType
+ .compareTo(ColumnDataType.Date) == 0) {
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(true);
+ } else {
+ secondArgValue.setVisible(true);
+ secondArgDate.setVisible(false);
+ }
+ break;
+ default:
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ break;
+ }
+ }
+ }
+ vert.forceLayout();
+ }
+
+ }
+ });
+
+ comboDepth.setVisible(true);
+ comboFirstElementColumn.setVisible(false);
+ comboOperator.setVisible(false);
+ comboFirstArgType.setVisible(false);
+ comboFirstArgColumn.setVisible(false);
+ firstArgValue.setVisible(false);
+ firstArgDate.setVisible(false);
+ andText.setVisible(false);
+ comboSecondArgType.setVisible(false);
+ comboSecondArgColumn.setVisible(false);
+ secondArgValue.setVisible(false);
+ secondArgDate.setVisible(false);
+ thresholdText.setVisible(false);
+ comboThreshold.setVisible(false);
+ btnAdd.setVisible(false);
btnDel.setVisible(false);
- horiz.add(comboOp, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboDepth, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstElementColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboOperator, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstArgType, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboFirstArgColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(firstArgValue, new BoxLayoutData(new Margins(0)));
horiz.add(firstArgDate, new BoxLayoutData(new Margins(0)));
horiz.add(andText, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboSecondArgType, new BoxLayoutData(new Margins(0)));
+ horiz.add(comboSecondArgColumn, new BoxLayoutData(new Margins(0)));
+ horiz.add(secondArgValue, new BoxLayoutData(new Margins(0)));
horiz.add(secondArgDate, new BoxLayoutData(new Margins(0)));
horiz.add(thresholdText, new BoxLayoutData(new Margins(0)));
horiz.add(comboThreshold, new BoxLayoutData(new Margins(0)));
-
horiz.add(btnAdd, new BoxLayoutData(new Margins(2, 0, 2, 0)));
horiz.add(btnDel, new BoxLayoutData(new Margins(2, 0, 2, 0)));
-
vert.add(horiz, new VerticalLayoutData(-1, -1, new Margins(1)));
}
+ private ArrayList getSanitizedColumns(ColumnData column) {
+ ArrayList sanitizedColumns = new ArrayList(
+ columns);
+ sanitizedColumns.remove(column);
+ return sanitizedColumns;
+
+ }
+
+ private void removeCondition(ComboBox source) {
+ HBoxLayoutContainer horiz = (HBoxLayoutContainer) source.getParent();
+ int index = vert.getWidgetIndex(horiz);
+ Log.debug("No concat for index: " + index);
+ index++;
+ for (int i = index; i < vert.getWidgetCount();) {
+ Log.debug("Remove horiz index: " + i);
+ vert.remove(i);
+ }
+ }
+
+ private boolean existCondition(ComboBox source) {
+ boolean exist = false;
+ HBoxLayoutContainer horiz = (HBoxLayoutContainer) source.getParent();
+ int index = vert.getWidgetIndex(horiz);
+ Log.debug("No concat for index: " + index);
+ index++;
+ if (index < vert.getWidgetCount()) {
+ exist = true;
+ } else {
+ exist = false;
+ }
+ return exist;
+ }
+
@SuppressWarnings("unchecked")
public C_Expression getExpression() throws ConditionTypeMapException {
C_Expression exp = null;
@@ -835,7 +1719,6 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
C_Expression expression = null;
-
DateTimeFormat sdf = DateTimeFormat.getFormat("yyyy-MM-dd");
ConditionTypeMap mapOp = new ConditionTypeMap();
@@ -843,13 +1726,11 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
HBoxLayoutContainer horiz;
while (iteratorVert.hasNext()) {
horiz = (HBoxLayoutContainer) iteratorVert.next();
-
+
ComboBox comboFirstElementColumn = (ComboBox) horiz
.getItemByItemId(itemIdFirstElementColumn);
- ColumnData column = comboFirstElementColumn
- .getCurrentValue();
-
-
+ ColumnData column = comboFirstElementColumn.getCurrentValue();
+
ComboBox comboOp = (ComboBox) horiz
.getItemByItemId(itemIdComboOperation);
Log.debug("combo: " + comboOp.getCurrentValue());
@@ -876,8 +1757,10 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
null);
} else {
- firstArg = (TextField) horiz.getItemByItemId(itemIdFirstArgValue);
- secondArg = (TextField) horiz.getItemByItemId(itemIdSecondArgValue);
+ firstArg = (TextField) horiz
+ .getItemByItemId(itemIdFirstArgValue);
+ secondArg = (TextField) horiz
+ .getItemByItemId(itemIdSecondArgValue);
comboThreshold = (ComboBox) horiz
.getItemByItemId(itemIdComboThreshold);
@@ -901,38 +1784,24 @@ public class ConditionOnMultiColumnWidget extends SimpleContainer {
exp = arguments.get(0);
readableExpression = readableExpressionList.get(0);
} else {
- /*Radio radio = (Radio) groupMatch.getValue();
- Log.debug("Match:" + radio);
- if (radio.getName().compareTo("All") == 0) {
- exp = mapOp.createC_And(arguments);
- readableExpression = "And(";
- boolean first = true;
- for (String read : readableExpressionList) {
- if (first) {
- readableExpression += read;
- } else {
- readableExpression += ", " + read;
- }
- }
- readableExpression += ")";
-
- } else {
- if (radio.getName().compareTo("Any") == 0) {
- exp = mapOp.createC_Or(arguments);
- readableExpression = "Or(";
- boolean first = true;
- for (String read : readableExpressionList) {
- if (first) {
- readableExpression += read;
- } else {
- readableExpression += ", " + read;
- }
- }
- readableExpression += ")";
- } else {
- Log.error("No All or Any set!");
- }
- }*/
+ /*
+ * Radio radio = (Radio) groupMatch.getValue();
+ * Log.debug("Match:" + radio); if
+ * (radio.getName().compareTo("All") == 0) { exp =
+ * mapOp.createC_And(arguments); readableExpression = "And(";
+ * boolean first = true; for (String read :
+ * readableExpressionList) { if (first) { readableExpression +=
+ * read; } else { readableExpression += ", " + read; } }
+ * readableExpression += ")";
+ *
+ * } else { if (radio.getName().compareTo("Any") == 0) { exp =
+ * mapOp.createC_Or(arguments); readableExpression = "Or(";
+ * boolean first = true; for (String read :
+ * readableExpressionList) { if (first) { readableExpression +=
+ * read; } else { readableExpression += ", " + read; } }
+ * readableExpression += ")"; } else {
+ * Log.error("No All or Any set!"); } }
+ */
}
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgType.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgType.java
new file mode 100644
index 0000000..8fb95c0
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgType.java
@@ -0,0 +1,53 @@
+package org.gcube.portlets.user.td.expressionwidget.client.multicolumn;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ *
+ * @author giancarlo
+ * email: g.panichi@isti.cnr.it
+ *
+ */
+public enum ArgType {
+ COLUMN("Column"),
+ VALUE("Value");
+
+
+ /**
+ * @param text
+ */
+ private ArgType(final String id) {
+ this.id = id;
+ }
+
+ private final String id;
+
+
+
+ @Override
+ public String toString() {
+ return id;
+ }
+
+ public String getLabel() {
+ return id;
+ }
+
+ public static List asList(){
+ return Arrays.asList(values());
+ }
+
+ public static ArgType getTypeFromId(String id) {
+ for (ArgType type : values()) {
+ if (type.id.compareToIgnoreCase(id) == 0) {
+ return type;
+ }
+ }
+ return null;
+ }
+
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgTypePropertiesCombo.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgTypePropertiesCombo.java
new file mode 100644
index 0000000..e090fc7
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/ArgTypePropertiesCombo.java
@@ -0,0 +1,23 @@
+package org.gcube.portlets.user.td.expressionwidget.client.multicolumn;
+
+import com.google.gwt.editor.client.Editor.Path;
+import com.sencha.gxt.data.shared.LabelProvider;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.PropertyAccess;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public interface ArgTypePropertiesCombo extends
+ PropertyAccess {
+
+ @Path("name")
+ ModelKeyProvider id();
+
+ LabelProvider label();
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionType.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionType.java
index 8ffe98a..6c1a133 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionType.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionType.java
@@ -1,5 +1,8 @@
package org.gcube.portlets.user.td.expressionwidget.client.multicolumn;
+import java.util.Arrays;
+import java.util.List;
+
/**
*
@@ -7,13 +10,13 @@ package org.gcube.portlets.user.td.expressionwidget.client.multicolumn;
* email: g.panichi@isti.cnr.it
*
*/
-public enum DepthOfExpressionType {
- BOTTOM("Botom"),
- STARTOR("StartOr"),
- ENDOR("EndOr"),
- STARTAND("StartAnd"),
- ENDAND("EndAnd"),
- COMMA("Comma");
+public enum DepthOfExpressionType {
+ BOTTOM(" "),
+ STARTOR("Or("),
+ ENDOR(")"),
+ STARTAND("And["),
+ ENDAND("]"),
+ COMMA(",");
@@ -31,18 +34,24 @@ public enum DepthOfExpressionType {
return id;
}
- public String getTableTypeLabel() {
+ public String getLabel() {
return id;
}
+ public static List asList(){
+ return Arrays.asList(values());
+ }
public static DepthOfExpressionType getColumnDataTypeFromId(String id) {
- for (DepthOfExpressionType tableType : values()) {
- if (tableType.id.compareToIgnoreCase(id) == 0) {
- return tableType;
+ for (DepthOfExpressionType type : values()) {
+ if (type.id.compareToIgnoreCase(id) == 0) {
+ return type;
}
}
+
return null;
}
+
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionTypePropertiesCombo.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionTypePropertiesCombo.java
new file mode 100644
index 0000000..3e3b344
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/multicolumn/DepthOfExpressionTypePropertiesCombo.java
@@ -0,0 +1,23 @@
+package org.gcube.portlets.user.td.expressionwidget.client.multicolumn;
+
+import com.google.gwt.editor.client.Editor.Path;
+import com.sencha.gxt.data.shared.LabelProvider;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.PropertyAccess;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public interface DepthOfExpressionTypePropertiesCombo extends
+ PropertyAccess {
+
+ @Path("name")
+ ModelKeyProvider id();
+
+ LabelProvider label();
+
+
+}
diff --git a/src/main/resources/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
index a3bc8fd..7e2ad99 100644
--- a/src/main/resources/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
+++ b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/ExpressionWidget.gwt.xml
@@ -23,8 +23,6 @@
-
-
@@ -33,7 +31,18 @@
+
+
+
+
+
+
+