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 @@ + + + + + + +