From fd437a29df503d01f914189cfc89372a7f025395 Mon Sep 17 00:00:00 2001 From: "giancarlo.panichi" Date: Thu, 9 Jun 2016 14:26:02 +0000 Subject: [PATCH] refs 4041: Accounting Manager portlet: give possibility to download raw data to users Task-Url: https://support.d4science.org/issues/4041 Added XML and JSON download git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/accounting-manager@129039 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 31 ++- .../accountingmanager/accountingman.gwt.xml | 9 +- .../client/AccountingManagerController.java | 22 +- .../client/event/DownloadCSVRequestEvent.java | 69 ----- .../client/event/ExportRequestEvent.java | 74 ++++++ .../charts/job/JobChartBasicPanel.java | 50 +++- .../maindata/charts/job/JobChartTopPanel.java | 49 +++- .../service/ServiceChartBasicPanel.java | 50 +++- .../charts/service/ServiceChartTopPanel.java | 51 +++- .../storage/StorageChartBasicPanel.java | 50 +++- .../charts/storage/StorageChartTopPanel.java | 50 +++- .../charts/utils/DownloadConstants.java | 2 + .../resource/AccountingManagerResources.java | 12 + .../resource/accounting-file-json_24.png | Bin 0 -> 900 bytes .../resource/accounting-file-json_32.png | Bin 0 -> 1420 bytes .../resource/accounting-file-xml_24.png | Bin 0 -> 904 bytes .../resource/accounting-file-xml_32.png | Bin 0 -> 1313 bytes .../server/AccountingManagerServiceImpl.java | 2 +- ...loadCSVServlet.java => ExportServlet.java} | 73 ++++-- .../server/csv/file/CSVModel.java | 72 ------ .../server/csv/file/CSVModelDirector.java | 38 --- .../server/csv/file/CSVModelSpec.java | 32 --- .../server/{csv => export}/CSVManager.java | 95 +++---- .../server/export/JSONManager.java | 241 ++++++++++++++++++ .../server/export/XMLManager.java | 208 +++++++++++++++ .../export/model/AccountingDataModel.java | 64 +++++ .../model/AccountingDataRow.java} | 14 +- .../model/AccountingModel4Service.java} | 20 +- .../model/AccountingModel4Storage.java} | 20 +- .../model/AccountingModelBuilder.java} | 14 +- .../export/model/AccountingModelDirector.java | 38 +++ .../export/model/AccountingModelSpec.java | 32 +++ .../accountingmanager/shared/Constants.java | 5 +- .../shared/csv/CSVDescriptor.java | 52 ---- .../shared/export/ExportDescriptor.java | 68 +++++ .../shared/export/ExportType.java | 17 ++ .../accountingmanager/accountingman.gwt.xml | 15 +- src/main/webapp/WEB-INF/web.xml | 12 +- 38 files changed, 1221 insertions(+), 430 deletions(-) delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/DownloadCSVRequestEvent.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/ExportRequestEvent.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-json_24.png create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-json_32.png create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_24.png create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_32.png rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{DownloadCSVServlet.java => ExportServlet.java} (55%) delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel.java delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelDirector.java delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelSpec.java rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{csv => export}/CSVManager.java (57%) create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataModel.java rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{csv/file/CSVDataRow.java => export/model/AccountingDataRow.java} (64%) rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{csv/file/CSVModel4Service.java => export/model/AccountingModel4Service.java} (89%) rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{csv/file/CSVModel4Storage.java => export/model/AccountingModel4Storage.java} (88%) rename src/main/java/org/gcube/portlets/admin/accountingmanager/server/{csv/file/CSVModelBuilder.java => export/model/AccountingModelBuilder.java} (62%) create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelDirector.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelSpec.java delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/shared/csv/CSVDescriptor.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportDescriptor.java create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportType.java diff --git a/pom.xml b/pom.xml index c0223e2..ecf2041 100644 --- a/pom.xml +++ b/pom.xml @@ -104,8 +104,6 @@ runtime - - org.slf4j @@ -114,13 +112,11 @@ - ch.qos.logback - logback-classic - 1.0.1 - runtime + org.slf4j + slf4j-log4j12 + compile - org.gcube.accounting @@ -148,10 +144,6 @@ - - - com.sencha.gxt @@ -338,6 +330,14 @@ 1.4 + + + org.json + json + 20160212 + + + @@ -350,14 +350,13 @@ org.slf4j slf4j-api - compile + provided - ch.qos.logback - logback-classic - 1.0.1 - runtime + org.slf4j + slf4j-log4j12 + provided diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml b/src/main/java/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml index 4e5751e..14ea4ac 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml @@ -44,17 +44,18 @@ values="en" /> --> - - + /> --> - + diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java index 08b857f..1b0de6e 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Date; import org.gcube.portlets.admin.accountingmanager.client.event.AccountingMenuEvent; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.event.FiltersChangeEvent; import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEvent; import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent; @@ -203,13 +203,13 @@ public class AccountingManagerController { } }); - eventBus.addHandler(DownloadCSVRequestEvent.TYPE, - new DownloadCSVRequestEvent.DownloadCSVRequestEventHandler() { + eventBus.addHandler(ExportRequestEvent.TYPE, + new ExportRequestEvent.ExportRequestEventHandler() { @Override - public void onDownload(DownloadCSVRequestEvent event) { - Log.debug("Catch DownloadDataRequestEvent"); - doDownloadCSV(event); + public void onExport(ExportRequestEvent event) { + Log.debug("Catch ExportRequestEvent"); + doExportRequest(event); } }); @@ -418,7 +418,7 @@ public class AccountingManagerController { } - private void doSaveDataOnWorkspace(DownloadCSVRequestEvent event) { + private void doSaveDataOnWorkspace(ExportRequestEvent event) { accountingMonitor = new AccountingMonitor(); Log.debug("Call saveCSVOnWorkspace on server, params: " + event.getAccountingType()); @@ -480,11 +480,13 @@ public class AccountingManagerController { }); } - private void doDownloadCSV(DownloadCSVRequestEvent event) { + private void doExportRequest(ExportRequestEvent event) { StringBuilder actionUrl = new StringBuilder(); actionUrl.append(GWT.getModuleBaseURL()); - actionUrl.append(Constants.DOWNLOAD_CVS_SERVLET + "?" - + Constants.DOWNLOAD_CVS_SERVLET_ACCOUNTINGTYPE_PARAMETER + "=" + actionUrl.append(Constants.EXPORT_SERVLET + "?" + + Constants.EXPORT_SERVLET_TYPE_PARAMETER + "=" + + event.getExportType().name()+"&" + + Constants.EXPORT_SERVLET_ACCOUNTING_TYPE_PARAMETER + "=" + event.getAccountingType().name()); Log.debug("Retrieved link: " + actionUrl); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/DownloadCSVRequestEvent.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/DownloadCSVRequestEvent.java deleted file mode 100644 index 49e6620..0000000 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/DownloadCSVRequestEvent.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.gcube.portlets.admin.accountingmanager.client.event; - -import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -/** - * - * - * @author "Giancarlo Panichi" g.panichi@isti.cnr.it - * - */ -public class DownloadCSVRequestEvent extends - GwtEvent { - - public static Type TYPE = new Type(); - private AccountingType accountingType; - - public interface DownloadCSVRequestEventHandler extends EventHandler { - void onDownload(DownloadCSVRequestEvent event); - } - - public interface HasDownloadCSVRequestEventHandler extends HasHandlers { - public HandlerRegistration addDownloadCSVRequestEventHandler( - DownloadCSVRequestEventHandler handler); - } - - public DownloadCSVRequestEvent(AccountingType accountingType) { - this.accountingType = accountingType; - } - - @Override - protected void dispatch(DownloadCSVRequestEventHandler handler) { - handler.onDownload(this); - } - - @Override - public Type getAssociatedType() { - return TYPE; - } - - public static Type getType() { - return TYPE; - } - - public static void fire(HasHandlers source, - DownloadCSVRequestEvent accountingMenuEvent) { - source.fireEvent(accountingMenuEvent); - } - - public AccountingType getAccountingType() { - return accountingType; - } - - @Override - public String toString() { - return "DownloadCSVRequestEvent [accountingType=" + accountingType - + "]"; - } - - - - - -} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/ExportRequestEvent.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/ExportRequestEvent.java new file mode 100644 index 0000000..0dca1fb --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/ExportRequestEvent.java @@ -0,0 +1,74 @@ +package org.gcube.portlets.admin.accountingmanager.client.event; + +import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +/** + * + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class ExportRequestEvent extends + GwtEvent { + + public static Type TYPE = new Type(); + private ExportType exportType; + private AccountingType accountingType; + + public interface ExportRequestEventHandler extends EventHandler { + void onExport(ExportRequestEvent event); + } + + public interface HasExportRequestEventHandler extends HasHandlers { + public HandlerRegistration addExportRequestEventHandler( + ExportRequestEventHandler handler); + } + + public ExportRequestEvent(ExportType exportType, + AccountingType accountingType) { + this.exportType=exportType; + this.accountingType = accountingType; + + } + + @Override + protected void dispatch(ExportRequestEventHandler handler) { + handler.onExport(this); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + public static Type getType() { + return TYPE; + } + + public static void fire(HasHandlers source, + ExportRequestEvent accountingMenuEvent) { + source.fireEvent(accountingMenuEvent); + } + + public AccountingType getAccountingType() { + return accountingType; + } + + public ExportType getExportType() { + return exportType; + } + + @Override + public String toString() { + return "ExportRequestEvent [exportType=" + exportType + + ", accountingType=" + accountingType + "]"; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartBasicPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartBasicPanel.java index fa31c70..ad71c09 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartBasicPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartBasicPanel.java @@ -2,7 +2,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.job; import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.JobChartMeasure; @@ -12,6 +12,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobBasic; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobData; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -61,6 +62,8 @@ public class JobChartBasicPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -231,6 +234,12 @@ public class JobChartBasicPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -253,6 +262,27 @@ public class JobChartBasicPanel extends SimpleContainer { } }); + + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); + downloadPNGItem.addSelectionHandler(new SelectionHandler() { @@ -292,6 +322,8 @@ public class JobChartBasicPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -301,8 +333,20 @@ public class JobChartBasicPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartTopPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartTopPanel.java index 567a74b..f9e2f0c 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartTopPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/job/JobChartTopPanel.java @@ -3,7 +3,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.job; import java.util.ArrayList; import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.JobChartMeasure; @@ -13,6 +13,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobData; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobTop; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -61,6 +62,8 @@ public class JobChartTopPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -155,6 +158,12 @@ public class JobChartTopPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -177,7 +186,26 @@ public class JobChartTopPanel extends SimpleContainer { } }); + + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); downloadPNGItem.addSelectionHandler(new SelectionHandler() { @@ -217,6 +245,8 @@ public class JobChartTopPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -367,11 +397,24 @@ public class JobChartTopPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + // chart.options.exporting.buttons.contextButton.menuItems[0].onclick(); public static native void onDownloadPNG(String id) /*-{ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartBasicPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartBasicPanel.java index c5b62da..b56920a 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartBasicPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartBasicPanel.java @@ -2,7 +2,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.servic import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ServiceChartMeasure; @@ -12,6 +12,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService; import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceBasic; import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceData; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -62,6 +63,8 @@ public class ServiceChartBasicPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -231,6 +234,12 @@ public class ServiceChartBasicPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -255,6 +264,26 @@ public class ServiceChartBasicPanel extends SimpleContainer { }); + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); + downloadPNGItem.addSelectionHandler(new SelectionHandler() { @Override @@ -293,6 +322,8 @@ public class ServiceChartBasicPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -302,10 +333,23 @@ public class ServiceChartBasicPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } + + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + // chart.options.exporting.buttons.contextButton.menuItems[0].onclick(); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartTopPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartTopPanel.java index d9a7493..d2d71ec 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartTopPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/service/ServiceChartTopPanel.java @@ -3,7 +3,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.servic import java.util.ArrayList; import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.TimeUnitMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; @@ -13,6 +13,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService; import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceData; import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceTop; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -61,6 +62,8 @@ public class ServiceChartTopPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -157,6 +160,12 @@ public class ServiceChartTopPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -179,6 +188,27 @@ public class ServiceChartTopPanel extends SimpleContainer { } }); + + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); + downloadPNGItem.addSelectionHandler(new SelectionHandler() { @@ -218,6 +248,8 @@ public class ServiceChartTopPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -369,10 +401,23 @@ public class ServiceChartTopPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } + + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + // chart.options.exporting.buttons.contextButton.menuItems[0].onclick(); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartBasicPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartBasicPanel.java index f7a066e..cefaaae 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartBasicPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartBasicPanel.java @@ -2,7 +2,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.storag import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ByteUnitMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; @@ -12,6 +12,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage; import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageBasic; import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageData; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -60,6 +61,8 @@ public class StorageChartBasicPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -218,6 +221,12 @@ public class StorageChartBasicPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -240,6 +249,27 @@ public class StorageChartBasicPanel extends SimpleContainer { } }); + + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); + downloadPNGItem.addSelectionHandler(new SelectionHandler() { @@ -279,6 +309,8 @@ public class StorageChartBasicPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -288,8 +320,20 @@ public class StorageChartBasicPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartTopPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartTopPanel.java index 300985c..536d5c4 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartTopPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartTopPanel.java @@ -3,7 +3,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.storag import java.util.ArrayList; import java.util.Date; -import org.gcube.portlets.admin.accountingmanager.client.event.DownloadCSVRequestEvent; +import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ByteUnitMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartTimeMeasure; import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants; @@ -13,6 +13,7 @@ import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientS import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage; import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageData; import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageTop; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType; import com.allen_sauer.gwt.log.client.Log; import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel; @@ -61,6 +62,8 @@ public class StorageChartTopPanel extends SimpleContainer { // Download Menu private MenuItem downloadCSVItem; + private MenuItem downloadXMLItem; + private MenuItem downloadJSONItem; private MenuItem downloadPNGItem; private MenuItem downloadJPGItem; private MenuItem downloadPDFItem; @@ -167,6 +170,12 @@ public class StorageChartTopPanel extends SimpleContainer { downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV, AccountingManagerResources.INSTANCE.accountingFileCSV24()); downloadCSVItem.setHeight(30); + downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML, + AccountingManagerResources.INSTANCE.accountingFileXML24()); + downloadXMLItem.setHeight(30); + downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON, + AccountingManagerResources.INSTANCE.accountingFileJSON24()); + downloadJSONItem.setHeight(30); downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG, AccountingManagerResources.INSTANCE.accountingFilePNG24()); downloadPNGItem.setHeight(30); @@ -190,6 +199,26 @@ public class StorageChartTopPanel extends SimpleContainer { }); + downloadXMLItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadXML(); + + } + + }); + + downloadJSONItem.addSelectionHandler(new SelectionHandler() { + + @Override + public void onSelection(SelectionEvent event) { + onDownloadJSON(); + + } + + }); + downloadPNGItem.addSelectionHandler(new SelectionHandler() { @Override @@ -228,6 +257,8 @@ public class StorageChartTopPanel extends SimpleContainer { }); menuDownload.add(downloadCSVItem); + menuDownload.add(downloadXMLItem); + menuDownload.add(downloadJSONItem); menuDownload.add(downloadPNGItem); menuDownload.add(downloadJPGItem); menuDownload.add(downloadPDFItem); @@ -341,11 +372,24 @@ public class StorageChartTopPanel extends SimpleContainer { } private void onDownloadCSV() { - DownloadCSVRequestEvent event = new DownloadCSVRequestEvent( - accountingStateData.getAccountingType()); + ExportRequestEvent event = new ExportRequestEvent( + ExportType.CSV, accountingStateData.getAccountingType()); eventBus.fireEvent(event); } + private void onDownloadXML() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.XML, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + private void onDownloadJSON() { + ExportRequestEvent event = new ExportRequestEvent( + ExportType.JSON, accountingStateData.getAccountingType()); + eventBus.fireEvent(event); + } + + // chart.options.exporting.buttons.contextButton.menuItems[0].onclick(); public static native void onDownloadPNG(String id) /*-{ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/utils/DownloadConstants.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/utils/DownloadConstants.java index cbc8b9b..5d904d8 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/utils/DownloadConstants.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/utils/DownloadConstants.java @@ -9,6 +9,8 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils; public class DownloadConstants { public static final String DOWNLOAD = "Download"; public static final String DOWNLOAD_CSV = "Download CSV"; + public static final String DOWNLOAD_XML = "Download XML"; + public static final String DOWNLOAD_JSON = "Download JSON"; public static final String DOWNLOAD_PNG = "Download PNG Image"; public static final String DOWNLOAD_JPG = "Download JPG Image"; public static final String DOWNLOAD_PDF = "Download PDF Document"; diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java index 00db6ae..62fa31b 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java @@ -186,6 +186,18 @@ public interface AccountingManagerResources extends ClientBundle { @Source("accounting-file-csv_32.png") ImageResource accountingFileCSV32(); + @Source("accounting-file-xml_24.png") + ImageResource accountingFileXML24(); + + @Source("accounting-file-xml_32.png") + ImageResource accountingFileXML32(); + + @Source("accounting-file-json_24.png") + ImageResource accountingFileJSON24(); + + @Source("accounting-file-json_32.png") + ImageResource accountingFileJSON32(); + @Source("accounting-file-png_24.png") ImageResource accountingFilePNG24(); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-json_24.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-json_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a89db2c75bf21d9c3567454eb97ea1d8a1d00beb GIT binary patch literal 900 zcmV-~1AF|5P)nD_IoAzdJL=I2ZHB$tZ-E6cW((Z8iY~D-A?mv0E&`)+)V~Vrhi*78b$- zE0x9GLP#YjtWmVH5C#)xj7b#MUrHr(O|Jy(_x*ns5JFTHMft^bT?B(cNGTBv22rV05C{aY zxVVULIE-vIi$EZNi;D|5j)UpxX=E}PNGTDE#Sn=^kVqtu$z*VPdJ0|FL9!~gx3~W| zJUslf)oP(!F2gVk*tXsK16|h8pg)PpzAuC%_dY;g_IKY zdL7Tt&oE6BQp(@8TCLW|=krJ;5-8Yas$*%9|`ezoL{*=t0R`mOI aZTTBb9y-NiRi|qJ0000x`QYleL6co#8Y?O(g%spK+b`uJ1MN7)Rxudyr z=Rfy9k9!aN1w^DV21Mjb5$P3?J0en+Kcl=j*Sq*_VCg?T8X__*B4Z*_l7EiU;+o-) zA#98Z5y{BEM@B>v|45A`R~o|r+G4@@0qA07@e}Zs4txQ0 zu=3~tzR-cFh*PoEYMk%@^3IehrA?Ao95Go;~|}E_t3zPEN|PW5;C2 zjvX>EFd*r4T84&(WNKh-$hayjYm@0XsQ9(nlip}c+jRzyVF+uP;j$&-yZxMKi4 z)oPVmtwuZ^$FeLcl?pd*++c2Qj^oFVqm-gntD$KcrBVsQFgSJU6#0CfBS(%9iA0#0 znPFsPg!AXmbMD+ZYPA}U<6xR5mo8o6+O=y`t5w#oUr!(qpkA+I7)FmSA_33ys8lLV znM$P+#bOa%*YP|L%d%*1Z)fMuoz&}fZr!>?p-^D=?%izOyqQEI!Pc!?*|1>)v$M0j zc=3W#sf1DrpU+3BRN~5&E4Z$UrfGPdN3~i72pI44d$n3+`}XZTefpHESFaKdhp{Y+ zy?gg^=+Gg?#>OyBlPz1euy*ZQ+S=M!SXdwui7-AsPClQIql&-EW-n@Ck;NT#cOopRJkCIBIc=qfWnx>ITrHI91 zc%IkXscqXNlS%I1zfZYbUaCOF5RnnT-@mt5ETWVm5{WQBKhOUC``NT<6WMGQ*LCUd z@29J)3#Am%Xq4{mZsPGcFJHc7a&nUH?rsu^1j%F)$8m67myH`Y(%RaJZQJ;KK2oU^ z*=&||>(-%^LPSQi2M-?XzIX55cbQCv*49?eoH;{hXD6=flF#Q+N;TbM+cs;~tid!* z3WWl>T#ibmg0AZ*rLZiESS*I)I8-VX=H})w3D+viUvlf>h3g25ocU=Z83o57^(I)1+&pU;P`>%?L)!r?IWdL0o#*L6(O z#P9dh($a!ynwX~9Tqh#<{eEh-8m4JtSyoxs^*Q7D^XI<|4Gm3|%jM2+IE>>sO_D$$ z(DYYBg~n)_CWc`wOJPmZ{zxxfZ_YQ~8HT~CRjV5QAJ;VPX8>(_ditAUu_y}*3(bJySH;9`UPv%Hr7e~rm!(VBf0&FM#XVk literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_24.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_24.png new file mode 100644 index 0000000000000000000000000000000000000000..556aeffb5fd1e18b51192661ac0a02b0c9e2f79c GIT binary patch literal 904 zcmV;319$w1P)-=p0bOGct0Ti9Q*BiHMiycuwTyP>9(Zh{Yi_6sfb7v*ym&TtW8Wz^d%CB z-!03cwY8N%AOOJB)D&lDXPBl*JRT>P%hA!%fu?CVj>F>OB71v#L?RKcudkV#n?q3) znwpwkC-_tKJnw6Dbv3C}is|WTT-RlCa+2-sZ9<_Cr>Cc^tgK*J7TIhTfMha>Wm&AR zuXA~M$;rtH%gf7TGMRtx;HwIJs;#YMczBq6KF`d|4Ey{0M59q6kqCuC0mCo|27|1w zu43CZYin!x{eCn}!?tZ~+r}^qT-U{Q-PZ{|sj8|H3Oq*5uCmX^4gwtUhr=u^EYQ~0hH085Vv3@aoU-~nn4g~~m&-9SG6Fz69_QiV;U&;CO=7Va zrfD)TFo4hJD@pM9_=s)W6bc0##{r-WNGB4B-i?h7VzC&#y}bki0cK}su`G**h6ZkL zZ&6j1{{DX2+uI3;!|d+vQYaJ<5nR{h{{EiL%}tWYB(Cc+Iy%bu_;^~mxw#q3X0v}B z9Ualr(?flIJy%y(92^`F38WvHr(>$;Sem!s=CilQJQ zIF5tkI8;% literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_32.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-xml_32.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f2a30c8a29bca5b76c7a9607bbc9f16a68981f GIT binary patch literal 1313 zcmV++1>X9JP)f9K5fW2UqiiWuWpl}KXI-2_-RB&1i2NZUYw{u1Hs1AYj1AY$@zoHKK@nLHk)nJ#iW}byehp!zO^C>p z{C`Y|NaBm!s39K|k=OF=@Ves0Cq>kd_lt-p-yWWb^#7ZP!7U=M6|pHUR1J9o_zP%Y zYq0{fE2W+T=o&jlw}G4uj?qm^v0?poV-P@XB#b|SR<;+9fesC{0Ef1k?IV$Y2xu{Z z2FG!%p`jt_>gwq4@8{UDV~7Y!DTaoIFin%*-d=X?+Qrz|7@<&zg9i_C>eQ*~PL`IIn3Z8^YA>c%Cx?|{xJbz4G;_liO1vY-@l)}zCJ9=Vr6B8?(S}SdU}Y*2#V@Dn%xfVSId?bUIBm8YLVK|L5S;09tEo+orLxkz6i^>$(_*!PBQtv2B}ZG>Tyu z)pZO60_@wjkA{W@u3x`SE|(*fN)ZSIzD@vuQi^NWt}#75O(Kz?tE-D_Hp|4s1fJ(@ zvd=IK_U_%wo;`aI5n5VWNG6jQhVj`WS1I*Dp9z#a&kHXvFLU$eO>EnytE&rucs$Od zM~`^;@F8t&ZU3m&npiAGUtb^je4gXSk7HTZCmk?NlV{JK5ekJcO%u=aNG6j2CDZr) z+lFEEUbt|9SFc{t+1W{Rb2Elvpta`W#fzLhdzMR=F5&w=rBaD-M3 z5C{awWHQXp&!e>_kw_4YMtShy0Xui@q`SMDP$*Q*1D@w`@7_ILym-OUqenS>_%JVD zzGQZGmU6j_X`0n-8Vm+GapDA8>)%zOQ25#R{h4>~-i2M)#kOtg>+4ZUvAViSKA%Tx zOKAh(sbpA`wcZ5^vwW#dY24IIT67Wl>*W zUouVeS5+>TEv3|)@B6JHQnkMFR~0+8*4160l)^BKO+h6hc%FxdptY_htV&-kHoko< zBENk1g.panichi@isti.cnr.it * - * Download Folder Servlet + * Export Servlet * */ -public class DownloadCSVServlet extends HttpServlet { +public class ExportServlet extends HttpServlet { private static final long serialVersionUID = -1838255772767180518L; private static Logger logger = LoggerFactory - .getLogger(DownloadCSVServlet.class); + .getLogger(ExportServlet.class); /** * @see HttpServlet#HttpServlet() */ - public DownloadCSVServlet() { + public ExportServlet() { super(); // TODO Auto-generated constructor stub } @@ -62,7 +65,7 @@ public class DownloadCSVServlet extends HttpServlet { private void createResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { - logger.info("DownloadCSVServlet"); + logger.info("ExportServlet"); HttpSession session = request.getSession(); @@ -75,35 +78,61 @@ public class DownloadCSVServlet extends HttpServlet { + session); return; } - logger.debug("DownloadCSVServlet session id: " + session.getId()); + logger.debug("ExportServlet session id: " + session.getId()); ASLSession aslSession = SessionUtil.getASLSession(session); - String accountingType = request.getParameter(Constants.DOWNLOAD_CVS_SERVLET_ACCOUNTINGTYPE_PARAMETER); - logger.debug("Request: [accountingType=" + accountingType + "]"); + String exportType = request.getParameter(Constants.EXPORT_SERVLET_TYPE_PARAMETER); + String accountingType = request.getParameter(Constants.EXPORT_SERVLET_ACCOUNTING_TYPE_PARAMETER); + + + logger.debug("Request: [exportType="+exportType+", accountingType=" + accountingType + "]"); AccountingStateData accountingStateData=SessionUtil.getAccountingStateData(session, AccountingType.valueOf(accountingType)); if(accountingStateData==null){ - logger.error("No series present in session for thi accounting type: "+accountingType); - throw new ServletException("No series present in session for thi accounting type: "+accountingType); + logger.error("No series present in session for this accounting type: "+accountingType); + throw new ServletException("No series present in session for this accounting type: "+accountingType); } - CSVManager csvManager=new CSVManager(aslSession.getUsername()); - CSVDescriptor csvDescriptor=csvManager.downloadCSV(accountingStateData); - logger.debug("CSVDescriptor: "+csvDescriptor); + ExportType exportT=ExportType.valueOf(exportType); + if(exportT==null){ + logger.error("Invalid Export Type Request: "+exportType); + throw new ServletException("Invalid Export Type Request: "+exportType); + } + + ExportDescriptor exportDescriptor=null; + switch(exportT){ + case CSV: + CSVManager csvManager=new CSVManager(aslSession.getUsername()); + exportDescriptor=csvManager.download(accountingStateData); + response.setContentType("text/csv"); + break; + case JSON: + JSONManager jsonManager=new JSONManager(aslSession.getUsername()); + exportDescriptor=jsonManager.download(accountingStateData); + response.setContentType("application/json"); + break; + case XML: + XMLManager xmlManager=new XMLManager(aslSession.getUsername()); + exportDescriptor=xmlManager.download(accountingStateData); + response.setContentType("text/xml"); + break; + default: + logger.error("Export Type not supported: "+exportType); + throw new ServletException("Export Type not supported: "+exportType); + } + logger.debug("ExportDescriptor: "+exportDescriptor); response.setHeader("Content-Disposition", "attachment; filename=\"" - + csvDescriptor.getCsvModel().getFileName()+csvDescriptor.getCsvModel().getFileExtension() + "\""); - response.setContentType("text/csv"); + + exportDescriptor.getCsvModel().getName()+exportDescriptor.getFileExtension() + "\""); response.setHeader("Content-Length", - String.valueOf(csvDescriptor.getPath().toFile().length())); - + String.valueOf(exportDescriptor.getPath().toFile().length())); OutputStream out = response.getOutputStream(); - Files.copy(csvDescriptor.getPath(), out); + Files.copy(exportDescriptor.getPath(), out); out.flush(); out.close(); try { - Files.delete(csvDescriptor.getPath()); + Files.delete(exportDescriptor.getPath()); } catch (IOException e) { logger.error("Error in deleting temp file: " + e.getLocalizedMessage()); @@ -115,7 +144,7 @@ public class DownloadCSVServlet extends HttpServlet { return; } catch (Throwable e) { - logger.error("Error in DownloadFolderServlet: " + logger.error("Error in ExportServlet: " + e.getLocalizedMessage()); e.printStackTrace(); throw new ServletException("Error:" diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel.java deleted file mode 100644 index 5e92419..0000000 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; - -import java.io.Serializable; -import java.util.ArrayList; - -/** - * - * @author giancarlo email: g.panichi@isti.cnr.it - * - */ -public class CSVModel implements Serializable { - - private static final long serialVersionUID = 7127656837246518599L; - private String fileName; - private String fileExtension; - private ArrayList header; - private ArrayList rows; - - public CSVModel() { - super(); - } - - public CSVModel(String fileName, ArrayList header, - ArrayList rows) { - super(); - this.fileName = fileName; - this.fileExtension =".csv"; - this.header = header; - this.rows = rows; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public String getFileExtension() { - return fileExtension; - } - - public void setFileExtension(String fileExtension) { - this.fileExtension = fileExtension; - } - - public ArrayList getHeader() { - return header; - } - - public void setHeader(ArrayList header) { - this.header = header; - } - - public ArrayList getRows() { - return rows; - } - - public void setRows(ArrayList rows) { - this.rows = rows; - } - - @Override - public String toString() { - return "CSVModel [fileName=" + fileName + ", fileExtension=" - + fileExtension + ", header=" + header + ", rows=" + rows + "]"; - } - - -} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelDirector.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelDirector.java deleted file mode 100644 index e3261d1..0000000 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelDirector.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; - -import java.util.ArrayList; - -import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; - - -/** - * CSV Model Director - * - * @author "Giancarlo Panichi" - * email: g.panichi@isti.cnr.it - * - */ -public class CSVModelDirector { - CSVModelBuilder csvModelBuilder; - - public void setCSVModelBuilder( - CSVModelBuilder csvModelBuilder) { - this.csvModelBuilder = csvModelBuilder; - } - - public CSVModel getCSVModel() { - return csvModelBuilder.getCSVModelSpec().getOp(); - - } - - public ArrayList getListOfCSVModel() { - return csvModelBuilder.getCSVModelSpec().getOps(); - - } - - public void constructCSVModel() throws ServiceException { - csvModelBuilder.createSpec(); - csvModelBuilder.buildOpEx(); - - } -} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelSpec.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelSpec.java deleted file mode 100644 index d012254..0000000 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelSpec.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; - -import java.util.ArrayList; - -/** - * CSV Model Specification - * - * @author "Giancarlo Panichi" - * email: g.panichi@isti.cnr.it - * - */ -public class CSVModelSpec { - private CSVModel op; - private ArrayList ops; - - public CSVModel getOp() { - return op; - } - - public void setOp(CSVModel op) { - this.op = op; - } - - public ArrayList getOps() { - return ops; - } - - public void setOps(ArrayList ops) { - this.ops = ops; - } - -} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/CSVManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java similarity index 57% rename from src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/CSVManager.java rename to src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java index d82379c..f0eb799 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/CSVManager.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv; +package org.gcube.portlets.admin.accountingmanager.server.export; import java.io.IOException; import java.io.InputStream; @@ -9,16 +9,16 @@ import java.nio.file.StandardOpenOption; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVDataRow; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModel; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModel4Service; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModel4Storage; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModelBuilder; -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModelDirector; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataRow; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelDirector; import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData; import org.gcube.portlets.admin.accountingmanager.server.storage.StorageUtil; -import org.gcube.portlets.admin.accountingmanager.shared.csv.CSVDescriptor; import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportDescriptor; import org.gcube.portlets.admin.accountingmanager.shared.workspace.ItemDescription; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory; */ public class CSVManager { + private static final String FILE_EXTENSION = ".csv"; private static Logger logger = LoggerFactory.getLogger(CSVManager.class); private String userName; @@ -51,14 +52,14 @@ public class CSVManager { throw new ServiceException("Accounting Type is null!"); } - CSVModelBuilder csvModelBuilder = null; + AccountingModelBuilder accountingModelBuilder = null; switch (accountingStateData.getAccountingType()) { case SERVICE: - csvModelBuilder = new CSVModel4Service(accountingStateData); + accountingModelBuilder = new AccountingModel4Service(accountingStateData); break; case STORAGE: - csvModelBuilder = new CSVModel4Storage(accountingStateData); + accountingModelBuilder = new AccountingModel4Storage(accountingStateData); break; case JOB: case PORTLET: @@ -68,19 +69,19 @@ public class CSVManager { throw new ServiceException("Accounting Type not supported!!"); } - CSVModelDirector director = new CSVModelDirector(); - director.setCSVModelBuilder(csvModelBuilder); - director.constructCSVModel(); - CSVModel csvModel = director.getCSVModel(); - logger.debug("CSVModel: " + csvModel); + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountingModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director.getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); - if (csvModel == null) { - logger.error("CSV model created is null"); - throw new ServiceException("CSVModel created is null!"); + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException("Accounting data model created is null!"); } - Path tempFile = Files.createTempFile(csvModel.getFileName(), - csvModel.getFileExtension()); + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); logger.debug("Temp File: " + tempFile.toString()); // Create the CSVFormat object @@ -90,8 +91,8 @@ public class CSVManager { PrintStream printStream = new PrintStream(tempFile.toFile()); // CSV Write Example using CSVPrinter CSVPrinter printer = new CSVPrinter(printStream, format); - printer.printRecord(csvModel.getHeader()); - for (CSVDataRow row : csvModel.getRows()) { + printer.printRecord(accountingDataModel.getHeader()); + for (AccountingDataRow row : accountingDataModel.getRows()) { printer.printRecord(row.getData()); } // close the printer @@ -104,8 +105,8 @@ public class CSVManager { try (InputStream is = Files.newInputStream(tempFile, StandardOpenOption.READ)) { itemDescription=StorageUtil.saveOnWorkspace(userName, destinationFolderId, - csvModel.getFileName() + csvModel.getFileExtension(), - csvModel.getFileName(), is); + accountingDataModel.getName() + FILE_EXTENSION, + accountingDataModel.getName(), is); } try { @@ -123,9 +124,9 @@ public class CSVManager { } catch (ServiceException e) { throw e; } catch (Throwable e) { - logger.error("Error saving data: " + e.getLocalizedMessage()); + logger.error("Error saving csv data: " + e.getLocalizedMessage()); e.printStackTrace(); - throw new ServiceException("Error saving data: " + throw new ServiceException("Error saving csv data: " + e.getLocalizedMessage()); } @@ -133,7 +134,7 @@ public class CSVManager { } - public CSVDescriptor downloadCSV(AccountingStateData accountingStateData) throws ServiceException { + public ExportDescriptor download(AccountingStateData accountingStateData) throws ServiceException { try { logger.debug("AccountingStateData: "+accountingStateData); if (accountingStateData == null) { @@ -146,14 +147,14 @@ public class CSVManager { throw new ServiceException("Accounting Type is null!"); } - CSVModelBuilder csvModelBuilder = null; + AccountingModelBuilder accountindModelBuilder = null; switch (accountingStateData.getAccountingType()) { case SERVICE: - csvModelBuilder = new CSVModel4Service(accountingStateData); + accountindModelBuilder = new AccountingModel4Service(accountingStateData); break; case STORAGE: - csvModelBuilder = new CSVModel4Storage(accountingStateData); + accountindModelBuilder = new AccountingModel4Storage(accountingStateData); break; case JOB: case PORTLET: @@ -163,20 +164,20 @@ public class CSVManager { throw new ServiceException("Accounting Type not supported!!"); } - logger.debug("CSVModelBuilder: "+csvModelBuilder); - CSVModelDirector director = new CSVModelDirector(); - director.setCSVModelBuilder(csvModelBuilder); - director.constructCSVModel(); - CSVModel csvModel = director.getCSVModel(); - logger.debug("CSVModel: " + csvModel); + logger.debug("AccountingModelBuilder: "+accountindModelBuilder); + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountindModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director.getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); - if (csvModel == null) { - logger.error("CSV model created is null"); - throw new ServiceException("CSVModel created is null!"); + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException("Accounting data model created is null!"); } - Path tempFile = Files.createTempFile(csvModel.getFileName(), - csvModel.getFileExtension()); + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); logger.debug("Temp File: " + tempFile.toString()); // Create the CSVFormat object @@ -186,8 +187,8 @@ public class CSVManager { PrintStream printStream = new PrintStream(tempFile.toFile()); // CSV Write Example using CSVPrinter CSVPrinter printer = new CSVPrinter(printStream, format); - printer.printRecord(csvModel.getHeader()); - for (CSVDataRow row : csvModel.getRows()) { + printer.printRecord(accountingDataModel.getHeader()); + for (AccountingDataRow row : accountingDataModel.getRows()) { printer.printRecord(row.getData()); } // close the printer @@ -195,14 +196,14 @@ public class CSVManager { printStream.close(); - return new CSVDescriptor(tempFile, csvModel); + return new ExportDescriptor(tempFile, accountingDataModel, FILE_EXTENSION); } catch (ServiceException e) { throw e; } catch (Throwable e) { - logger.error("Error downloading data: " + e.getLocalizedMessage()); + logger.error("Error downloading csv data: " + e.getLocalizedMessage()); e.printStackTrace(); - throw new ServiceException("Error downloading data: " + throw new ServiceException("Error downloading csv data: " + e.getLocalizedMessage()); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java new file mode 100644 index 0000000..d0d72d4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java @@ -0,0 +1,241 @@ +package org.gcube.portlets.admin.accountingmanager.server.export; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataRow; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelDirector; +import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData; +import org.gcube.portlets.admin.accountingmanager.server.storage.StorageUtil; +import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportDescriptor; +import org.gcube.portlets.admin.accountingmanager.shared.workspace.ItemDescription; +import org.json.JSONArray; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JSON Manager + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class JSONManager { + + private static final String FILE_EXTENSION = ".json"; + private static Logger logger = LoggerFactory.getLogger(JSONManager.class); + private String userName; + + public JSONManager(String userName) { + this.userName = userName; + } + + public ItemDescription saveOnWorkspace( + AccountingStateData accountingStateData) throws ServiceException { + try { + if (accountingStateData == null) { + logger.error("AccountingStateData is null"); + throw new ServiceException("AccountingStateData is null!"); + } + + if (accountingStateData.getAccountingType() == null) { + logger.error("Accounting Type is null"); + throw new ServiceException("Accounting Type is null!"); + } + + AccountingModelBuilder accountingModelBuilder = null; + + switch (accountingStateData.getAccountingType()) { + case SERVICE: + accountingModelBuilder = new AccountingModel4Service( + accountingStateData); + break; + case STORAGE: + accountingModelBuilder = new AccountingModel4Storage( + accountingStateData); + break; + case JOB: + case PORTLET: + case TASK: + default: + logger.error("Accounting Type not supported!"); + throw new ServiceException("Accounting Type not supported!!"); + } + + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountingModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director + .getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); + + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException( + "Accounting data model created is null!"); + } + + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); + logger.debug("Temp File: " + tempFile.toString()); + + JSONObject jsonObj = new JSONObject(); + jsonObj.put("name", accountingDataModel.getName()); + JSONArray headerJSON = new JSONArray( + accountingDataModel.getHeader()); + jsonObj.put("header", headerJSON); + JSONArray rowsJSON = new JSONArray(); + for (AccountingDataRow accountingDataRow : accountingDataModel + .getRows()) { + JSONArray accountingDataRowJSON = new JSONArray( + accountingDataRow.getData()); + JSONObject rowJSON=new JSONObject(); + rowJSON.put("data", accountingDataRowJSON); + rowsJSON.put(rowJSON); + } + jsonObj.put("rows", rowsJSON); + + logger.debug("JSONOBJ: "+jsonObj); + + try (BufferedWriter bw = Files.newBufferedWriter(tempFile, + Charset.defaultCharset(), StandardOpenOption.WRITE)) { + jsonObj.write(bw); + } + + String destinationFolderId = StorageUtil + .createAccountingFolderOnWorkspace(userName); + ItemDescription itemDescription = null; + try (InputStream is = Files.newInputStream(tempFile, + StandardOpenOption.READ)) { + itemDescription = StorageUtil.saveOnWorkspace(userName, + destinationFolderId, accountingDataModel.getName() + + FILE_EXTENSION, + accountingDataModel.getName(), is); + } + + try { + Files.delete(tempFile); + } catch (IOException e) { + logger.error("Error in deleting temp file: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error deleting temp file: " + + e.getLocalizedMessage(), e); + } + + return itemDescription; + + } catch (ServiceException e) { + throw e; + } catch (Throwable e) { + logger.error("Error saving xml data: " + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error saving xml data: " + + e.getLocalizedMessage()); + + } + + } + + public ExportDescriptor download(AccountingStateData accountingStateData) + throws ServiceException { + try { + logger.debug("AccountingStateData: " + accountingStateData); + if (accountingStateData == null) { + logger.error("AccountingStateData is null"); + throw new ServiceException("AccountingStateData is null!"); + } + + if (accountingStateData.getAccountingType() == null) { + logger.error("Accounting Type is null"); + throw new ServiceException("Accounting Type is null!"); + } + + AccountingModelBuilder accountingModelBuilder = null; + + switch (accountingStateData.getAccountingType()) { + case SERVICE: + accountingModelBuilder = new AccountingModel4Service( + accountingStateData); + break; + case STORAGE: + accountingModelBuilder = new AccountingModel4Storage( + accountingStateData); + break; + case JOB: + case PORTLET: + case TASK: + default: + logger.error("Accounting Type not supported!"); + throw new ServiceException("Accounting Type not supported!!"); + } + + logger.debug("AccountingModelBuilder: " + accountingModelBuilder); + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountingModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director + .getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); + + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException( + "Accounting data model created is null!"); + } + + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); + logger.debug("Temp File: " + tempFile.toString()); + + JSONObject jsonObj = new JSONObject(); + jsonObj.put("name", accountingDataModel.getName()); + JSONArray headerJSON = new JSONArray( + accountingDataModel.getHeader()); + jsonObj.put("header", headerJSON); + JSONArray rowsJSON = new JSONArray(); + for (AccountingDataRow accountingDataRow : accountingDataModel + .getRows()) { + JSONArray accountingDataRowJSON = new JSONArray( + accountingDataRow.getData()); + JSONObject rowJSON=new JSONObject(); + rowJSON.put("data", accountingDataRowJSON); + rowsJSON.put(rowJSON); + } + jsonObj.put("rows", rowsJSON); + + logger.debug("JSONOBJ: "+jsonObj); + + try (BufferedWriter bw = Files.newBufferedWriter(tempFile, + Charset.defaultCharset(), StandardOpenOption.WRITE)) { + jsonObj.write(bw); + } + + return new ExportDescriptor(tempFile, accountingDataModel, + FILE_EXTENSION); + + } catch (ServiceException e) { + throw e; + } catch (Throwable e) { + logger.error("Error downloading xml data: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error downloading xml data: " + + e.getLocalizedMessage()); + + } + + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java new file mode 100644 index 0000000..943db60 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java @@ -0,0 +1,208 @@ +package org.gcube.portlets.admin.accountingmanager.server.export; + +import java.beans.XMLEncoder; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; + +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelDirector; +import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData; +import org.gcube.portlets.admin.accountingmanager.server.storage.StorageUtil; +import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; +import org.gcube.portlets.admin.accountingmanager.shared.export.ExportDescriptor; +import org.gcube.portlets.admin.accountingmanager.shared.workspace.ItemDescription; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * XML Manager + * + * @author Giancarlo Panichi email: g.panichi@isti.cnr.it + * + */ +public class XMLManager { + + private static final String FILE_EXTENSION = ".xml"; + private static Logger logger = LoggerFactory.getLogger(XMLManager.class); + private String userName; + + public XMLManager(String userName) { + this.userName = userName; + } + + public ItemDescription saveOnWorkspace( + AccountingStateData accountingStateData) throws ServiceException { + try { + if (accountingStateData == null) { + logger.error("AccountingStateData is null"); + throw new ServiceException("AccountingStateData is null!"); + } + + if (accountingStateData.getAccountingType() == null) { + logger.error("Accounting Type is null"); + throw new ServiceException("Accounting Type is null!"); + } + + AccountingModelBuilder accountingModelBuilder = null; + + switch (accountingStateData.getAccountingType()) { + case SERVICE: + accountingModelBuilder = new AccountingModel4Service( + accountingStateData); + break; + case STORAGE: + accountingModelBuilder = new AccountingModel4Storage( + accountingStateData); + break; + case JOB: + case PORTLET: + case TASK: + default: + logger.error("Accounting Type not supported!"); + throw new ServiceException("Accounting Type not supported!!"); + } + + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountingModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director + .getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); + + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException( + "Accounting data model created is null!"); + } + + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); + logger.debug("Temp File: " + tempFile.toString()); + + try (OutputStream os = Files.newOutputStream(tempFile, + StandardOpenOption.WRITE)) { + XMLEncoder xmlEncoder = new XMLEncoder(os); + xmlEncoder.writeObject(accountingDataModel); + xmlEncoder.close(); + logger.debug("Archived:" + os); + } + + + String destinationFolderId = StorageUtil + .createAccountingFolderOnWorkspace(userName); + ItemDescription itemDescription = null; + try (InputStream is = Files.newInputStream(tempFile, + StandardOpenOption.READ)) { + itemDescription = StorageUtil.saveOnWorkspace(userName, + destinationFolderId, accountingDataModel.getName() + + FILE_EXTENSION, + accountingDataModel.getName(), is); + } + + try { + Files.delete(tempFile); + } catch (IOException e) { + logger.error("Error in deleting temp file: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error deleting temp file: " + + e.getLocalizedMessage(), e); + } + + return itemDescription; + + } catch (ServiceException e) { + throw e; + } catch (Throwable e) { + logger.error("Error saving xml data: " + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error saving xml data: " + + e.getLocalizedMessage()); + + } + + } + + public ExportDescriptor download(AccountingStateData accountingStateData) + throws ServiceException { + try { + logger.debug("AccountingStateData: " + accountingStateData); + if (accountingStateData == null) { + logger.error("AccountingStateData is null"); + throw new ServiceException("AccountingStateData is null!"); + } + + if (accountingStateData.getAccountingType() == null) { + logger.error("Accounting Type is null"); + throw new ServiceException("Accounting Type is null!"); + } + + AccountingModelBuilder accountingModelBuilder = null; + + switch (accountingStateData.getAccountingType()) { + case SERVICE: + accountingModelBuilder = new AccountingModel4Service( + accountingStateData); + break; + case STORAGE: + accountingModelBuilder = new AccountingModel4Storage( + accountingStateData); + break; + case JOB: + case PORTLET: + case TASK: + default: + logger.error("Accounting Type not supported!"); + throw new ServiceException("Accounting Type not supported!!"); + } + + logger.debug("AccountingModelBuilder: " + accountingModelBuilder); + AccountingModelDirector director = new AccountingModelDirector(); + director.setAccountingModelBuilder(accountingModelBuilder); + director.constructAccountingModel(); + AccountingDataModel accountingDataModel = director + .getAccountingModel(); + logger.debug("AccountingDataModel: " + accountingDataModel); + + if (accountingDataModel == null) { + logger.error("Accounting data model created is null"); + throw new ServiceException( + "Accounting data model created is null!"); + } + + Path tempFile = Files.createTempFile(accountingDataModel.getName(), + FILE_EXTENSION); + logger.debug("Temp File: " + tempFile.toString()); + + try (OutputStream os = Files.newOutputStream(tempFile, + StandardOpenOption.WRITE)) { + XMLEncoder xmlEncoder = new XMLEncoder(os); + xmlEncoder.writeObject(accountingDataModel); + xmlEncoder.close(); + logger.debug("Archived:" + os); + } + + return new ExportDescriptor(tempFile, accountingDataModel, + FILE_EXTENSION); + + } catch (ServiceException e) { + throw e; + } catch (Throwable e) { + logger.error("Error downloading xml data: " + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServiceException("Error downloading xml data: " + + e.getLocalizedMessage()); + + } + + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataModel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataModel.java new file mode 100644 index 0000000..febf0d9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataModel.java @@ -0,0 +1,64 @@ +package org.gcube.portlets.admin.accountingmanager.server.export.model; + +import java.io.Serializable; +import java.util.ArrayList; + +/** + * Accounting Data Model + * + * @author giancarlo email: g.panichi@isti.cnr.it + * + */ +public class AccountingDataModel implements Serializable { + + private static final long serialVersionUID = 7127656837246518599L; + private String name; + private ArrayList header; + private ArrayList rows; + + public AccountingDataModel() { + super(); + } + + public AccountingDataModel(String name, ArrayList header, + ArrayList rows) { + super(); + this.name = name; + this.header = header; + this.rows = rows; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getHeader() { + return header; + } + + public void setHeader(ArrayList header) { + this.header = header; + } + + public ArrayList getRows() { + return rows; + } + + public void setRows(ArrayList rows) { + this.rows = rows; + } + + @Override + public String toString() { + return "AccountingDataModel [name=" + name + ", header=" + header + + ", rows=" + rows + "]"; + } + + + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVDataRow.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataRow.java similarity index 64% rename from src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVDataRow.java rename to src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataRow.java index 68dc2c5..9841f2f 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVDataRow.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingDataRow.java @@ -1,25 +1,25 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; +package org.gcube.portlets.admin.accountingmanager.server.export.model; import java.io.Serializable; import java.util.ArrayList; /** - * Row of csv + * Accounting data row * * @author Giancarlo Panichi email: g.panichi@isti.cnr.it * */ -public class CSVDataRow implements Serializable { +public class AccountingDataRow implements Serializable { private static final long serialVersionUID = -707694572028800959L; private ArrayList data; - public CSVDataRow() { + public AccountingDataRow() { super(); } - public CSVDataRow(ArrayList data) { + public AccountingDataRow(ArrayList data) { super(); this.data = data; } @@ -34,7 +34,9 @@ public class CSVDataRow implements Serializable { @Override public String toString() { - return "CSVDataRow [data=" + data + "]"; + return "AccountingDataRow [data=" + data + "]"; } + + } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Service.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Service.java similarity index 89% rename from src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Service.java rename to src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Service.java index 815b2d0..2bb370c 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Service.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Service.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; +package org.gcube.portlets.admin.accountingmanager.server.export.model; import java.text.ParseException; import java.util.ArrayList; @@ -19,18 +19,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * CSV Model 4 Service + * Accounting Model 4 Service * * @author "Giancarlo Panichi" email: g.panichi@isti.cnr.it * */ -public class CSVModel4Service extends CSVModelBuilder { +public class AccountingModel4Service extends AccountingModelBuilder { protected static Logger logger = LoggerFactory - .getLogger(CSVModel4Service.class); + .getLogger(AccountingModel4Service.class); private AccountingStateData accountingStateData; - public CSVModel4Service(AccountingStateData accountingStateData) { + public AccountingModel4Service(AccountingStateData accountingStateData) { this.accountingStateData = accountingStateData; } @@ -73,7 +73,7 @@ public class CSVModel4Service extends CSVModelBuilder { String fileName = "Untitled"; ArrayList header; - ArrayList rows = new ArrayList<>(); + ArrayList rows = new ArrayList<>(); if (seriesResponse instanceof SeriesService) { SeriesService seriesService = (SeriesService) seriesResponse; SeriesServiceDefinition definition = seriesService @@ -94,7 +94,7 @@ public class CSVModel4Service extends CSVModelBuilder { data.add(String.valueOf(seriesData.getDuration())); data.add(String.valueOf(seriesData.getMaxInvocationTime())); data.add(String.valueOf(seriesData.getMinInvocationTime())); - CSVDataRow csvDataRow = new CSVDataRow(data); + AccountingDataRow csvDataRow = new AccountingDataRow(data); rows.add(csvDataRow); } } else { @@ -123,7 +123,7 @@ public class CSVModel4Service extends CSVModelBuilder { .getMaxInvocationTime())); data.add(String.valueOf(seriesData .getMinInvocationTime())); - CSVDataRow csvDataRow = new CSVDataRow(data); + AccountingDataRow csvDataRow = new AccountingDataRow(data); rows.add(csvDataRow); } } @@ -143,8 +143,8 @@ public class CSVModel4Service extends CSVModelBuilder { + seriesResponse); } - CSVModel invocation = new CSVModel(fileName, header, rows); - csvModelSpec.setOp(invocation); + AccountingDataModel invocation = new AccountingDataModel(fileName, header, rows); + accountingModelSpec.setOp(invocation); } } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Storage.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Storage.java similarity index 88% rename from src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Storage.java rename to src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Storage.java index 154c517..bb73087 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModel4Storage.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Storage.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; +package org.gcube.portlets.admin.accountingmanager.server.export.model; import java.text.ParseException; import java.util.ArrayList; @@ -19,18 +19,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * CSV Model 4 Storage + * Accounting Model 4 Storage * * @author "Giancarlo Panichi" email: g.panichi@isti.cnr.it * */ -public class CSVModel4Storage extends CSVModelBuilder { +public class AccountingModel4Storage extends AccountingModelBuilder { protected static Logger logger = LoggerFactory - .getLogger(CSVModel4Storage.class); + .getLogger(AccountingModel4Storage.class); private AccountingStateData accountingStateData; - public CSVModel4Storage(AccountingStateData accountingStateData) { + public AccountingModel4Storage(AccountingStateData accountingStateData) { this.accountingStateData = accountingStateData; } @@ -74,7 +74,7 @@ public class CSVModel4Storage extends CSVModelBuilder { String fileName = "Untitled"; ArrayList header; - ArrayList rows = new ArrayList<>(); + ArrayList rows = new ArrayList<>(); if (seriesResponse instanceof SeriesStorage) { SeriesStorage seriesStorage = (SeriesStorage) seriesResponse; SeriesStorageDefinition definition = seriesStorage @@ -92,7 +92,7 @@ public class CSVModel4Storage extends CSVModelBuilder { data.add(sdfCSVDate.format(seriesData.getDate())); data.add(String.valueOf(seriesData.getOperationCount())); data.add(String.valueOf(seriesData.getDataVolume())); - CSVDataRow csvDataRow = new CSVDataRow(data); + AccountingDataRow csvDataRow = new AccountingDataRow(data); rows.add(csvDataRow); } } else { @@ -116,7 +116,7 @@ public class CSVModel4Storage extends CSVModelBuilder { data.add(sdfCSVDate.format(seriesData.getDate())); data.add(String.valueOf(seriesData.getOperationCount())); data.add(String.valueOf(seriesData.getDataVolume())); - CSVDataRow csvDataRow = new CSVDataRow(data); + AccountingDataRow csvDataRow = new AccountingDataRow(data); rows.add(csvDataRow); } } @@ -136,8 +136,8 @@ public class CSVModel4Storage extends CSVModelBuilder { + seriesResponse); } - CSVModel invocation = new CSVModel(fileName,header, rows); - csvModelSpec.setOp(invocation); + AccountingDataModel invocation = new AccountingDataModel(fileName,header, rows); + accountingModelSpec.setOp(invocation); } } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelBuilder.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelBuilder.java similarity index 62% rename from src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelBuilder.java rename to src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelBuilder.java index f71ac8d..5b536fc 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/file/CSVModelBuilder.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelBuilder.java @@ -1,28 +1,28 @@ -package org.gcube.portlets.admin.accountingmanager.server.csv.file; +package org.gcube.portlets.admin.accountingmanager.server.export.model; import java.text.SimpleDateFormat; import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; /** - * Abstract class for build CSV Model + * Abstract class for build Accounting Model * * @author "Giancarlo Panichi" * email: g.panichi@isti.cnr.it * */ -public abstract class CSVModelBuilder { - protected CSVModelSpec csvModelSpec; +public abstract class AccountingModelBuilder { + protected AccountingModelSpec accountingModelSpec; protected SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd"); protected SimpleDateFormat sdfCSVDate = new SimpleDateFormat("yyyy/MM/dd HH:mm"); protected SimpleDateFormat sdfFile = new SimpleDateFormat("yyyyMMdd"); - public CSVModelSpec getCSVModelSpec(){ - return csvModelSpec; + public AccountingModelSpec getAccountingModelSpec(){ + return accountingModelSpec; } public void createSpec(){ - csvModelSpec=new CSVModelSpec(); + accountingModelSpec=new AccountingModelSpec(); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelDirector.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelDirector.java new file mode 100644 index 0000000..faf28d7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelDirector.java @@ -0,0 +1,38 @@ +package org.gcube.portlets.admin.accountingmanager.server.export.model; + +import java.util.ArrayList; + +import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; + + +/** + * Accounting Model Director + * + * @author "Giancarlo Panichi" + * email: g.panichi@isti.cnr.it + * + */ +public class AccountingModelDirector { + AccountingModelBuilder accountingModelBuilder; + + public void setAccountingModelBuilder( + AccountingModelBuilder accountingModelBuilder) { + this.accountingModelBuilder = accountingModelBuilder; + } + + public AccountingDataModel getAccountingModel() { + return accountingModelBuilder.getAccountingModelSpec().getOp(); + + } + + public ArrayList getListOfAccountingModel() { + return accountingModelBuilder.getAccountingModelSpec().getOps(); + + } + + public void constructAccountingModel() throws ServiceException { + accountingModelBuilder.createSpec(); + accountingModelBuilder.buildOpEx(); + + } +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelSpec.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelSpec.java new file mode 100644 index 0000000..7e2f969 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModelSpec.java @@ -0,0 +1,32 @@ +package org.gcube.portlets.admin.accountingmanager.server.export.model; + +import java.util.ArrayList; + +/** + * CSV Model Specification + * + * @author "Giancarlo Panichi" + * email: g.panichi@isti.cnr.it + * + */ +public class AccountingModelSpec { + private AccountingDataModel op; + private ArrayList ops; + + public AccountingDataModel getOp() { + return op; + } + + public void setOp(AccountingDataModel op) { + this.op = op; + } + + public ArrayList getOps() { + return ops; + } + + public void setOps(ArrayList ops) { + this.ops = ops; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java index 569c398..ebf9e31 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/Constants.java @@ -23,8 +23,9 @@ public class Constants { public static final String DEFAULT_SCOPE = "/gcube"; public static final String DEFAULT_ROLE = "OrganizationMember"; - public static final String DOWNLOAD_CVS_SERVLET="downloadCSVServlet"; - public static final String DOWNLOAD_CVS_SERVLET_ACCOUNTINGTYPE_PARAMETER = "AccountingType"; + public static final String EXPORT_SERVLET="ExportServlet"; + public static final String EXPORT_SERVLET_TYPE_PARAMETER="ExportServletType"; + public static final String EXPORT_SERVLET_ACCOUNTING_TYPE_PARAMETER = "AccountingType"; public static final String SESSION_ACCOUNTING_STATE = "ACCOUNTING_STATE"; diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/csv/CSVDescriptor.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/csv/CSVDescriptor.java deleted file mode 100644 index 4d1cb31..0000000 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/csv/CSVDescriptor.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.gcube.portlets.admin.accountingmanager.shared.csv; - -import java.io.Serializable; -import java.nio.file.Path; - -import org.gcube.portlets.admin.accountingmanager.server.csv.file.CSVModel; - -/** - * - * @author Giancarlo Panichi - * email: g.panichi@isti.cnr.it - * - */ -public class CSVDescriptor implements Serializable { - private static final long serialVersionUID = 4778932733041422948L; - private Path path; - private CSVModel csvModel; - - public CSVDescriptor() { - super(); - } - - public CSVDescriptor(Path path, CSVModel csvModel) { - super(); - this.path = path; - this.csvModel = csvModel; - } - - public Path getPath() { - return path; - } - - public void setPath(Path path) { - this.path = path; - } - - public CSVModel getCsvModel() { - return csvModel; - } - - public void setCsvModel(CSVModel csvModel) { - this.csvModel = csvModel; - } - - @Override - public String toString() { - return "CSVDescriptor [path=" + path + ", csvModel=" + csvModel + "]"; - } - - - -} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportDescriptor.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportDescriptor.java new file mode 100644 index 0000000..0655164 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportDescriptor.java @@ -0,0 +1,68 @@ +package org.gcube.portlets.admin.accountingmanager.shared.export; + +import java.io.Serializable; +import java.nio.file.Path; + +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; + +/** + * + * @author Giancarlo Panichi + * email: g.panichi@isti.cnr.it + * + */ +public class ExportDescriptor implements Serializable { + private static final long serialVersionUID = 4778932733041422948L; + private Path path; + private AccountingDataModel csvModel; + private String fileExtension; + + public ExportDescriptor() { + super(); + } + + public ExportDescriptor(Path path, AccountingDataModel csvModel, String fileExtension) { + super(); + this.path = path; + this.csvModel = csvModel; + this.fileExtension=fileExtension; + + } + + public Path getPath() { + return path; + } + + public void setPath(Path path) { + this.path = path; + } + + public AccountingDataModel getCsvModel() { + return csvModel; + } + + public void setCsvModel(AccountingDataModel csvModel) { + this.csvModel = csvModel; + } + + public String getFileExtension() { + return fileExtension; + } + + public void setFileExtension(String fileExtension) { + this.fileExtension = fileExtension; + } + + @Override + public String toString() { + return "ExportDescriptor [path=" + path + ", csvModel=" + csvModel + + ", fileExtension=" + fileExtension + "]"; + } + + + + + + + +} diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportType.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportType.java new file mode 100644 index 0000000..9c47427 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/export/ExportType.java @@ -0,0 +1,17 @@ +/** + * + */ +package org.gcube.portlets.admin.accountingmanager.shared.export; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public enum ExportType { + CSV, + JSON, + XML; + +} diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml b/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml index 3cec52e..b82aa48 100644 --- a/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml +++ b/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml @@ -25,7 +25,7 @@ + /> --> @@ -48,19 +48,18 @@ name="locale" values="es" /> --> - + - + - + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index c3a35bb..7578461 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -30,10 +30,10 @@ org.gcube.portlets.admin.accountingmanager.server.AccountingManagerServiceImpl - + - DownloadCSVServlet - org.gcube.portlets.admin.accountingmanager.server.DownloadCSVServlet + ExportServlet + org.gcube.portlets.admin.accountingmanager.server.ExportServlet @@ -61,10 +61,10 @@ /accountingman/ams - + - DownloadCSVServlet - /accountingman/downloadCSVServlet + ExportServlet + /accountingman/ExportServlet