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 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;