diff --git a/.classpath b/.classpath
index cf109a5..752c8c8 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -45,5 +45,5 @@
-
+
diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs
new file mode 100644
index 0000000..8f0b83a
--- /dev/null
+++ b/.settings/com.google.gdt.eclipse.core.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+jarsExcludedFromWebInfLib=
+warSrcDir=
+warSrcDirIsOutput=true
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 9bc4af9..e70570a 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,7 +1,8 @@
-
-
+
+
+
diff --git a/distro/README b/distro/README
index 739a430..680aeaf 100644
--- a/distro/README
+++ b/distro/README
@@ -45,14 +45,14 @@ Installation
--------------------------------------------------
Installation documentation is available on-line in the gCube Wiki:
- https://gcube.wiki.gcube-system.org/gcube/index.php/Tabular_Data_Manager
+ ${gcube.wikiRoot}/Tabular_Data_Manager
Documentation
--------------------------------------------------
Documentation is available on-line in the gCube Wiki:
- https://gcube.wiki.gcube-system.org/gcube/index.php/Tabular_Data_Manager
+ ${gcube.wikiRoot}/Tabular_Data_Manager
Support
diff --git a/distro/changelog.xml b/distro/changelog.xml
index 8c9248e..272488f 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -1,4 +1,7 @@
+
+ Updated to support Dataset export [ticket #5870]
+
Updated Dependencies
diff --git a/pom.xml b/pom.xml
index b7d4239..50a76aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
4.0.0
org.gcube.portlets.user
tabular-data-sdmx-export-widget
- 1.7.0-SNAPSHOT
+ 1.8.0-SNAPSHOT
tabular-data-sdmx-export-widget
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesSelectionPanel.java
index 58884ce..8a88a4d 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesSelectionPanel.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesSelectionPanel.java
@@ -10,6 +10,7 @@ import java.util.List;
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.type.Agencies;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.properties.AgenciesProperties;
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.wizardwidget.client.WizardCard;
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistSelectionPanel.java
index ed4af76..55b7325 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistSelectionPanel.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistSelectionPanel.java
@@ -10,6 +10,7 @@ import java.util.List;
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.type.Codelist;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.properties.CodelistProperties;
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.wizardwidget.client.WizardCard;
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetSelectionPanel.java
index 8dab68c..1cf22f0 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetSelectionPanel.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetSelectionPanel.java
@@ -10,6 +10,7 @@ import java.util.List;
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.type.Dataset;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.properties.DatasetProperties;
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.wizardwidget.client.WizardCard;
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
index d7a58cf..f8cade7 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXAgenciesSelectionCard.java
@@ -14,61 +14,76 @@ import com.google.gwt.event.logical.shared.SelectionHandler;
/**
*
- * @author "Giancarlo Panichi"
- * g.panichi@isti.cnr.it
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
*
*/
public class SDMXAgenciesSelectionCard extends WizardCard {
-
- protected SDMXAgenciesSelectionCard thisCard;
- protected SDMXExportSession exportSession;
- protected AgenciesSelectionPanel agenciesSelectionPanel;
- protected Agencies agency;
-
+
+ private SDMXAgenciesSelectionCard thisCard;
+ private SDMXExportSession exportSession;
+ private AgenciesSelectionPanel agenciesSelectionPanel;
+
+ // private Agencies agency;
+
public SDMXAgenciesSelectionCard(final SDMXExportSession exportSession) {
super("SDMX Agencies selection", "");
-
- this.exportSession = exportSession;
- thisCard=this;
-
- this.agenciesSelectionPanel=new AgenciesSelectionPanel(thisCard,res);
-
- agenciesSelectionPanel.addSelectionHandler(new SelectionHandler(){
-
- public void onSelection(SelectionEvent event) {
- exportSession.setAgency(agenciesSelectionPanel.getSelectedItem());
- getWizardWindow().setEnableNextButton(true);
-
- }
-
- });
-
+ this.exportSession = exportSession;
+ thisCard = this;
+
+ this.agenciesSelectionPanel = new AgenciesSelectionPanel(thisCard, res);
+
+ agenciesSelectionPanel
+ .addSelectionHandler(new SelectionHandler() {
+
+ public void onSelection(SelectionEvent event) {
+ exportSession.setAgency(agenciesSelectionPanel
+ .getSelectedItem());
+ getWizardWindow().setEnableNextButton(true);
+
+ }
+
+ });
+
setContent(agenciesSelectionPanel);
-
+
}
-
-
+
@Override
- public void setup(){
+ public void setup() {
Command sayNextCard = new Command() {
-
public void execute() {
- SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
- exportSession);
- getWizardWindow()
- .addCard(sdmxTableDetailCard);
- Log.info("NextCard SDMXTableDetailCard");
- getWizardWindow().nextCard();
-
+ switch (exportSession.getExportType()) {
+ case CODELIST:
+ SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
+ exportSession);
+ getWizardWindow().addCard(sdmxTableDetailCard);
+ Log.info("NextCard SDMXTableDetailCard");
+ getWizardWindow().nextCard();
+ break;
+ case DATASET:
+ ViewColumnSelectionCard viewColumnSelectionCard = new ViewColumnSelectionCard(
+ exportSession);
+ getWizardWindow().addCard(viewColumnSelectionCard);
+ Log.info("NextCard ViewColumnSelectionCard");
+ getWizardWindow().nextCard();
+ break;
+ case GENERIC:
+ default:
+ Log.error("Only the tabular resources with type Codelist and Dataset"
+ + " are exportable in SDMX!");
+ break;
+
+ }
+
}
-
+
};
-
- getWizardWindow().setNextButtonCommand(sayNextCard);
-
-
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
Command sayPreviousCard = new Command() {
public void execute() {
try {
@@ -79,11 +94,16 @@ public class SDMXAgenciesSelectionCard extends WizardCard {
Log.error("sayPreviousCard :" + e.getLocalizedMessage());
}
}
- };
-
- getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
- getWizardWindow().setEnableNextButton(false);
-
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ // getWizardWindow().setEnableNextButton(false);
+
+ setEnableNextButton(false);
+
+ setBackButtonVisible(true);
+ setEnableBackButton(true);
+
}
}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java
index 518b15d..784f11b 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXCodelistSelectionCard.java
@@ -21,10 +21,13 @@ import com.google.gwt.user.client.Command;
*/
public class SDMXCodelistSelectionCard extends WizardCard {
- protected SDMXCodelistSelectionCard thisCard;
- protected SDMXExportSession exportSession;
- protected CodelistSelectionPanel codelistSelectionPanel;
- protected Codelist codelist;
+ private SDMXCodelistSelectionCard thisCard;
+ @SuppressWarnings("unused")
+ private SDMXExportSession exportSession;
+ private CodelistSelectionPanel codelistSelectionPanel;
+ @SuppressWarnings("unused")
+ private Codelist codelist;
+
public SDMXCodelistSelectionCard(final SDMXExportSession exportSession) {
super("SDMX Codelist selection", "");
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java
index 2479c46..3ab2031 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXDatasetSelectionCard.java
@@ -17,9 +17,10 @@ import com.google.gwt.user.client.Command;
*/
public class SDMXDatasetSelectionCard extends WizardCard {
- protected SDMXDatasetSelectionCard thisCard;
- protected SDMXExportSession exportSession;
- protected DatasetSelectionPanel datasetSelectionPanel;
+ private SDMXDatasetSelectionCard thisCard;
+ @SuppressWarnings("unused")
+ private SDMXExportSession exportSession;
+ private DatasetSelectionPanel datasetSelectionPanel;
public SDMXDatasetSelectionCard(final SDMXExportSession exportSession) {
super("SDMX Dataset selection", "");
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java
index d63b580..418ff9c 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXExportWizardTD.java
@@ -7,6 +7,7 @@ import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource;
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.tr.TableType;
import org.gcube.portlets.user.td.wizardwidget.client.WizardWindow;
import com.allen_sauer.gwt.log.client.Log;
@@ -73,6 +74,9 @@ public class SDMXExportWizardTD extends WizardWindow {
public void onSuccess(TabResource result) {
Log.debug("Tabular Resource Information retrived");
exportSession.setTabResource(result);
+ exportSession.setExportType(TableType
+ .getColumnDataTypeFromId(result
+ .getTableTypeName()));
box.hide();
}
@@ -84,5 +88,4 @@ public class SDMXExportWizardTD extends WizardWindow {
sdmxRegistrySelectionCard.setup();
}
-
}
\ No newline at end of file
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXRegistrySelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXRegistrySelectionCard.java
index 77dfbbf..2c5c6ad 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXRegistrySelectionCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXRegistrySelectionCard.java
@@ -69,6 +69,8 @@ public class SDMXRegistrySelectionCard extends WizardCard {
radioUrlRegistry.setStylePrimaryName(res.wizardCSS()
.getImportSelectionSource());
radioUrlRegistry.disable();
+ radioUrlRegistry.setVisible(false);
+
url.setName("sdmxRegistryUrlInpuntField");
url.setId("sdmxRegistryUrlInputFieldId");
@@ -183,6 +185,7 @@ public class SDMXRegistrySelectionCard extends WizardCard {
getWizardWindow().setNextButtonCommand(sayNextCard);
+
Command sayPreviousCard = new Command() {
public void execute() {
try {
@@ -199,6 +202,7 @@ public class SDMXRegistrySelectionCard extends WizardCard {
setEnableBackButton(false);
setEnableNextButton(true);
+ setBackButtonVisible(false);
}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
index e8e543e..b52e9e8 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/SDMXTableDetailCard.java
@@ -3,17 +3,16 @@
*/
package org.gcube.portlets.user.td.sdmxexportwidget.client;
+import org.gcube.portlets.user.td.gwtservice.shared.Constants;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.source.SDMXRegistrySource;
import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.box.AlertMessageBox;
-import com.sencha.gxt.widget.core.client.button.TextButton;
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.HideEvent;
@@ -30,24 +29,21 @@ import com.sencha.gxt.widget.core.client.form.TextField;
*/
public class SDMXTableDetailCard extends WizardCard {
- protected final String TABLEDETAILPANELWIDTH = "100%";
- protected final String TABLEDETAILPANELHEIGHT = "100%";
- protected final String FORMWIDTH = "538px";
+ private final String TABLEDETAILPANELWIDTH = "100%";
+ private final String TABLEDETAILPANELHEIGHT = "100%";
+ private final String FORMWIDTH = "538px";
- protected SDMXExportSession exportSession;
- protected SDMXTableDetailCard thisCard;
+ private SDMXExportSession exportSession;
+ private SDMXTableDetailCard thisCard;
- protected static final AgenciesProperties agenciesProperties = GWT
- .create(AgenciesProperties.class);
- protected VerticalLayoutContainer p = new VerticalLayoutContainer();
- protected VerticalPanel tableDetailPanel;
+ private VerticalLayoutContainer p = new VerticalLayoutContainer();
+ private VerticalPanel tableDetailPanel;
- protected TextField id;
- protected TextField agencyName;
- protected TextField registryBaseUrl;
- protected TextField version;
-
- protected TextButton checkButton;
+ private TextField id;
+ private TextField agencyName;
+ private TextField registryBaseUrl;
+ private TextField version;
+ private TextField viewColumn;
public SDMXTableDetailCard(final SDMXExportSession exportSession) {
super("SDMX Table Detail", "");
@@ -70,18 +66,44 @@ public class SDMXTableDetailCard extends WizardCard {
fieldSet.setCollapsible(false);
form.add(fieldSet);
+ switch (exportSession.getExportType()) {
+ case DATASET:
+ datasetViewConfig();
+ break;
+ case CODELIST:
+ codelistViewConfig();
+ break;
+ case GENERIC:
+ break;
+ default:
+ break;
+
+ }
+
fieldSet.add(p);
+ tableDetailPanel.add(form);
+ setContent(tableDetailPanel);
+
+ }
+
+ private void datasetViewConfig() {
id = new TextField();
id.setAllowBlank(false);
id.setEmptyText("Enter Id...");
- id.setValue(exportSession.getTabResource().getName());
+ id.setValue(Constants.SDMX_DATASET_EXPORT_DEFAULT_ID);
p.add(new FieldLabel(id, "Id"), new VerticalLayoutData(1, -1));
agencyName = new TextField();
agencyName.setVisible(true);
agencyName.setEmptyText("Enter Agency...");
- agencyName.setValue(exportSession.getAgency().getName());
+ if (exportSession.getAgency().getName() == null
+ || exportSession.getAgency().getName().isEmpty()) {
+ agencyName.setValue(Constants.SDMX_DATASET_EXPORT_DEFAULT_AGENCY);
+ } else {
+ agencyName.setValue(exportSession.getAgency().getName());
+ }
+
FieldLabel agencyNameLabel = new FieldLabel(agencyName, "Agency");
p.add(agencyNameLabel, new VerticalLayoutData(1, -1));
@@ -103,12 +125,55 @@ public class SDMXTableDetailCard extends WizardCard {
version = new TextField();
version.setAllowBlank(false);
version.setEmptyText("Enter Version...");
- version.setValue("");
+ version.setValue(Constants.SDMX_DATASET_EXPORT_DEFAULT_ID);
p.add(new FieldLabel(version, "Version"), new VerticalLayoutData(1, -1));
- tableDetailPanel.add(form);
- setContent(tableDetailPanel);
+ viewColumn = new TextField();
+ viewColumn.setValue(exportSession.getObsValueColumn().getLabel());
+ viewColumn.setReadOnly(true);
+ p.add(new FieldLabel(viewColumn, "Codelist Column"),
+ new VerticalLayoutData(1, -1));
+ }
+ private void codelistViewConfig() {
+ id = new TextField();
+ id.setAllowBlank(false);
+ id.setEmptyText("Enter Id...");
+ id.setValue(Constants.SDMX_CODELIST_EXPORT_DEFAULT_ID);
+ p.add(new FieldLabel(id, "Id"), new VerticalLayoutData(1, -1));
+
+ agencyName = new TextField();
+ agencyName.setVisible(true);
+ agencyName.setEmptyText("Enter Agency...");
+ if (exportSession.getAgency().getName() == null
+ || exportSession.getAgency().getName().isEmpty()) {
+ agencyName.setValue(Constants.SDMX_CODELIST_EXPORT_DEFAULT_AGENCY);
+ } else {
+ agencyName.setValue(exportSession.getAgency().getName());
+ }
+ FieldLabel agencyNameLabel = new FieldLabel(agencyName, "Agency");
+ p.add(agencyNameLabel, new VerticalLayoutData(1, -1));
+
+ registryBaseUrl = new TextField();
+ registryBaseUrl.setVisible(false);
+ registryBaseUrl.setEmptyText("Enter Registry URL...");
+ String urlRegistry = ((SDMXRegistrySource) exportSession.getSource())
+ .getUrl();
+ if (urlRegistry == null || urlRegistry.isEmpty()) {
+ registryBaseUrl.setValue(null);
+ } else {
+ registryBaseUrl.setValue(urlRegistry);
+ }
+ FieldLabel registryBaseUrlLabel = new FieldLabel(registryBaseUrl,
+ "Registry URL");
+ registryBaseUrlLabel.setVisible(false);
+ p.add(registryBaseUrlLabel, new VerticalLayoutData(1, -1));
+
+ version = new TextField();
+ version.setAllowBlank(false);
+ version.setEmptyText("Enter Version...");
+ version.setValue(Constants.SDMX_CODELIST_EXPORT_DEFAULT_ID);
+ p.add(new FieldLabel(version, "Version"), new VerticalLayoutData(1, -1));
}
@Override
@@ -163,7 +228,8 @@ public class SDMXTableDetailCard extends WizardCard {
d.show();
} else {
if (!version.getValue().matches("[0-9]+\\.[0-9]+")) {
- d = new AlertMessageBox("Attention!", "Version must match the regular expression [0-9]+\\.[0-9]+");
+ d = new AlertMessageBox("Attention!",
+ "Version must match the regular expression [0-9]+\\.[0-9]+");
d.addHideHandler(hideHandler);
d.show();
} else {
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionCard.java
new file mode 100644
index 0000000..8ddd311
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionCard.java
@@ -0,0 +1,92 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class ViewColumnSelectionCard extends WizardCard {
+
+ private ViewColumnSelectionCard thisCard;
+ private SDMXExportSession exportSession;
+ private ViewColumnSelectionPanel viewColumnSelectionPanel;
+ //private Agencies agency;
+
+ public ViewColumnSelectionCard(final SDMXExportSession exportSession) {
+ super("Codelist column selection", "");
+
+ this.exportSession = exportSession;
+ thisCard = this;
+
+ this.viewColumnSelectionPanel = new ViewColumnSelectionPanel(thisCard,res, exportSession);
+
+ viewColumnSelectionPanel
+ .addSelectionHandler(new SelectionHandler() {
+
+ public void onSelection(SelectionEvent event) {
+ exportSession.setObsValueColumn(viewColumnSelectionPanel
+ .getSelectedItem());
+ getWizardWindow().setEnableNextButton(true);
+
+ }
+
+ });
+
+ setContent(viewColumnSelectionPanel);
+
+ }
+
+ @Override
+ public void setup() {
+ Command sayNextCard = new Command() {
+
+ public void execute() {
+ SDMXTableDetailCard sdmxTableDetailCard = new SDMXTableDetailCard(
+ exportSession);
+ getWizardWindow().addCard(sdmxTableDetailCard);
+ Log.info("NextCard SDMXTableDetailCard");
+ getWizardWindow().nextCard();
+
+ }
+
+ };
+
+ getWizardWindow().setNextButtonCommand(sayNextCard);
+
+ Command sayPreviousCard = new Command() {
+ public void execute() {
+ try {
+ getWizardWindow().previousCard();
+ getWizardWindow().removeCard(thisCard);
+ Log.info("Remove viewColumnSelectionCard");
+ } catch (Exception e) {
+ Log.error("sayPreviousCard :" + e.getLocalizedMessage());
+ }
+ }
+ };
+
+ getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
+ // getWizardWindow().setEnableNextButton(false);
+
+ setEnableNextButton(false);
+
+ setBackButtonVisible(true);
+ setEnableBackButton(true);
+
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionPanel.java
new file mode 100644
index 0000000..2be694f
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/ViewColumnSelectionPanel.java
@@ -0,0 +1,254 @@
+/**
+ *
+ */
+package org.gcube.portlets.user.td.sdmxexportwidget.client;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+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.sdmx.SDMXExportSession;
+import org.gcube.portlets.user.td.sdmxexportwidget.client.properties.ColumnDataProperties;
+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.tr.column.ColumnData;
+import org.gcube.portlets.user.td.wizardwidget.client.WizardCard;
+import org.gcube.portlets.user.td.wizardwidget.client.dataresource.ResourceBundle;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.event.dom.client.KeyUpEvent;
+import com.google.gwt.event.dom.client.KeyUpHandler;
+import com.google.gwt.event.logical.shared.HasSelectionHandlers;
+import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.sencha.gxt.core.client.IdentityValueProvider;
+import com.sencha.gxt.core.client.Style.SelectionMode;
+import com.sencha.gxt.data.client.loader.RpcProxy;
+import com.sencha.gxt.data.shared.ListStore;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.Store;
+import com.sencha.gxt.data.shared.Store.StoreFilter;
+import com.sencha.gxt.data.shared.loader.ListLoadConfig;
+import com.sencha.gxt.data.shared.loader.ListLoadResult;
+import com.sencha.gxt.data.shared.loader.ListLoadResultBean;
+import com.sencha.gxt.data.shared.loader.ListLoader;
+import com.sencha.gxt.data.shared.loader.LoadResultListStoreBinding;
+import com.sencha.gxt.widget.core.client.ContentPanel;
+import com.sencha.gxt.widget.core.client.button.TextButton;
+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.TextField;
+import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel;
+import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
+import com.sencha.gxt.widget.core.client.grid.ColumnModel;
+import com.sencha.gxt.widget.core.client.grid.Grid;
+import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem;
+import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
+
+/**
+ *
+ * @author "Giancarlo Panichi" g.panichi@isti.cnr.it
+ *
+ */
+public class ViewColumnSelectionPanel extends ContentPanel implements
+ HasSelectionHandlers {
+
+ private static final ColumnDataProperties properties = GWT
+ .create(ColumnDataProperties.class);
+
+ private static final ColumnConfig nameColumn = new ColumnConfig(
+ properties.label(), 50, "Name");
+
+ private Grid grid;
+
+ private WizardCard parent;
+ private ResourceBundle res;
+ private SDMXExportSession sdmxExportSession;
+
+ public ViewColumnSelectionPanel(WizardCard parent, ResourceBundle res,
+ SDMXExportSession sdmxExportSession) {
+ this.parent=parent;
+ this.res = res;
+ this.sdmxExportSession = sdmxExportSession;
+
+ setHeaderVisible(false);
+ buildPanel(properties.id(),
+ Arrays.> asList(nameColumn),
+ nameColumn);
+ }
+
+ private void buildPanel(ModelKeyProvider keyProvider,
+ List> columns,
+ ColumnConfig autoexpandColumn) {
+
+ ToolBar toolBar = new ToolBar();
+ toolBar.add(new LabelToolItem("Search: "));
+ final TextField searchField = new TextField();
+ toolBar.add(searchField);
+
+ TextButton btnReload = new TextButton();
+ // btnReload.setText("Reload");
+ btnReload.setIcon(res.refresh16());
+ btnReload.setToolTip("Reload");
+ toolBar.add(btnReload);
+
+ IdentityValueProvider identity = new IdentityValueProvider();
+ final CheckBoxSelectionModel sm = new CheckBoxSelectionModel(
+ identity);
+
+ ColumnModel cm = new ColumnModel(columns);
+
+ final ExtendedListStore store = new ExtendedListStore(
+ keyProvider);
+
+ searchField.addKeyUpHandler(new KeyUpHandler() {
+
+ public void onKeyUp(KeyUpEvent event) {
+ Log.trace("searchTerm: " + searchField.getCurrentValue());
+ store.applyFilters();
+ }
+ });
+
+ store.addFilter(new StoreFilter() {
+
+ public boolean select(Store store, ColumnData parent,
+ ColumnData item) {
+ String searchTerm = searchField.getCurrentValue();
+ if (searchTerm == null)
+ return true;
+ return ViewColumnSelectionPanel.this.select(item, searchTerm);
+ }
+ });
+
+ store.setEnableFilters(true);
+
+ RpcProxy> proxy = new RpcProxy>() {
+
+ public void load(ListLoadConfig loadConfig,
+ final AsyncCallback> callback) {
+ loadData(loadConfig, callback);
+ }
+ };
+ final ListLoader> loader = new ListLoader>(
+ proxy);
+
+ loader.setRemoteSort(false);
+ loader.addLoadHandler(new LoadResultListStoreBinding>(
+ store));
+
+ grid = new Grid(store, cm) {
+ @Override
+ protected void onAfterFirstAttach() {
+ super.onAfterFirstAttach();
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ public void execute() {
+ loader.load();
+ }
+ });
+ }
+ };
+
+ sm.setSelectionMode(SelectionMode.SINGLE);
+ grid.setLoader(loader);
+ grid.setSelectionModel(sm);
+ grid.getView().setAutoExpandColumn(autoexpandColumn);
+ grid.getView().setStripeRows(true);
+ grid.getView().setColumnLines(true);
+ grid.getView().setAutoFill(true);
+ grid.setBorders(false);
+ grid.setLoadMask(true);
+ grid.setColumnReordering(true);
+
+ SelectHandler sh = new SelectHandler() {
+ public void onSelect(SelectEvent event) {
+ loader.load();
+ }
+ };
+
+ btnReload.addSelectHandler(sh);
+
+ VerticalLayoutContainer con = new VerticalLayoutContainer();
+ con.add(toolBar, new VerticalLayoutData(1, -1));
+ con.add(grid, new VerticalLayoutData(1, 1));
+ setWidget(con);
+ }
+
+ protected boolean select(ColumnData item, String searchTerm) {
+ if (item.getLabel() != null
+ && item.getLabel().toLowerCase()
+ .contains(searchTerm.toLowerCase()))
+ return true;
+
+ return false;
+ }
+
+ protected void loadData(ListLoadConfig loadConfig,
+ final AsyncCallback> callback) {
+
+ TDGWTServiceAsync.INSTANCE.getColumnWithViewColumnIncluded(
+ sdmxExportSession.getTabResource().getTrId(),
+ new AsyncCallback>() {
+
+ public void onFailure(Throwable caught) {
+ if (caught instanceof TDGWTSessionExpiredException) {
+ parent.getEventBus()
+ .fireEvent(
+ new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("No ColumnData retrieved");
+ }
+ callback.onFailure(caught);
+ }
+
+ public void onSuccess(ArrayList result) {
+ Log.trace("loaded " + result.size() + " ColumnData");
+ List viewColumn=new ArrayList<>();
+ for(ColumnData column:result){
+ if(column!=null&& column.isViewColumn()){
+ viewColumn.add(column);
+ }
+ }
+
+ callback.onSuccess(new ListLoadResultBean(
+ viewColumn));
+ }
+ });
+ }
+
+ public HandlerRegistration addSelectionHandler(
+ SelectionHandler handler) {
+ return grid.getSelectionModel().addSelectionHandler(handler);
+ }
+
+ /*
+ * public List getSelectedItems() { return
+ * grid.getSelectionModel().getSelectedItems(); }
+ */
+
+ public ColumnData getSelectedItem() {
+ return grid.getSelectionModel().getSelectedItem();
+ }
+
+ protected class ExtendedListStore extends ListStore {
+
+ public ExtendedListStore(ModelKeyProvider super M> keyProvider) {
+ super(keyProvider);
+ }
+
+ public void applyFilters() {
+ super.applyFilters();
+ }
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesProperties.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/AgenciesProperties.java
similarity index 90%
rename from src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesProperties.java
rename to src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/AgenciesProperties.java
index f8288bc..f4bb783 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/AgenciesProperties.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/AgenciesProperties.java
@@ -1,7 +1,7 @@
/**
*
*/
-package org.gcube.portlets.user.td.sdmxexportwidget.client;
+package org.gcube.portlets.user.td.sdmxexportwidget.client.properties;
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistProperties.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/CodelistProperties.java
similarity index 90%
rename from src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistProperties.java
rename to src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/CodelistProperties.java
index 76d51a7..32a915a 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/CodelistProperties.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/CodelistProperties.java
@@ -1,7 +1,7 @@
/**
*
*/
-package org.gcube.portlets.user.td.sdmxexportwidget.client;
+package org.gcube.portlets.user.td.sdmxexportwidget.client.properties;
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/ColumnDataProperties.java
new file mode 100644
index 0000000..59a7e7c
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/ColumnDataProperties.java
@@ -0,0 +1,25 @@
+package org.gcube.portlets.user.td.sdmxexportwidget.client.properties;
+
+import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnData;
+
+import com.google.gwt.editor.client.Editor.Path;
+import com.sencha.gxt.core.client.ValueProvider;
+import com.sencha.gxt.data.shared.ModelKeyProvider;
+import com.sencha.gxt.data.shared.PropertyAccess;
+
+/**
+ *
+ * @author "Giancarlo Panichi"
+ * g.panichi@isti.cnr.it
+ *
+ */
+public interface ColumnDataProperties extends
+ PropertyAccess {
+
+ @Path("id")
+ ModelKeyProvider id();
+
+ ValueProvider label();
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetProperties.java b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/DatasetProperties.java
similarity index 90%
rename from src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetProperties.java
rename to src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/DatasetProperties.java
index cc0121e..7056c1f 100644
--- a/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/DatasetProperties.java
+++ b/src/main/java/org/gcube/portlets/user/td/sdmxexportwidget/client/properties/DatasetProperties.java
@@ -1,7 +1,7 @@
/**
*
*/
-package org.gcube.portlets.user.td.sdmxexportwidget.client;
+package org.gcube.portlets.user.td.sdmxexportwidget.client.properties;
import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Dataset;