From 71265d74ce4eae85fc9c5aeff05d162d4026fb05 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Fri, 12 Jan 2018 11:16:40 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-excel-export-widget@162117 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 49 +++ .project | 36 +++ .../com.google.appengine.eclipse.core.prefs | 4 + .settings/com.google.gdt.eclipse.core.prefs | 4 + .settings/com.google.gwt.eclipse.core.prefs | 3 + .settings/org.eclipse.core.resources.prefs | 6 + .settings/org.eclipse.jdt.core.prefs | 13 + .settings/org.eclipse.m2e.core.prefs | 4 + .settings/org.eclipse.wst.common.component | 6 + ....eclipse.wst.common.project.facet.core.xml | 5 + .settings/org.eclipse.wst.validation.prefs | 2 + EcelExportWizardTDTest-prod.launch | 22 ++ ExcelExportWizardTDTest-dev.launch | 22 ++ distro/LICENSE | 1 + distro/README | 68 +++++ distro/changelog.xml | 5 + distro/descriptor.xml | 32 ++ distro/profile.xml | 29 ++ pom.xml | 228 ++++++++++++++ .../client/ExcelExportWizardTD.java | 43 +++ .../client/ExcelExportWizardTDEntry.java | 23 ++ .../client/ExcelOperationInProgressCard.java | 284 ++++++++++++++++++ .../client/ExcelTableDetailCard.java | 198 ++++++++++++ .../client/MeasureColumnSelectionCard.java | 152 ++++++++++ .../client/MeasureColumnSelectionPanel.java | 259 ++++++++++++++++ .../client/properties/AgenciesProperties.java | 34 +++ .../client/properties/CodelistProperties.java | 31 ++ .../properties/ColumnDataProperties.java | 25 ++ .../client/properties/DatasetProperties.java | 30 ++ .../TemplateColumnDataProperties.java | 25 ++ .../properties/TemplateDataProperties.java | 35 +++ .../ExcelExportWizardTD.gwt.xml | 30 ++ src/main/webapp/ExcelExportWizardTD.css | 34 +++ src/main/webapp/ExcelExportWizardTD.html | 63 ++++ src/main/webapp/WEB-INF/web.xml | 25 ++ .../client/GwtTestExcelExportWizardTD.java | 63 ++++ .../SDMXExportWizardTDJUnit.gwt.xml | 13 + 37 files changed, 1906 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/com.google.appengine.eclipse.core.prefs create mode 100644 .settings/com.google.gdt.eclipse.core.prefs create mode 100644 .settings/com.google.gwt.eclipse.core.prefs create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 .settings/org.eclipse.wst.common.component create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 .settings/org.eclipse.wst.validation.prefs create mode 100644 EcelExportWizardTDTest-prod.launch create mode 100644 ExcelExportWizardTDTest-dev.launch create mode 100644 distro/LICENSE create mode 100644 distro/README create mode 100644 distro/changelog.xml create mode 100644 distro/descriptor.xml create mode 100644 distro/profile.xml create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTD.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTDEntry.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelOperationInProgressCard.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/AgenciesProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java create mode 100644 src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java create mode 100644 src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml create mode 100644 src/main/webapp/ExcelExportWizardTD.css create mode 100644 src/main/webapp/ExcelExportWizardTD.html create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java create mode 100644 src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..45b0e07 --- /dev/null +++ b/.classpath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..cc7358f --- /dev/null +++ b/.project @@ -0,0 +1,36 @@ + + + tabular-data-excel-export-widget + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/.settings/com.google.appengine.eclipse.core.prefs b/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..5260f5f --- /dev/null +++ b/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +filesCopiedToWebInfLib= +googleCloudSqlEnabled=false +localDevMySqlEnabled=true 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/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..fb32c70 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +entryPointModules= +filesCopiedToWebInfLib= diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..6b5aebc --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,13 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..0cffe68 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,6 @@ + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..4f92af5 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,5 @@ + + + + + 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/EcelExportWizardTDTest-prod.launch b/EcelExportWizardTDTest-prod.launch new file mode 100644 index 0000000..165f2b1 --- /dev/null +++ b/EcelExportWizardTDTest-prod.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExcelExportWizardTDTest-dev.launch b/ExcelExportWizardTDTest-dev.launch new file mode 100644 index 0000000..1b0dc5d --- /dev/null +++ b/ExcelExportWizardTDTest-dev.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..2d9616a --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1 @@ +${gcube.license} \ No newline at end of file diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..680aeaf --- /dev/null +++ b/distro/README @@ -0,0 +1,68 @@ +The gCube System - ${name} +-------------------------------------------------- + +${description} + + +${gcube.description} + +${gcube.funding} + + +Version +-------------------------------------------------- + +${version} (${buildDate}) + +Please see the file named "changelog.xml" in this directory for the release notes. + + +Authors +-------------------------------------------------- + +* Giancarlo Panichi (giancarlo.panichi-AT-isti.cnr.it), + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" CNR, Pisa IT + + +Maintainers +----------- + +* Giancarlo Panichi (giancarlo.panichi-AT-isti.cnr.it), + Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" CNR, Pisa IT + + +Download information +-------------------------------------------------- + +Source code is available from SVN: + ${scm.url} + +Binaries can be downloaded from the gCube website: + ${gcube.website} + + +Installation +-------------------------------------------------- + +Installation documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/Tabular_Data_Manager + + +Documentation +-------------------------------------------------- + +Documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/Tabular_Data_Manager + + +Support +-------------------------------------------------- + +Bugs and support requests can be reported in the gCube issue tracking tool: + ${gcube.issueTracking} + + +Licensing +-------------------------------------------------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..03ac0cc --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,5 @@ + + + First Release + + \ No newline at end of file diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..b468e51 --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,32 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory} + / + true + + README + LICENSE + changelog.xml + profile.xml + + 755 + true + + + + + target/${build.finalName}.${project.packaging} + /${artifactId} + + + + \ No newline at end of file diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..62ae9a7 --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,29 @@ + + + + Library + + ${project.description} + PortletsUser + ${project.name} + ${version} + + + ${project.description} + ${project.name} + ${version} + + ${project.groupId} + ${project.artifactId} + ${project.version} + + library + + ${project.build.finalName}.${project.packaging} + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..89f1973 --- /dev/null +++ b/pom.xml @@ -0,0 +1,228 @@ + + + + + maven-parent + org.gcube.tools + 1.0.0 + + + + + 4.0.0 + org.gcube.portlets.user + tabular-data-excel-export-widget + 1.0.0-SNAPSHOT + + + tabular-data-excel-export-widget + tabular-data-excel-export-widget allows excel export of codelists and dataset + + + https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-excel-export-widget + + + + + Giancarlo Panichi + g.panichi@isti.cnr.it + CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" + + architect + developer + + + + + + ${project.build.directory}/${project.build.finalName} + distro + config + + + 2.6.1 + 3.3.2 + 3.1.1 + + ${env.KEYS} + + + UTF-8 + UTF-8 + + + + + + + localRun + + + org.slf4j + slf4j-api + compile + + + ch.qos.logback + logback-classic + 1.0.1 + runtime + + + + + + + + com.google.gwt + gwt-servlet + ${gwtVersion} + + + com.google.gwt + gwt-user + ${gwtVersion} + + + + com.sencha.gxt + gxt + ${gxtVersion} + + + + + org.gcube.portlets.user + tabular-data-gwt-service + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) + provided + + + + + org.gcube.portlets.user + tabular-data-widget-common-event + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + provided + + + + + org.gcube.portlets.user + tabular-data-monitor-widget + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + provided + + + + + org.gcube.portlets.user + tabular-data-wizard-widget + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + provided + + + + + com.allen-sauer.gwt.log + gwt-log + ${gwtLogVersion} + provided + + + + org.slf4j + slf4j-api + + + + + + junit + junit + 4.8.1 + test + + + + + + + + + + ${webappDirectory}/WEB-INF/classes + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.16 + + true + + + + + org.apache.maven.surefire + surefire-junit47 + 2.16 + + + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwtVersion} + + + + resources + + + + + ExcelExportWizardTD.html + ${webappDirectory} + org.gcube.portlets.user.td.excelexportwidget.ExcelExportWizardTD + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + + + + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTD.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTD.java new file mode 100644 index 0000000..2242d68 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTD.java @@ -0,0 +1,43 @@ +package org.gcube.portlets.user.td.excelexportwidget.client; + +import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession; +import org.gcube.portlets.user.td.wizardwidget.client.WizardWindow; + +import com.google.web.bindery.event.shared.EventBus; + +/** + * + * @author Giancarlo Panichi + * + * + * + */ +public class ExcelExportWizardTD extends WizardWindow { + + protected ExcelExportSession exportSession; + + /** + * + * + * @param title + * Title + * @param eventBus + * Event bus + */ + public ExcelExportWizardTD(String title, final EventBus eventBus) { + super(title, eventBus); + setWidth(550); + setHeight(520); + + exportSession = new ExcelExportSession(); + + + MeasureColumnSelectionCard sdmxRegistrySelectionCard = new MeasureColumnSelectionCard(exportSession); + addCard(sdmxRegistrySelectionCard); + sdmxRegistrySelectionCard.setup(); + + } + + + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTDEntry.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTDEntry.java new file mode 100644 index 0000000..2f173c9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelExportWizardTDEntry.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.user.td.excelexportwidget.client; + + + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.core.client.EntryPoint; +import com.google.web.bindery.event.shared.SimpleEventBus; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class ExcelExportWizardTDEntry implements EntryPoint { + + + public void onModuleLoad() { + SimpleEventBus eventBus=new SimpleEventBus(); + ExcelExportWizardTD exportWizard= new ExcelExportWizardTD("ExcelExport",eventBus); + Log.info(exportWizard.getId()); + } +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelOperationInProgressCard.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelOperationInProgressCard.java new file mode 100644 index 0000000..9cf3feb --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelOperationInProgressCard.java @@ -0,0 +1,284 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client; + +import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; +import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; +import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialog; +import org.gcube.portlets.user.td.monitorwidget.client.MonitorDialogListener; +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.OperationResult; +import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; +import org.gcube.portlets.user.td.wizardwidget.client.WizardCard; + +import com.allen_sauer.gwt.log.client.Log; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.Command; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.FlexTable; +import com.sencha.gxt.core.client.util.Margins; +import com.sencha.gxt.widget.core.client.FramedPanel; +import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData; +import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer; +import com.sencha.gxt.widget.core.client.container.MarginData; +import com.sencha.gxt.widget.core.client.container.VBoxLayoutContainer; +import com.sencha.gxt.widget.core.client.container.VBoxLayoutContainer.VBoxLayoutAlign; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class ExcelOperationInProgressCard extends WizardCard implements + MonitorDialogListener { + + protected ExcelOperationInProgressCard thisCard; + protected ExcelExportSession exportSession; + protected TRId newTrId; + protected HtmlLayoutContainer resultField; + + public ExcelOperationInProgressCard(final ExcelExportSession exportSession) { + super("Operation In Progress", ""); + + this.exportSession = exportSession; + thisCard = this; + + VBoxLayoutContainer operationInProgressPanel = new VBoxLayoutContainer(); + operationInProgressPanel.setVBoxLayoutAlign(VBoxLayoutAlign.CENTER); + + final FlexTable description = new FlexTable(); + // FlexCellFormatter cellFormatter = description.getFlexCellFormatter(); + description.setCellSpacing(10); + description.setCellPadding(4); + description.setBorderWidth(0); + + // display:block;vertical-align:text-top; + description.setHTML(0, 0, + "Destination: "); + description.setText(0, 1, exportSession.getSource().getName()); + + description.setHTML(1, 0, + "Id: "); + description.setText(1, 1, exportSession.getId()); + + description.setHTML(2, 0, + "Agency Id: "); + description.setText(2, 1, exportSession.getAgencyId()); + + description.setHTML(3, 0, + "Version: "); + description.setText(3, 1, exportSession.getVersion()); + + FramedPanel summary = new FramedPanel(); + summary.setHeadingText("Export Summary"); + summary.setWidth(400); + summary.add(description); + operationInProgressPanel.add(summary, new BoxLayoutData(new Margins(20, + 5, 10, 5))); + + resultField = new HtmlLayoutContainer("
"); + + operationInProgressPanel.add(resultField, new BoxLayoutData( + new Margins(10, 5, 10, 5))); + + setCenterWidget(operationInProgressPanel, new MarginData(0)); + resultField.setVisible(false); + + } + + // columnToImportMask + + public void exportSDMX() { + TDGWTServiceAsync.INSTANCE.startExcelExport(exportSession, + new AsyncCallback() { + + public void onSuccess(String taskId) { + openMonitorDialog(taskId); + + } + + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + getEventBus() + .fireEvent( + new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + showErrorAndHide("Error Locked", + caught.getLocalizedMessage(), "", + caught); + } else { + showErrorAndHide("Error in exportSDMX", + "An error occured in exportSDMX.", + caught.getLocalizedMessage(), caught); + } + } + } + }); + } + + @Override + public void setup() { + getWizardWindow().setEnableBackButton(false); + setBackButtonVisible(false); + getWizardWindow().setEnableNextButton(false); + getWizardWindow().setNextButtonToFinish(); + exportSDMX(); + } + + // + protected void openMonitorDialog(String taskId) { + MonitorDialog monitorDialog = new MonitorDialog(taskId, getEventBus()); + monitorDialog.addProgressDialogListener(this); + monitorDialog.show(); + } + + @Override + public void operationComplete(OperationResult operationResult) { + newTrId = operationResult.getTrId(); + SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); + safeHtmlBuilder + .appendHtmlConstant("
Operation Completed
Check The Resources
"); + resultField.setHTML(safeHtmlBuilder.toSafeHtml()); + resultField.setVisible(true); + Command sayComplete = new Command() { + public void execute() { + try { + getWizardWindow().close(false); + Log.info("fire Complete: " + newTrId); + + getWizardWindow().fireCompleted(newTrId); + + } catch (Exception e) { + Log.error("fire Complete :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setNextButtonCommand(sayComplete); + + setNextButtonVisible(true); + getWizardWindow().setEnableNextButton(true); + forceLayout(); + + } + + @Override + public void operationFailed(Throwable caught, String reason, String details) { + SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); + safeHtmlBuilder + .appendHtmlConstant("
Operation Failed
"); + resultField.setHTML(safeHtmlBuilder.toSafeHtml()); + resultField.setVisible(true); + if (caught instanceof TDGWTSessionExpiredException) { + getEventBus() + .fireEvent( + new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + showErrorAndHide("Error in SDMX Export", reason, details, caught); + } + forceLayout(); + } + + @Override + public void operationStopped(OperationResult operationResult, String reason, String details) { + newTrId = operationResult.getTrId(); + SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); + safeHtmlBuilder + .appendHtmlConstant("
Problems in the Operation
"); + resultField.setHTML(safeHtmlBuilder.toSafeHtml()); + resultField.setVisible(true); + + Command sayComplete = new Command() { + public void execute() { + try { + getWizardWindow().close(false); + Log.info("fire Complete: tabular resource " + + newTrId.getId()); + Log.info("fire Complete: tableId " + newTrId.getTableId()); + + getWizardWindow().fireCompleted(newTrId); + + } catch (Exception e) { + Log.error("fire Complete :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setNextButtonCommand(sayComplete); + + setNextButtonVisible(true); + getWizardWindow().setEnableNextButton(true); + forceLayout(); + } + + @Override + public void operationAborted() { + SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); + safeHtmlBuilder + .appendHtmlConstant("
Operation Aborted
"); + resultField.setHTML(safeHtmlBuilder.toSafeHtml()); + resultField.setVisible(true); + + Command sayComplete = new Command() { + public void execute() { + try { + getWizardWindow().close(false); + Log.info("fire Aborted"); + + getWizardWindow().fireAborted(); + + } catch (Exception e) { + Log.error("fire Aborted :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setNextButtonCommand(sayComplete); + + setNextButtonVisible(true); + getWizardWindow().setEnableNextButton(true); + forceLayout(); + + } + + @Override + public void operationPutInBackground() { + SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); + safeHtmlBuilder + .appendHtmlConstant("
Operation in Background
"); + resultField.setHTML(safeHtmlBuilder.toSafeHtml()); + resultField.setVisible(true); + + Command sayComplete = new Command() { + public void execute() { + try { + getWizardWindow().close(false); + Log.info("fire Operation In Background"); + + getWizardWindow().firePutInBackground(); + + } catch (Exception e) { + Log.error("fire Operation In Background :" + + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setNextButtonCommand(sayComplete); + + setNextButtonVisible(true); + getWizardWindow().setEnableNextButton(true); + forceLayout(); + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java new file mode 100644 index 0000000..d6da38b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/ExcelTableDetailCard.java @@ -0,0 +1,198 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client; + +import org.gcube.portlets.user.td.gwtservice.shared.Constants; +import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession; +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.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.container.VerticalLayoutContainer; +import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; +import com.sencha.gxt.widget.core.client.event.HideEvent; +import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; +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 + * + * + */ +public class ExcelTableDetailCard extends WizardCard { + + private final String TABLEDETAILPANELWIDTH = "100%"; + private final String TABLEDETAILPANELHEIGHT = "100%"; + private final String FORMWIDTH = "538px"; + + private ExcelExportSession exportSession; + private ExcelTableDetailCard thisCard; + + private VerticalLayoutContainer p = new VerticalLayoutContainer(); + private VerticalPanel tableDetailPanel; + + private TextField id; + private TextField agencyId; + private TextField version; + private TextField measureColumn; + + public ExcelTableDetailCard(final ExcelExportSession exportSession) { + super("Excel Table Detail", ""); + + this.exportSession = exportSession; + thisCard = this; + + tableDetailPanel = new VerticalPanel(); + + tableDetailPanel.setSpacing(4); + tableDetailPanel.setWidth(TABLEDETAILPANELWIDTH); + tableDetailPanel.setHeight(TABLEDETAILPANELHEIGHT); + + FramedPanel form = new FramedPanel(); + form.setHeadingText("Details"); + form.setWidth(FORMWIDTH); + + FieldSet fieldSet = new FieldSet(); + fieldSet.setHeadingText("Information"); + fieldSet.setCollapsible(false); + form.add(fieldSet); + + switch (exportSession.getExportType()) { + case DATASET: + datasetViewConfig(); + break; + case CODELIST: + case GENERIC: + 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(Constants.EXCEL_DATASET_EXPORT_DEFAULT_ID); + p.add(new FieldLabel(id, "Id"), new VerticalLayoutData(1, -1)); + + agencyId = new TextField(); + agencyId.setVisible(true); + agencyId.setEmptyText("Enter Agency Id..."); + if (exportSession.getAgencyId() == null || exportSession.getAgencyId().isEmpty()) { + agencyId.setValue(Constants.EXCEL_DATASET_EXPORT_DEFAULT_AGENCY_ID); + } else { + agencyId.setValue(exportSession.getAgencyId()); + } + + FieldLabel agencyNameLabel = new FieldLabel(agencyId, "Agency Id"); + p.add(agencyNameLabel, new VerticalLayoutData(1, -1)); + + + version = new TextField(); + version.setAllowBlank(false); + version.setEmptyText("Enter Version..."); + version.setValue(Constants.EXCEL_DATASET_EXPORT_DEFAULT_VERSION); + p.add(new FieldLabel(version, "Version"), new VerticalLayoutData(1, -1)); + + measureColumn = new TextField(); + measureColumn.setValue(exportSession.getObsValueColumn().getLabel()); + measureColumn.setReadOnly(true); + p.add(new FieldLabel(measureColumn, "Measure Column"), new VerticalLayoutData(1, -1)); + + + } + + @Override + public void setup() { + Command sayNextCard = new Command() { + + public void execute() { + checkData(); + } + + }; + + getWizardWindow().setNextButtonCommand(sayNextCard); + + Command sayPreviousCard = new Command() { + public void execute() { + try { + getWizardWindow().previousCard(); + getWizardWindow().removeCard(thisCard); + Log.info("Remove ExcelTableDetailCard"); + } catch (Exception e) { + Log.error("sayPreviousCard :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setPreviousButtonCommand(sayPreviousCard); + getWizardWindow().setEnableNextButton(true); + + } + + protected void checkData() { + getWizardWindow().setEnableNextButton(false); + getWizardWindow().setEnableBackButton(false); + AlertMessageBox d; + HideHandler hideHandler = new HideHandler() { + + public void onHide(HideEvent event) { + getWizardWindow().setEnableNextButton(true); + getWizardWindow().setEnableBackButton(false); + + } + }; + + if (id.getValue() == null || id.getValue().isEmpty() || !id.isValid() || version.getValue() == null + || version.getValue().isEmpty() || !version.isValid() || agencyId.getValue() == null + || agencyId.getValue().isEmpty() || !agencyId.isValid()) { + + d = new AlertMessageBox("Attention!", "Fill in all fields"); + d.addHideHandler(hideHandler); + 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.addHideHandler(hideHandler); + d.show(); + } else { + id.setReadOnly(true); + version.setReadOnly(true); + agencyId.setReadOnly(true); + goNext(); + } + } + + } + + protected void goNext() { + try { + exportSession.setId(id.getCurrentValue()); + exportSession.setAgencyId(agencyId.getCurrentValue()); + exportSession.setVersion(version.getCurrentValue()); + + ExcelOperationInProgressCard excelOperationInProgressCard = new ExcelOperationInProgressCard(exportSession); + getWizardWindow().addCard(excelOperationInProgressCard); + Log.info("NextCard ExcelOperationInProgressCard"); + getWizardWindow().nextCard(); + } catch (Exception e) { + Log.error("sayNextCard :" + e.getLocalizedMessage()); + } + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java new file mode 100644 index 0000000..58ede75 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionCard.java @@ -0,0 +1,152 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client; + +import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; +import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; +import org.gcube.portlets.user.td.gwtservice.shared.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.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.event.logical.shared.SelectionEvent; +import com.google.gwt.event.logical.shared.SelectionHandler; +import com.google.gwt.user.client.Command; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sencha.gxt.widget.core.client.box.AutoProgressMessageBox; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class MeasureColumnSelectionCard extends WizardCard { + + private MeasureColumnSelectionCard thisCard; + private ExcelExportSession exportSession; + private MeasureColumnSelectionPanel measureColumnSelectionPanel; + + // private Agencies agency; + + public MeasureColumnSelectionCard(final ExcelExportSession exportSession) { + super("Measure column selection", ""); + + this.exportSession = exportSession; + thisCard = this; + + final AutoProgressMessageBox box = new AutoProgressMessageBox("Wait", "Retrieving Information, please wait..."); + box.setProgressText("Retrieving..."); + box.auto(); + box.show(); + retrieveTabularDataInfo(box); + + + } + + + public void init(){ + + this.measureColumnSelectionPanel = new MeasureColumnSelectionPanel( + thisCard, res, exportSession); + + measureColumnSelectionPanel + .addSelectionHandler(new SelectionHandler() { + + public void onSelection(SelectionEvent event) { + exportSession + .setObsValueColumn(measureColumnSelectionPanel + .getSelectedItem()); + getWizardWindow().setEnableNextButton(true); + + } + + }); + + setContent(measureColumnSelectionPanel); + + } + + private void retrieveTabularDataInfo(final AutoProgressMessageBox box) { + TDGWTServiceAsync.INSTANCE.getTabResourceInformation(new AsyncCallback() { + + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + getEventBus().fireEvent(new SessionExpiredEvent(SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + showErrorAndHide("Error Locked", caught.getLocalizedMessage(), "", caught); + } else { + Log.error( + "No Tabular Resource Information retrived from server " + caught.getLocalizedMessage()); + box.hide(); + showErrorAndHide("Error", "Error retrieving tabular resource information: ", + caught.getLocalizedMessage(), caught); + } + } + } + + public void onSuccess(TabResource result) { + Log.debug("Tabular Resource Information retrieved"); + exportSession.setTabResource(result); + exportSession.setExportType(TableType.getColumnDataTypeFromId(result.getTableTypeName())); + exportSession.setAgencyId(result.getAgency()); + box.hide(); + init(); + } + }); + } + + + + @Override + public void setup() { + Command sayNextCard = new Command() { + + public void execute() { + ExcelTableDetailCard sdmxTableDetailCard = new ExcelTableDetailCard( + exportSession); + getWizardWindow().addCard(sdmxTableDetailCard); + Log.info("NextCard ExcelTableDetailCard"); + getWizardWindow().nextCard(); + + } + + }; + + getWizardWindow().setNextButtonCommand(sayNextCard); + + Command sayPreviousCard = new Command() { + public void execute() { + try { + getWizardWindow().previousCard(); + getWizardWindow().removeCard(thisCard); + Log.info("Remove measureColumnSelectionCard"); + } catch (Exception e) { + Log.error("sayPreviousCard :" + e.getLocalizedMessage()); + } + } + }; + + getWizardWindow().setPreviousButtonCommand(sayPreviousCard); + // getWizardWindow().setEnableNextButton(false); + + setBackButtonVisible(false); + setEnableBackButton(false); + + if (measureColumnSelectionPanel == null + || measureColumnSelectionPanel.getSelectedItem() == null) { + setEnableNextButton(false); + } else { + setEnableNextButton(true); + } + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java new file mode 100644 index 0000000..d08452a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/MeasureColumnSelectionPanel.java @@ -0,0 +1,259 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.gcube.portlets.user.td.excelexportwidget.client.properties.ColumnDataProperties; +import org.gcube.portlets.user.td.gwtservice.client.rpc.TDGWTServiceAsync; +import org.gcube.portlets.user.td.gwtservice.shared.excel.ExcelExportSession; +import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; +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.widgetcommonevent.shared.tr.column.ColumnTypeCode; +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 + * + * + */ +public class MeasureColumnSelectionPanel 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 ExcelExportSession excelExportSession; + + public MeasureColumnSelectionPanel(WizardCard parent, ResourceBundle res, + ExcelExportSession excelExportSession) { + this.parent = parent; + this.res = res; + this.excelExportSession = excelExportSession; + + 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 MeasureColumnSelectionPanel.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.getColumns(excelExportSession + .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 measureColumn = new ArrayList<>(); + for (ColumnData column : result) { + if (column != null + && column.getTypeCode() != null + && column.getTypeCode().compareTo( + ColumnTypeCode.MEASURE.toString()) == 0) { + measureColumn.add(column); + } + } + + callback.onSuccess(new ListLoadResultBean( + measureColumn)); + } + }); + } + + 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/excelexportwidget/client/properties/AgenciesProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/AgenciesProperties.java new file mode 100644 index 0000000..0efd145 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/AgenciesProperties.java @@ -0,0 +1,34 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client.properties; + + + +import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Agencies; + +import com.google.gwt.editor.client.Editor.Path; +import com.sencha.gxt.core.client.ValueProvider; +import com.sencha.gxt.data.shared.LabelProvider; +import com.sencha.gxt.data.shared.ModelKeyProvider; +import com.sencha.gxt.data.shared.PropertyAccess; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public interface AgenciesProperties extends PropertyAccess { + + @Path("id") + ModelKeyProvider key(); + LabelProvider nameLabel(); + + ValueProvider id(); + ValueProvider name(); + ValueProvider description(); + + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java new file mode 100644 index 0000000..acfe9ae --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/CodelistProperties.java @@ -0,0 +1,31 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client.properties; + + + +import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Codelist; + +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 + * + * + */ +public interface CodelistProperties extends PropertyAccess { + + @Path("id") + ModelKeyProvider key(); + + ValueProvider name(); + ValueProvider agencyId(); + ValueProvider version(); + ValueProvider description(); + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java new file mode 100644 index 0000000..f46b080 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/ColumnDataProperties.java @@ -0,0 +1,25 @@ +package org.gcube.portlets.user.td.excelexportwidget.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 + * + * + */ +public interface ColumnDataProperties extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + ValueProvider label(); + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java new file mode 100644 index 0000000..ea48bc7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/DatasetProperties.java @@ -0,0 +1,30 @@ +/** + * + */ +package org.gcube.portlets.user.td.excelexportwidget.client.properties; + + +import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Dataset; + +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 + * + * + */ +public interface DatasetProperties extends PropertyAccess { + + @Path("id") + ModelKeyProvider key(); + + ValueProvider name(); + ValueProvider agencyId(); + ValueProvider version(); + ValueProvider description(); + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java new file mode 100644 index 0000000..74d3f48 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateColumnDataProperties.java @@ -0,0 +1,25 @@ +package org.gcube.portlets.user.td.excelexportwidget.client.properties; + +import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateColumnData; + +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 + * + * + */ +public interface TemplateColumnDataProperties extends + PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + ValueProvider label(); + + +} diff --git a/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java new file mode 100644 index 0000000..fe535e8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/excelexportwidget/client/properties/TemplateDataProperties.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.user.td.excelexportwidget.client.properties; + + + +import java.util.Date; + +import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateData; + +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 + * + * + */ +public interface TemplateDataProperties extends PropertyAccess { + + @Path("id") + ModelKeyProvider id(); + + ValueProvider name(); + ValueProvider category(); + ValueProvider ownerLogin(); + ValueProvider agency(); + ValueProvider description(); + ValueProvider creationDate(); + + + +} + diff --git a/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml b/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml new file mode 100644 index 0000000..0f35827 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/td/excelexportwidget/ExcelExportWizardTD.gwt.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/ExcelExportWizardTD.css b/src/main/webapp/ExcelExportWizardTD.css new file mode 100644 index 0000000..7aca7ac --- /dev/null +++ b/src/main/webapp/ExcelExportWizardTD.css @@ -0,0 +1,34 @@ +/** Add css rules here for your application. */ + + +/** Example rules used by the template application (remove for your app) */ +h1 { + font-size: 2em; + font-weight: bold; + color: #777777; + margin: 40px 0px 70px; + text-align: center; +} + +.sendButton { + display: block; + font-size: 16pt; +} + +/** Most GWT widgets already have a style name defined */ +.gwt-DialogBox { + width: 400px; +} + +.dialogVPanel { + margin: 5px; +} + +.serverResponseLabelError { + color: red; +} + +/** Set ids using widget.getElement().setId("idOfElement") */ +#closeButton { + margin: 15px 6px 6px; +} diff --git a/src/main/webapp/ExcelExportWizardTD.html b/src/main/webapp/ExcelExportWizardTD.html new file mode 100644 index 0000000..21814a8 --- /dev/null +++ b/src/main/webapp/ExcelExportWizardTD.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + Web Application Starter Project + + + + + + + + + + + + + + + + + + + + + + +

Web Application Starter Project

+ + + + + + + + + + + + +
Please enter your name:
+ + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..03c87d7 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,25 @@ + + + + + + + + jUnitHostImpl + com.google.gwt.junit.server.JUnitHostImpl + + + + + jUnitHostImpl + ExcelExportWizardTD/junithost/* + + + + + ExcelExportWizardTD.html + + + diff --git a/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java b/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java new file mode 100644 index 0000000..5665412 --- /dev/null +++ b/src/test/java/org/gcube/portlets/user/td/excelexportwidget/client/GwtTestExcelExportWizardTD.java @@ -0,0 +1,63 @@ +package org.gcube.portlets.user.td.excelexportwidget.client; + + +import com.google.gwt.junit.client.GWTTestCase; + +/** + * GWT JUnit integration tests must extend GWTTestCase. + * Using "GwtTest*" naming pattern exclude them from running with + * surefire during the test phase. + * + * If you run the tests using the Maven command line, you will have to + * navigate with your browser to a specific url given by Maven. + * See http://mojo.codehaus.org/gwt-maven-plugin/user-guide/testing.html + * for details. + */ +public class GwtTestExcelExportWizardTD extends GWTTestCase { + + /** + * Must refer to a valid module that sources this class. + */ + public String getModuleName() { + return "org.gcube.portlets.user.td.excelexportwidget.ExcelExportWizardTDJUnit"; + } + + + /** + * This test will send a request to the server using the greetServer method in + * GreetingService and verify the response. + */ + public void testGreetingService() { + // Create the service that we will test. + //GreetingServiceAsync greetingService = GWT.create(GreetingService.class); + //ServiceDefTarget target = (ServiceDefTarget) greetingService; + //target.setServiceEntryPoint(GWT.getModuleBaseURL() + "SDMXImportWizardTD/greet"); + + // Since RPC calls are asynchronous, we will need to wait for a response + // after this test method returns. This line tells the test runner to wait + // up to 10 seconds before timing out. + //delayTestFinish(10000); + + // Send a request to the server. + /* greetingService.greetServer("GWT User", new AsyncCallback() { + public void onFailure(Throwable caught) { + // The request resulted in an unexpected error. + fail("Request failure: " + caught.getMessage()); + } + + + public void onSuccess(String result) { + // Verify that the response is correct. + assertTrue(result.startsWith("Hello, GWT User!")); + + // Now that we have received a response, we need to tell the test runner + // that the test is complete. You must call finishTest() after an + // asynchronous test finishes successfully, or the test will time out. + finishTest(); + } + });*/ + + } + + +} diff --git a/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml b/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml new file mode 100644 index 0000000..9cf5e6f --- /dev/null +++ b/src/test/resources/org/gcube/portlets/user/td/excelexportwidget/SDMXExportWizardTDJUnit.gwt.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file