diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs
index 3e27203..03a47ff 100644
--- a/.settings/com.google.gdt.eclipse.core.prefs
+++ b/.settings/com.google.gdt.eclipse.core.prefs
@@ -1,5 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/giancarlo/workspace/tabular-data-expression-widget/target/tabular-data-expression-widget-1.0.0-SNAPSHOT
+lastWarOutDir=/home/giancarlo/workspace/tabular-data-expression-widget/target/tabular-data-expression-widget-1.3.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs
new file mode 100644
index 0000000..04cad8c
--- /dev/null
+++ b/.settings/org.eclipse.wst.validation.prefs
@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1
diff --git a/pom.xml b/pom.xml
index 76662e8..ac1d9a0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,9 +45,9 @@
2.5.1
-
+
${env.KEYS}
-
+
UTF-8
UTF-8
@@ -70,6 +70,17 @@
1.0.1
runtime
+
+ org.gcube.common
+ home-library
+ compile
+
+
+ org.gcube.core
+ common-scope-maps
+ [1.0.2-SNAPSHOT,2.0.0-SNAPSHOT)
+ compile
+
@@ -133,7 +144,7 @@
[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)
provided
-
+
org.gcube.portlets.user
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 7ed248f..0cc38e6 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
@@ -21,6 +21,8 @@ public class ExpressionWidgetEntry implements EntryPoint {
public void onModuleLoad() {
EventBus eventBus= new SimpleEventBus();
+ TRId trId=new TRId("154","1610");
+ String columnName="zwqvvx";
//Column Expression Dialog
//ColumnExpressionDialog expressionDialog=new ColumnExpressionDialog("1", ColumnTypeCode.ATTRIBUTE, ColumnDataType.Integer, eventBus);
@@ -29,14 +31,16 @@ public class ExpressionWidgetEntry implements EntryPoint {
//Column Filter Dialog
//id=2, tableId=8, tableType=Generic
- TRId trId=new TRId("2","8");
- String columnName="twkvwc";
- ColumnFilterDialog columnFilterDialog=new ColumnFilterDialog(trId, columnName, eventBus);
- columnFilterDialog.show();
+ //ColumnFilterDialog columnFilterDialog=new ColumnFilterDialog(trId, columnName, eventBus);
+ //columnFilterDialog.show();
//Multi Column Filter Dialog
- MultiColumnFilterDialog multiColumnFilterDialog= new MultiColumnFilterDialog(trId, eventBus);
- multiColumnFilterDialog.show();
+ //MultiColumnFilterDialog multiColumnFilterDialog= new MultiColumnFilterDialog(trId, eventBus);
+ //multiColumnFilterDialog.show();
+
+ //Replace Column By Expression Dialog
+ ReplaceColumnByExpressionDialog replaceColumnByExpression= new ReplaceColumnByExpressionDialog(trId, columnName, eventBus);
+ replaceColumnByExpression.show();
Log.info("Hello!");
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionDialog.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionDialog.java
new file mode 100644
index 0000000..b569221
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionDialog.java
@@ -0,0 +1,247 @@
+package org.gcube.portlets.user.td.expressionwidget.client;
+
+import org.gcube.portlets.user.td.expressionwidget.client.resources.ExpressionResources;
+import org.gcube.portlets.user.td.expressionwidget.client.rpc.ExpressionServiceAsync;
+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.TDGWTSessionExpiredException;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnByExpressionSession;
+import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialog;
+import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialogListener;
+import org.gcube.portlets.user.td.widgetcommonevent.client.event.ChangeTableRequestEvent;
+import org.gcube.portlets.user.td.widgetcommonevent.client.event.SessionExpiredEvent;
+import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableRequestType;
+import org.gcube.portlets.user.td.widgetcommonevent.client.type.ChangeTableWhy;
+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.expression.C_Expression;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.web.bindery.event.shared.EventBus;
+import com.sencha.gxt.widget.core.client.Window;
+import com.sencha.gxt.widget.core.client.event.SelectEvent;
+import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class ReplaceColumnByExpressionDialog extends Window implements MonitorDialogListener {
+ protected String WIDTH = "660px";
+ protected String HEIGHT = "400px";
+ protected ReplaceColumnByExpressionPanel replaceColumnByExpressionPanel;
+ protected C_Expression exp = null;
+ protected String replaceValue;
+ protected ColumnData column = null;
+ protected TRId trId;
+ protected String columnName = null;
+ protected EventBus eventBus;
+ private ReplaceColumnByExpressionSession replaceColumnByExpressionSession;
+
+ public ReplaceColumnByExpressionDialog(String columnId, ColumnTypeCode columnTypeCode,
+ ColumnDataType dataTypeName, EventBus eventBus) {
+ initWindow();
+ this.eventBus = eventBus;
+ column = new ColumnData();
+ column.setColumnId(columnId);
+ column.setDataTypeName(dataTypeName.toString());
+ column.setTypeCode(columnTypeCode.toString());
+ create();
+
+ }
+
+ public ReplaceColumnByExpressionDialog(TRId trId, String columnName, EventBus eventBus) {
+ initWindow();
+ this.eventBus = eventBus;
+ this.trId = trId;
+ this.columnName = columnName;
+ load(trId, columnName);
+
+ }
+
+ protected void initWindow() {
+ setWidth(WIDTH);
+ setHeight(HEIGHT);
+ setBodyBorder(false);
+ setResizable(false);
+ setHeadingText("Replace Column By Expression");
+ setClosable(true);
+ getHeader().setIcon(ExpressionResources.INSTANCE.columnReplaceByExpression());
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void initTools() {
+ super.initTools();
+
+ closeBtn.addSelectHandler(new SelectHandler() {
+
+ public void onSelect(SelectEvent event) {
+ close();
+ }
+ });
+
+ }
+
+ protected void create() {
+ if (column.getTypeCode()
+ .compareTo(ColumnTypeCode.ANNOTATION.toString()) == 0
+ || column.getTypeCode().compareTo(
+ ColumnTypeCode.ATTRIBUTE.toString()) == 0
+ || column.getTypeCode().compareTo(
+ ColumnTypeCode.CODE.toString()) == 0
+ || column.getTypeCode().compareTo(
+ ColumnTypeCode.CODEDESCRIPTION.toString()) == 0
+ || column.getTypeCode().compareTo(
+ ColumnTypeCode.CODENAME.toString()) == 0
+ || column.getTypeCode().compareTo(
+ ColumnTypeCode.MEASURE.toString()) == 0) {
+ replaceColumnByExpressionPanel = new ReplaceColumnByExpressionPanel(this, column,
+ eventBus);
+ add(replaceColumnByExpressionPanel);
+
+ } else {
+ HTML errorMessage = new HTML(
+ "This type of column is not supported for now!");
+ add(errorMessage);
+ UtilsGXT3.alert("Error",
+ "This type of column is not supported for now!");
+ }
+ }
+
+ public C_Expression getExpression() {
+ return exp;
+ }
+
+ protected void setExpression(C_Expression exp) {
+ Log.debug("New Expression set:" + exp.toString());
+ this.exp = exp;
+ }
+
+ protected void applyReplaceColumnByExpression(C_Expression exp, String replaceValue) {
+ this.exp = exp;
+ this.replaceValue=replaceValue;
+ callApplyReplaceByExpression();
+ }
+
+ protected void load(TRId trId, String columnName) {
+ TDGWTServiceAsync.INSTANCE.getColumn(trId, columnName,
+ new AsyncCallback() {
+
+ public void onFailure(Throwable caught) {
+ Log.error("Error retrieving column: "
+ + caught.getMessage());
+ UtilsGXT3.alert("Error retrieving column",
+ caught.getMessage());
+ }
+
+ public void onSuccess(ColumnData result) {
+ Log.debug("Retrived column: " + result);
+ if (result.isViewColumn()) {
+ UtilsGXT3
+ .info("View Column",
+ "You can not make expressions on view column for now");
+ hide();
+ } else {
+ column = result;
+ create();
+ }
+ }
+
+ });
+
+ }
+
+ protected void callApplyReplaceByExpression() {
+ replaceColumnByExpressionSession = new ReplaceColumnByExpressionSession(column, exp,replaceValue);
+ Log.debug(replaceColumnByExpressionSession.toString());
+
+ ExpressionServiceAsync.INSTANCE.startReplaceColumnByExpression(replaceColumnByExpressionSession,
+ new AsyncCallback() {
+
+ @Override
+ public void onSuccess(String taskId) {
+ Log.debug("Submitted replace column by expression");
+ openMonitorDialog(taskId);
+
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error submitting replace column by expression: "
+ + caught.getLocalizedMessage());
+ caught.printStackTrace();
+ UtilsGXT3.alert(
+ "Error submitting replace column by expression",
+ caught.getLocalizedMessage());
+ }
+
+ }
+ });
+
+ }
+
+ protected void close() {
+ hide();
+ }
+
+ // /
+ protected void openMonitorDialog(String taskId) {
+ MonitorDialog monitorDialog = new MonitorDialog(taskId, eventBus);
+ monitorDialog.addProgressDialogListener(this);
+ monitorDialog.show();
+ }
+
+ @Override
+ public void operationComplete(TRId trId) {
+ ChangeTableWhy why = ChangeTableWhy.TABLEUPDATED;
+ ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent(
+ ChangeTableRequestType.COLUMNFILTER, trId, why);
+ eventBus.fireEvent(changeTableRequestEvent);
+ close();
+ }
+
+ @Override
+ public void operationFailed(Throwable caught, String reason, String details) {
+ UtilsGXT3.alert(reason, details);
+ close();
+
+ }
+
+ @Override
+ public void operationStopped(TRId trId, String reason, String details) {
+ ChangeTableWhy why = ChangeTableWhy.TABLECURATION;
+ ChangeTableRequestEvent changeTableRequestEvent = new ChangeTableRequestEvent(
+ ChangeTableRequestType.COLUMNFILTER, trId, why);
+ eventBus.fireEvent(changeTableRequestEvent);
+ close();
+
+ }
+
+ @Override
+ public void operationAborted() {
+ close();
+
+ }
+
+ @Override
+ public void operationPutInBackground() {
+ close();
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionPanel.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionPanel.java
new file mode 100644
index 0000000..9b75f09
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/ReplaceColumnByExpressionPanel.java
@@ -0,0 +1,174 @@
+package org.gcube.portlets.user.td.expressionwidget.client;
+
+import org.gcube.portlets.user.td.expressionwidget.client.resources.ExpressionResources;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.expression.C_Expression;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.web.bindery.event.shared.EventBus;
+import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
+import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
+import com.sencha.gxt.core.client.util.Margins;
+import com.sencha.gxt.widget.core.client.FramedPanel;
+import com.sencha.gxt.widget.core.client.button.TextButton;
+import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
+import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
+import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
+import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer.HBoxLayoutAlign;
+import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
+import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
+import com.sencha.gxt.widget.core.client.event.SelectEvent;
+import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
+import com.sencha.gxt.widget.core.client.form.FieldLabel;
+import com.sencha.gxt.widget.core.client.form.FieldSet;
+import com.sencha.gxt.widget.core.client.form.TextField;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class ReplaceColumnByExpressionPanel extends FramedPanel {
+ protected static final String WIDTH = "648px";
+ protected static final String HEIGHT = "364px";
+
+ protected static final String CONDITIONWIDTH = "612px";
+ protected static final String CONDITIONHEIGHT = "150px";
+
+ protected EventBus eventBus;
+
+ protected ReplaceColumnByExpressionDialog parent;
+
+ protected ColumnData column;
+
+ private TextButton btnApply;
+ private TextButton btnClose;
+
+ private FieldSet conditionsFieldSet;
+ private ConditionWidget conditionWidget;
+ private TextField replaceValue;
+
+ public ReplaceColumnByExpressionPanel(
+ ReplaceColumnByExpressionDialog parent, ColumnData column,
+ EventBus eventBus) {
+ super();
+ this.parent = parent;
+ this.column = column;
+ this.eventBus = eventBus;
+ Log.debug(column.toString());
+ init();
+ create();
+ }
+
+ protected void init() {
+ setWidth(WIDTH);
+ setHeight(HEIGHT);
+ setBodyBorder(false);
+ setHeaderVisible(false);
+ // Important: fixed rendering of widgets
+ forceLayoutOnResize = true;
+
+ }
+
+ protected void create() {
+ VerticalLayoutContainer basicLayout = new VerticalLayoutContainer();
+ basicLayout.setAdjustForScroll(true);
+ basicLayout.setScrollMode(ScrollMode.AUTO);
+
+ HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
+ flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
+ flowButton.setPack(BoxLayoutPack.CENTER);
+
+ // Properties
+ FieldSet properties = new FieldSet();
+ properties.setHeadingText("Properties");
+ properties.setCollapsible(false);
+
+ VerticalLayoutContainer propertiesLayout = new VerticalLayoutContainer();
+ properties.add(propertiesLayout);
+
+ TextField columnName = new TextField();
+ columnName.setToolTip("Column");
+ columnName.setReadOnly(true);
+ columnName.setValue(column.getLabel());
+ propertiesLayout.add(new FieldLabel(columnName, "Column"),
+ new VerticalLayoutData(1, -1));
+
+ // Conditions
+ conditionsFieldSet = new FieldSet();
+ conditionsFieldSet.setHeadingText("Conditions");
+ conditionsFieldSet.setCollapsible(false);
+
+ conditionWidget = new ConditionWidget(column,CONDITIONWIDTH, CONDITIONHEIGHT);
+ Log.debug("ConditionWidget" + conditionWidget);
+ conditionsFieldSet.add(conditionWidget);
+
+ // Value
+ FieldSet replaceValueFieldSet = new FieldSet();
+ replaceValueFieldSet.setHeadingText("Replace Value");
+ replaceValueFieldSet.setCollapsible(false);
+
+ VerticalLayoutContainer replaceValueFieldSetLayout = new VerticalLayoutContainer();
+ replaceValueFieldSet.add(replaceValueFieldSetLayout);
+
+ replaceValue = new TextField();
+ replaceValue.setToolTip("Replace Value");
+ replaceValue.setValue("");
+ replaceValueFieldSetLayout.add(new FieldLabel(replaceValue,
+ "Replace Value"), new VerticalLayoutData(1, -1));
+
+
+ //
+ btnApply = new TextButton("Apply");
+ btnApply.setIcon(ExpressionResources.INSTANCE.columnReplaceByExpression());
+ btnApply.setIconAlign(IconAlign.RIGHT);
+ btnApply.setTitle("Apply replace by expression");
+ btnApply.addSelectHandler(new SelectHandler() {
+
+ public void onSelect(SelectEvent event) {
+ Log.debug("Pressed Apply");
+ applyReplaceColumnByExpression();
+
+ }
+ });
+
+ btnClose = new TextButton("Close");
+ btnClose.setIcon(ExpressionResources.INSTANCE.close());
+ btnClose.setIconAlign(IconAlign.RIGHT);
+ btnClose.setTitle("Close");
+ btnClose.addSelectHandler(new SelectHandler() {
+
+ public void onSelect(SelectEvent event) {
+ Log.debug("Pressed Close");
+ close();
+ }
+ });
+ flowButton.add(btnApply, new BoxLayoutData(new Margins(2, 4, 2, 4)));
+ flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
+
+ //Add to basic layout
+ basicLayout.add(properties, new VerticalLayoutData(-1, -1, new Margins(
+ 1)));
+ basicLayout.add(conditionsFieldSet, new VerticalLayoutData(-1, -1,
+ new Margins(1)));
+ basicLayout.add(replaceValueFieldSet, new VerticalLayoutData(-1, -1, new Margins(
+ 1)));
+
+ basicLayout.add(flowButton, new VerticalLayoutData(-1, 36, new Margins(
+ 5, 2, 5, 2)));
+ add(basicLayout);
+
+ }
+
+ protected void applyReplaceColumnByExpression() {
+ C_Expression exp = conditionWidget.getExpression();
+ String value = replaceValue.getCurrentValue();
+ parent.applyReplaceColumnByExpression(exp,value);
+
+ }
+
+ protected void close() {
+ parent.close();
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/ExpressionResources.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/ExpressionResources.java
index c27b2a2..740e027 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/ExpressionResources.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/ExpressionResources.java
@@ -44,6 +44,12 @@ public interface ExpressionResources extends ClientBundle {
@Source("column-filter-go.png")
ImageResource applyFilter();
+ @Source("column-replace-by-expression_32.png")
+ ImageResource columnReplaceByExpression32();
+
+ @Source("column-replace-by-expression.png")
+ ImageResource columnReplaceByExpression();
+
}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png
new file mode 100644
index 0000000..f1222ae
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png differ
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png
new file mode 100644
index 0000000..50581d0
Binary files /dev/null and b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png differ
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionService.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionService.java
index 231dc65..2a2392d 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionService.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionService.java
@@ -7,6 +7,7 @@ package org.gcube.portlets.user.td.expressionwidget.client.rpc;
import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTServiceException;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.FilterColumnSession;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnByExpressionSession;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -38,7 +39,9 @@ public interface ExpressionService extends RemoteService {
public String startFilterColumn(FilterColumnSession filterColumnSession) throws TDGWTServiceException;
-
+ public String startReplaceColumnByExpression(ReplaceColumnByExpressionSession replaceColumnByExpressionColumnSession) throws TDGWTServiceException;
+
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionServiceAsync.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionServiceAsync.java
index bde5a10..fa4ef44 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/client/rpc/ExpressionServiceAsync.java
@@ -4,6 +4,7 @@
package org.gcube.portlets.user.td.expressionwidget.client.rpc;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.FilterColumnSession;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnByExpressionSession;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -22,5 +23,7 @@ public interface ExpressionServiceAsync {
void startFilterColumn(FilterColumnSession filterColumnSession,AsyncCallback callback);
+ void startReplaceColumnByExpression(ReplaceColumnByExpressionSession replaceColumnByExpressionSession,AsyncCallback callback);
+
}
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionServiceImpl.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionServiceImpl.java
index 84adfcf..433207d 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionServiceImpl.java
@@ -21,6 +21,7 @@ import org.gcube.portlets.user.td.gwtservice.server.TDGWTServiceImpl;
import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTServiceException;
import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.FilterColumnSession;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnByExpressionSession;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -79,113 +80,49 @@ public class ExpressionServiceImpl extends RemoteServiceServlet implements
+ e.getLocalizedMessage());
}
}
+
+ /**
+ *
+ * {@inheritDoc}
+ */
+ @Override
+ public String startReplaceColumnByExpression(ReplaceColumnByExpressionSession replaceColumnByExpressionSession)
+ throws TDGWTServiceException {
+
+ try {
+ logger.debug("ExpressionService submitReplaceColumnByExpression");
+ HttpSession session = this.getThreadLocalRequest().getSession();
+ logger.debug("Session: "+session);
+
+ if(replaceColumnByExpressionSession==null){
+ logger.error("ReplaceColumnByExpressionSession is null");
+ new ExpressionServiceException("ReplaceColumnByExpressionSession is null");
+ }
+ ExpressionSession.setReplaceColumnByExpressionSession(session, replaceColumnByExpressionSession);
+
+ C_ExpressionParser parser=new C_ExpressionParser();
+ Expression expression=parser.parse(replaceColumnByExpressionSession.getCexpression());
+ logger.debug("Service Expression:"+expression);
+
+
+ TDGWTServiceImpl gwtService = new TDGWTServiceImpl();
+
+ String taskId= gwtService.startReplaceColumnByExpression(replaceColumnByExpressionSession, expression, session);
+
+ return taskId;
+
+ } catch (TDGWTSessionExpiredException e){
+ throw e;
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw new TDGWTServiceException(
+ "Error in startReplaceColumnByExpression:"
+ + e.getLocalizedMessage());
+ }
+ }
+
+
-// /**
-// * {@inheritDoc}
-// */
-// public ColumnFilterMonitor getColumnFilterMonitor()
-// throws ExpressionServiceException {
-// try {
-// HttpSession session = this.getThreadLocalRequest().getSession();
-// FilterColumnSession columnFilterSession = ExpressionSession
-// .getColumnFilterSession(session);
-//
-// Task task = ExpressionSession.getColumnFilterTask(session);
-// ColumnFilterMonitor columnFilterMonitor = new ColumnFilterMonitor();
-//
-// if (task == null) {
-// logger.debug("Task null");
-// throw new ExpressionServiceException(
-// "Error in ColumnFilter task null");
-// } else {
-// TaskStatus status = task.getStatus();
-// if (status == null) {
-// logger.debug("Services TaskStatus : null");
-// throw new ExpressionServiceException(
-// "Error in ColumnFilter Status null");
-// } else {
-// logger.debug("Services TaskStatus: " + task.getStatus());
-//
-// columnFilterMonitor.setStatus(TaskStateMap.map(task
-// .getStatus()));
-// switch (columnFilterMonitor.getStatus()) {
-// case FAILED:
-// if (task.getResult() != null) {
-// logger.debug("Task exception:"
-// + task.getErrorCause());
-// task.getErrorCause().printStackTrace();
-// columnFilterMonitor.setError(new Throwable(task
-// .getErrorCause()));
-// } else {
-// logger.debug("Task exception: Error In Column Filter");
-// columnFilterMonitor.setError(new Throwable(
-// "Error In Column Filter"));
-// }
-// columnFilterMonitor.setProgress(task.getProgress());
-// break;
-// case SUCCEDED:
-// logger.debug("Task Result:" + task.getResult());
-// columnFilterMonitor.setProgress(task.getProgress());
-// Table table = task.getResult().getPrimaryTable();
-// logger.debug("Table retrived: " + table.toString());
-// TRId trId = new TRId();
-// trId.setId(columnFilterSession.getColumn().getTrId()
-// .getId());
-//
-// trId = retrieveTabularResourceBasicData(trId);
-//
-// columnFilterMonitor.setTrId(trId);
-// TabResource tabResource = SessionUtil
-// .getTabResource(session);
-// tabResource.setTrId(trId);
-// SessionUtil.setTabResource(session, tabResource);
-// SessionUtil.setTRId(session, trId);
-// break;
-// case IN_PROGRESS:
-// columnFilterMonitor.setProgress(task.getProgress());
-// break;
-// case VALIDATING_RULES:
-// columnFilterMonitor.setProgress(task.getProgress());
-// break;
-// case GENERATING_VIEW:
-// break;
-// case ABORTED:
-// break;
-// case STOPPED:
-// logger.debug("Task Result:" + task.getResult());
-// columnFilterMonitor.setProgress(task.getProgress());
-// trId = new TRId();
-// trId.setId(columnFilterSession.getColumn().getTrId()
-// .getId());
-// trId = retrieveTabularResourceBasicData(trId);
-//
-// columnFilterMonitor.setTrId(trId);
-// tabResource = SessionUtil.getTabResource(session);
-// tabResource.setTrId(trId);
-// SessionUtil.setTabResource(session, tabResource);
-// SessionUtil.setTRId(session, trId);
-// break;
-// case INITIALIZING:
-// break;
-// default:
-// break;
-// }
-// }
-// ExpressionSession.setColumnFilterTask(session, task);
-// }
-//
-// logger.info("ColumnFilterMonitor(): " + columnFilterMonitor);
-// return columnFilterMonitor;
-// } catch (TDGWTSessionExpiredException e){
-// throw new ExpressionServiceException(e.getLocalizedMessage());
-// } catch (Throwable e) {
-// e.printStackTrace();
-// throw new ExpressionServiceException(
-// "Error applying column filter: " + e.getLocalizedMessage());
-//
-// }
-//
-// }
/**
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionSession.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionSession.java
index de0796e..266f2fd 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionSession.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/server/ExpressionSession.java
@@ -7,6 +7,7 @@ import javax.servlet.http.HttpSession;
import org.gcube.data.analysis.tabulardata.service.operation.Task;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.FilterColumnSession;
+import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnByExpressionSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -22,6 +23,7 @@ public class ExpressionSession {
protected static final String COLUMN_FILTER_SESSION = "COLUMN_FILTER_SESSION";
protected static final String COLUMN_FILTER_SESSION_TASK = "COLUMN_FILTER_SESSION_TASK";
+ protected static final String REPLACE_COLUMN_BY_EXPRESSION_SESSION = "REPLACE_COLUMN_BY_EXPRESSION_SESSION";
protected static Logger logger = LoggerFactory.getLogger(ExpressionSession.class);
@@ -51,6 +53,33 @@ public class ExpressionSession {
columnFilterSession);
}
+
+ public static ReplaceColumnByExpressionSession getReplaceColumnByExpressionSession(
+ HttpSession httpSession) {
+ ReplaceColumnByExpressionSession replaceColumnByExpressionSession = (ReplaceColumnByExpressionSession) httpSession
+ .getAttribute(REPLACE_COLUMN_BY_EXPRESSION_SESSION);
+ if (replaceColumnByExpressionSession != null) {
+ return replaceColumnByExpressionSession;
+ } else {
+ replaceColumnByExpressionSession = new ReplaceColumnByExpressionSession();
+ httpSession.setAttribute(REPLACE_COLUMN_BY_EXPRESSION_SESSION,
+ replaceColumnByExpressionSession);
+ return replaceColumnByExpressionSession;
+ }
+ }
+
+ public static void setReplaceColumnByExpressionSession(HttpSession httpSession,
+ ReplaceColumnByExpressionSession replaceColumnByExpressionSession) {
+ ReplaceColumnByExpressionSession rce = (ReplaceColumnByExpressionSession) httpSession
+ .getAttribute(REPLACE_COLUMN_BY_EXPRESSION_SESSION);
+ if (rce != null) {
+ httpSession.removeAttribute(REPLACE_COLUMN_BY_EXPRESSION_SESSION);
+ }
+ httpSession.setAttribute(REPLACE_COLUMN_BY_EXPRESSION_SESSION,
+ replaceColumnByExpressionSession);
+
+ }
+
diff --git a/src/main/java/org/gcube/portlets/user/td/expressionwidget/shared/Constants.java b/src/main/java/org/gcube/portlets/user/td/expressionwidget/shared/Constants.java
index 22df2c4..1d878f1 100644
--- a/src/main/java/org/gcube/portlets/user/td/expressionwidget/shared/Constants.java
+++ b/src/main/java/org/gcube/portlets/user/td/expressionwidget/shared/Constants.java
@@ -8,10 +8,10 @@ package org.gcube.portlets.user.td.expressionwidget.shared;
*/
public class Constants {
- public final static String VERSION = "1.0.0";
- public final static String DEFAULT_USER = "giancarlo.panichi";
- public final static String DEFAULT_SCOPE = "/gcube/devsec";
-
+ public final static String VERSION = "2.4.0";
+ public final static String DEFAULT_USER = "test.user";
+ public final static String DEFAULT_SCOPE = "/gcube/devsec/devVRE";
+
public static final String PARAMETER_ENCODING = "encoding";
public static final String PARAMETER_HASHEADER = "hasHeader";
public static final String PARAMETER_SEPARATOR = "separator";
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 c3fd016..ebaa59a 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,7 +23,7 @@
-
+
diff --git a/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png
new file mode 100644
index 0000000..f1222ae
Binary files /dev/null and b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression.png differ
diff --git a/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png
new file mode 100644
index 0000000..50581d0
Binary files /dev/null and b/src/main/resources/org/gcube/portlets/user/td/expressionwidget/client/resources/column-replace-by-expression_32.png differ