diff --git a/.classpath b/.classpath
index a9540ac..843009d 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -45,5 +45,5 @@
-
+
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 1a07e40..f478c8b 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -4,7 +4,7 @@
-
+
diff --git a/distro/changelog.xml b/distro/changelog.xml
index ffcf8b7..5f1413f 100644
--- a/distro/changelog.xml
+++ b/distro/changelog.xml
@@ -1,4 +1,8 @@
+
+ Added CSV download [Ticket #4041]
+
Added Top N Chart[Ticket #2251]
diff --git a/pom.xml b/pom.xml
index 914ef66..c0223e2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
4.0.0
org.gcube.portlets.admin
accounting-manager
- 1.2.0-SNAPSHOT
+ 1.3.0-SNAPSHOT
war
@@ -61,6 +61,20 @@
localRun
+
+
+ org.gcube.common
+ common-authorization
+ runtime
+
+
+
+ org.gcube.common
+ authorization-client
+ runtime
+
+
+
org.gcube.contentmanagement
@@ -90,18 +104,7 @@
runtime
-
-
- org.gcube.common
- common-authorization
- runtime
-
-
- org.gcube.common
- authorization-client
- runtime
-
@@ -211,6 +214,11 @@
aslcore
+
+ org.gcube.dvos
+ usermanagement-core
+ provided
+
@@ -246,7 +254,7 @@
aslsocial
provided
-
+
org.gcube.portlets.widgets
@@ -261,7 +269,7 @@
provided
-
+
org.gcube.contentmanagement
@@ -293,7 +301,7 @@
home-library-model
provided
-
+
org.gcube.accounting
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 d225026..08b857f 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
@@ -11,8 +11,8 @@ import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.UIStateEvent;
import org.gcube.portlets.admin.accountingmanager.client.monitor.AccountingMonitor;
import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerServiceAsync;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingState;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientState;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.client.type.SessionExpiredType;
import org.gcube.portlets.admin.accountingmanager.client.type.StateChangeType;
import org.gcube.portlets.admin.accountingmanager.client.type.UIStateType;
@@ -31,6 +31,7 @@ import org.gcube.portlets.admin.accountingmanager.shared.workspace.ItemDescripti
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.i18n.client.DateTimeFormat;
@@ -53,7 +54,7 @@ public class AccountingManagerController {
private SimpleEventBus eventBus;
private UserInfo userInfo;
- private AccountingState accountingState;
+ private AccountingClientState accountingState;
private AccountingType accountingType;
@SuppressWarnings("unused")
private BorderLayoutContainer mainPanel;
@@ -62,8 +63,8 @@ public class AccountingManagerController {
public AccountingManagerController() {
eventBus = new SimpleEventBus();
accountingType = AccountingType.STORAGE;
- accountingState = new AccountingState();
- AccountingStateData accountingStateData = new AccountingStateData(
+ accountingState = new AccountingClientState();
+ AccountingClientStateData accountingStateData = new AccountingClientStateData(
accountingType, null, null, null);
accountingState.setState(accountingType, accountingStateData);
init();
@@ -77,7 +78,7 @@ public class AccountingManagerController {
private void checkSession() {
// if you do not need to something when the session expire
- //CheckSession.getInstance().startPolling();
+ // CheckSession.getInstance().startPolling();
}
private void sessionExpiredShow() {
@@ -201,25 +202,24 @@ public class AccountingManagerController {
}
});
-
+
eventBus.addHandler(DownloadCSVRequestEvent.TYPE,
new DownloadCSVRequestEvent.DownloadCSVRequestEventHandler() {
@Override
public void onDownload(DownloadCSVRequestEvent event) {
Log.debug("Catch DownloadDataRequestEvent");
- doSaveDataOnWorkspace(event);
-
+ doDownloadCSV(event);
+
}
});
-
eventBus.fireEvent(new UIStateEvent(UIStateType.START));
}
private void doMenuCommand(AccountingMenuEvent event) {
- AccountingStateData accountingStateData = null;
+ AccountingClientStateData accountingStateData = null;
if (event == null || event.getAccountingType() == null) {
return;
}
@@ -254,18 +254,21 @@ public class AccountingManagerController {
private void createDefaultChart(AccountingType accountingType) {
accountingMonitor = new AccountingMonitor();
Date now = new Date();
- DateTimeFormat dtf=DateTimeFormat.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
- String currentDate=dtf.format(now);
- Date date=dtf.parse(currentDate);
- Date lastMonth=new Date(date.getTime());
+ DateTimeFormat dtf = DateTimeFormat
+ .getFormat(PredefinedFormat.YEAR_MONTH_DAY);
+ String currentDate = dtf.format(now);
+ Date date = dtf.parse(currentDate);
+ Date lastMonth = new Date(date.getTime());
CalendarUtil.addMonthsToDate(lastMonth, -1);
- SeriesRequest seriesRequest = new SeriesRequest(new AccountingPeriod(dtf.format(lastMonth),
- dtf.format(date), AccountingPeriodMode.DAILY), new AccountingFilterBasic());
- Log.debug("DefaultSeriesRequest: "+seriesRequest);
- Log.debug("LastMoth= "+dtf.format(lastMonth)+" , date="+dtf.format(date));
+ SeriesRequest seriesRequest = new SeriesRequest(new AccountingPeriod(
+ dtf.format(lastMonth), dtf.format(date),
+ AccountingPeriodMode.DAILY), new AccountingFilterBasic());
+ Log.debug("DefaultSeriesRequest: " + seriesRequest);
+ Log.debug("LastMoth= " + dtf.format(lastMonth) + " , date="
+ + dtf.format(date));
this.accountingType = accountingType;
- AccountingStateData accountingStateData = new AccountingStateData(
+ AccountingClientStateData accountingStateData = new AccountingClientStateData(
accountingType, seriesRequest, null, null);
accountingState.setState(accountingType, accountingStateData);
@@ -291,14 +294,13 @@ public class AccountingManagerController {
UtilsGXT3.alert("Error retrieving filter keys",
caught.getLocalizedMessage());
}
-
}
@Override
public void onSuccess(ArrayList result) {
Log.debug("FilterKeys: " + result);
- AccountingStateData accountingStateData = accountingState
+ AccountingClientStateData accountingStateData = accountingState
.getState(accountingType);
accountingStateData.setAvailableFilterKeys(result);
accountingState.setState(accountingType,
@@ -318,7 +320,7 @@ public class AccountingManagerController {
@Override
public void onSuccess(SeriesResponse seriesResponse) {
Log.debug("SeriesResponse: " + seriesResponse);
- AccountingStateData accountingStateData = accountingState
+ AccountingClientStateData accountingStateData = accountingState
.getState(accountingType);
accountingStateData.setSeriesResponse(seriesResponse);
accountingState.setState(accountingType,
@@ -359,7 +361,7 @@ public class AccountingManagerController {
switch (event.getFiltersChangeType()) {
case Update:
SeriesRequest seriesRequest = event.getSeriesRequest();
- AccountingStateData accountingStateData = accountingState
+ AccountingClientStateData accountingStateData = accountingState
.getState(accountingType);
if (accountingStateData != null) {
accountingMonitor = new AccountingMonitor();
@@ -387,7 +389,7 @@ public class AccountingManagerController {
@Override
public void onSuccess(SeriesResponse seriesResponse) {
Log.debug("SeriesResponse: " + seriesResponse);
- AccountingStateData accountingStateData = accountingState
+ AccountingClientStateData accountingStateData = accountingState
.getState(accountingType);
accountingStateData.setSeriesResponse(seriesResponse);
accountingState.setState(accountingType,
@@ -416,70 +418,80 @@ public class AccountingManagerController {
}
-
private void doSaveDataOnWorkspace(DownloadCSVRequestEvent event) {
accountingMonitor = new AccountingMonitor();
- Log.debug("Call saveCSVOnWorkspace on server, params: " + event.getAccountingType());
+ Log.debug("Call saveCSVOnWorkspace on server, params: "
+ + event.getAccountingType());
- AccountingManagerServiceAsync.INSTANCE.saveCSVOnWorkspace(accountingState.getState(event.getAccountingType()), new AsyncCallback() {
+ AccountingManagerServiceAsync.INSTANCE.saveCSVOnWorkspace(
+ event.getAccountingType(),
+ new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- accountingMonitor.hide();
- if (caught instanceof SessionExpiredException) {
- eventBus.fireEvent(new SessionExpiredEvent(
- SessionExpiredType.EXPIREDONSERVER));
- } else {
- Log.error("Error:" + caught.getLocalizedMessage());
- UtilsGXT3.alert("Error",
- caught.getLocalizedMessage());
- caught.printStackTrace();
- }
+ @Override
+ public void onFailure(Throwable caught) {
+ accountingMonitor.hide();
+ if (caught instanceof SessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error:" + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ caught.printStackTrace();
+ }
-
- }
+ }
- @Override
- public void onSuccess(ItemDescription result) {
- Log.debug("ItemDescription: " + result);
- doDownloadCSV(result);
- }
- });
+ @Override
+ public void onSuccess(ItemDescription result) {
+ Log.debug("ItemDescription: " + result);
+ doDownloadCSVFromWorkspace(result);
+ }
+ });
}
-
-
- private void doDownloadCSV(final ItemDescription itemDescription) {
+
+ private void doDownloadCSVFromWorkspace(
+ final ItemDescription itemDescription) {
Log.debug("DownloadCSV from server: " + itemDescription);
- AccountingManagerServiceAsync.INSTANCE.getPublicLink(itemDescription, new AsyncCallback() {
+ AccountingManagerServiceAsync.INSTANCE.getPublicLink(itemDescription,
+ new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- accountingMonitor.hide();
- if (caught instanceof SessionExpiredException) {
- eventBus.fireEvent(new SessionExpiredEvent(
- SessionExpiredType.EXPIREDONSERVER));
- } else {
- Log.error("Error:" + caught.getLocalizedMessage());
- UtilsGXT3.alert("Error",
- caught.getLocalizedMessage());
- caught.printStackTrace();
- }
- }
+ @Override
+ public void onFailure(Throwable caught) {
+ accountingMonitor.hide();
+ if (caught instanceof SessionExpiredException) {
+ eventBus.fireEvent(new SessionExpiredEvent(
+ SessionExpiredType.EXPIREDONSERVER));
+ } else {
+ Log.error("Error:" + caught.getLocalizedMessage());
+ UtilsGXT3.alert("Error",
+ caught.getLocalizedMessage());
+ caught.printStackTrace();
+ }
+ }
- @Override
- public void onSuccess(String link) {
- accountingMonitor.hide();
- Log.debug("Retrieved link: " + link);
- Window.open(link, itemDescription.getName(), "");
- }
- });
+ @Override
+ public void onSuccess(String link) {
+ accountingMonitor.hide();
+ Log.debug("Retrieved link: " + link);
+ Window.open(link, itemDescription.getName(), "");
+ }
+ });
}
-
+ private void doDownloadCSV(DownloadCSVRequestEvent event) {
+ StringBuilder actionUrl = new StringBuilder();
+ actionUrl.append(GWT.getModuleBaseURL());
+ actionUrl.append(Constants.DOWNLOAD_CVS_SERVLET + "?"
+ + Constants.DOWNLOAD_CVS_SERVLET_ACCOUNTINGTYPE_PARAMETER + "="
+ + event.getAccountingType().name());
+
+ Log.debug("Retrieved link: " + actionUrl);
+ Window.open(actionUrl.toString(), event.getAccountingType().toString(), "");
+
+ }
-
-
private void doSessionExpiredCommand(SessionExpiredEvent event) {
Log.debug("Session Expired Event: " + event.getSessionExpiredType());
sessionExpiredShow();
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/StateChangeEvent.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/StateChangeEvent.java
index 053423a..392c483 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/StateChangeEvent.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/event/StateChangeEvent.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.admin.accountingmanager.client.event;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.client.type.StateChangeType;
import com.google.gwt.event.shared.EventHandler;
@@ -19,7 +19,7 @@ public class StateChangeEvent extends
public static Type TYPE = new Type();
private StateChangeType stateChangeType;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
public interface StateChangeEventHandler extends EventHandler {
void onStateChange(StateChangeEvent event);
@@ -31,7 +31,7 @@ public class StateChangeEvent extends
}
public StateChangeEvent(StateChangeType stateChangeType,
- AccountingStateData accountingStateData) {
+ AccountingClientStateData accountingStateData) {
this.stateChangeType = stateChangeType;
this.accountingStateData = accountingStateData;
}
@@ -59,7 +59,7 @@ public class StateChangeEvent extends
return stateChangeType;
}
- public AccountingStateData getAccountingStateData() {
+ public AccountingClientStateData getAccountingStateData() {
return accountingStateData;
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java
index 74e8b9d..f0dda57 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java
@@ -7,10 +7,11 @@ import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodE
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodRequestEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEvent;
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
+import org.gcube.portlets.admin.accountingmanager.client.monitor.AccountingMonitor;
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingFilterProperties;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerServiceAsync;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.client.type.SessionExpiredType;
import org.gcube.portlets.admin.accountingmanager.client.utils.UtilsGXT3;
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilter;
@@ -90,7 +91,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
private Grid grid;
private ListStore store;
private boolean addStatus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private ListStore storeComboFilterKey;
private ComboBox comboFilterKey;
private ListStore storeComboFilterValue;
@@ -109,6 +110,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
private FilterKey filterKey;
private boolean cancelValue;
+ private AccountingMonitor accountingMonitor;
public interface FilterKeyPropertiesCombo extends PropertyAccess {
@@ -769,7 +771,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
Log.debug("AccountingPeriod not valid");
return;
}
-
+ accountingMonitor=new AccountingMonitor();
FilterValuesRequest requestFilterValue = new FilterValuesRequest(
filterKey, accountingStateData.getAccountingType(), event.getAccountingPeriod());
@@ -779,6 +781,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
@Override
public void onFailure(Throwable caught) {
+ accountingMonitor.hide();
if (caught instanceof SessionExpiredException) {
eventBus.fireEvent(new SessionExpiredEvent(
SessionExpiredType.EXPIREDONSERVER));
@@ -794,6 +797,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
@Override
public void onSuccess(ArrayList result) {
Log.debug("FilterValues: " + result);
+ accountingMonitor.hide();
ArrayList values = new ArrayList();
for (FilterValue fv : result) {
values.add(fv.getValue());
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Job.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Job.java
index bc9bec6..16bdf96 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Job.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Job.java
@@ -1,7 +1,7 @@
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.job.JobChartBasicPanel;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
@@ -17,10 +17,10 @@ import com.sencha.gxt.widget.core.client.container.SimpleContainer;
*/
public class AccountingChart4Job extends AccountingChartBuilder {
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private EventBus eventBus;
- public AccountingChart4Job(EventBus eventBus, AccountingStateData accountingStateData) {
+ public AccountingChart4Job(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Portlet.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Portlet.java
index 2fb264b..c01917f 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Portlet.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Portlet.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
@@ -15,9 +15,9 @@ import com.google.gwt.event.shared.EventBus;
*/
public class AccountingChart4Portlet extends AccountingChartBuilder {
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
- public AccountingChart4Portlet(EventBus eventBus, AccountingStateData accountingStateData) {
+ public AccountingChart4Portlet(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus = eventBus;
this.accountingStateData = accountingStateData;
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Service.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Service.java
index 409db3b..b726291 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Service.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Service.java
@@ -2,7 +2,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.service.ServiceChartBasicPanel;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.service.ServiceChartTopPanel;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
@@ -18,10 +18,10 @@ import com.sencha.gxt.widget.core.client.container.SimpleContainer;
*/
public class AccountingChart4Service extends AccountingChartBuilder {
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
- public AccountingChart4Service(EventBus eventBus, AccountingStateData accountingStateData) {
+ public AccountingChart4Service(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Storage.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Storage.java
index 6498018..f02bee0 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Storage.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Storage.java
@@ -2,7 +2,7 @@ package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.storage.StorageChartBasicPanel;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.storage.StorageChartTopPanel;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
@@ -18,10 +18,10 @@ import com.sencha.gxt.widget.core.client.container.SimpleContainer;
*/
public class AccountingChart4Storage extends AccountingChartBuilder {
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
- public AccountingChart4Storage(EventBus eventBus, AccountingStateData accountingStateData) {
+ public AccountingChart4Storage(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Task.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Task.java
index fa76d40..373bfc9 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Task.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/AccountingChart4Task.java
@@ -1,6 +1,6 @@
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
@@ -15,10 +15,10 @@ import com.google.gwt.event.shared.EventBus;
*/
public class AccountingChart4Task extends AccountingChartBuilder {
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
- public AccountingChart4Task(EventBus eventBus, AccountingStateData accountingStateData) {
+ public AccountingChart4Task(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
}
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 caad13b..fa31c70 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
@@ -8,7 +8,7 @@ import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.D
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.JobChartMeasure;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.TimeUnitMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -56,7 +56,7 @@ public class JobChartBasicPanel extends SimpleContainer {
private static final String TIME_UNIT = "Time Unit";
private static final String SINGLE_AXIS = "Single Axis";
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
@@ -66,7 +66,6 @@ public class JobChartBasicPanel extends SimpleContainer {
private MenuItem downloadPDFItem;
private MenuItem downloadSVGItem;
-
// Time Unit Menu
private MenuItem msItem;
private MenuItem sItem;
@@ -82,8 +81,9 @@ public class JobChartBasicPanel extends SimpleContainer {
private ToggleButton toggleButton;
private EventBus eventBus;
- public JobChartBasicPanel(EventBus eventBus, AccountingStateData accountingStateData) {
- this.eventBus=eventBus;
+ public JobChartBasicPanel(EventBus eventBus,
+ AccountingClientStateData accountingStateData) {
+ this.eventBus = eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
create();
@@ -229,7 +229,8 @@ public class JobChartBasicPanel extends SimpleContainer {
Menu menuDownload = new Menu();
downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
- AccountingManagerResources.INSTANCE.accountingByte24());
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
@@ -243,7 +244,6 @@ public class JobChartBasicPanel extends SimpleContainer {
AccountingManagerResources.INSTANCE.accountingFileSVG24());
downloadSVGItem.setHeight(30);
-
downloadCSVItem.addSelectionHandler(new SelectionHandler- () {
@Override
@@ -252,11 +252,8 @@ public class JobChartBasicPanel extends SimpleContainer {
}
-
});
-
-
downloadPNGItem.addSelectionHandler(new SelectionHandler
- () {
@Override
@@ -293,7 +290,7 @@ public class JobChartBasicPanel extends SimpleContainer {
onDownloadSVG(id);
}
});
-
+
menuDownload.add(downloadCSVItem);
menuDownload.add(downloadPNGItem);
menuDownload.add(downloadJPGItem);
@@ -302,7 +299,6 @@ public class JobChartBasicPanel extends SimpleContainer {
return menuDownload;
}
-
private void onDownloadCSV() {
DownloadCSVRequestEvent event = new DownloadCSVRequestEvent(
@@ -419,11 +415,10 @@ public class JobChartBasicPanel extends SimpleContainer {
+ JobChartMeasure.OperationCount.getLabel() + "\","
+ " \"style\": {" + " \"color\": \"" + colors.get(1)
+ "\"" + " }" + " }" + "} , {" + " \"id\": \""
- + JobChartMeasure.Duration.name() + "\", "
- + " \"title\": {" + " \"text\": \""
- + JobChartMeasure.Duration.getLabel() + "\","
- + " \"style\": {" + " \"color\": \"" + colors.get(0)
- + "\"" + " }" + " }," + " \"labels\": {"
+ + JobChartMeasure.Duration.name() + "\", " + " \"title\": {"
+ + " \"text\": \"" + JobChartMeasure.Duration.getLabel()
+ + "\"," + " \"style\": {" + " \"color\": \""
+ + colors.get(0) + "\"" + " }" + " }," + " \"labels\": {"
+ " \"format\": \"{value} " + unitMeasureLabel + "\","
+ " \"style\": {" + " \"color\": \"" + colors.get(0)
+ "\"" + " }" + " }," + " \"opposite\": \"true\""
@@ -463,8 +458,7 @@ public class JobChartBasicPanel extends SimpleContainer {
SeriesColumn seriesOperationCount = highchartsFactory
.createSeriesColumn();
- seriesOperationCount
- .name(JobChartMeasure.OperationCount.getLabel());
+ seriesOperationCount.name(JobChartMeasure.OperationCount.getLabel());
seriesOperationCount.color(colors.get(1));
seriesOperationCount.type("column");
@@ -488,8 +482,8 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMaxInvocationTime.name(JobChartMeasure.MaxInvocationTime
.getLabel());
seriesMaxInvocationTime.color(colors.get(2));
- seriesMaxInvocationTime
- .yAxisAsString(JobChartMeasure.MaxInvocationTime.name());
+ seriesMaxInvocationTime.yAxisAsString(JobChartMeasure.MaxInvocationTime
+ .name());
ArrayNumber dataMaxInvocationTime = seriesMaxInvocationTime
.dataAsArrayNumber();
@@ -502,8 +496,8 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMinInvocationTime.name(JobChartMeasure.MinInvocationTime
.getLabel());
seriesMinInvocationTime.color(colors.get(3));
- seriesMinInvocationTime
- .yAxisAsString(JobChartMeasure.MinInvocationTime.name());
+ seriesMinInvocationTime.yAxisAsString(JobChartMeasure.MinInvocationTime
+ .name());
ArrayNumber dataMinInvocationTime = seriesMinInvocationTime
.dataAsArrayNumber();
@@ -511,8 +505,7 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMinInvocationTime.pointInterval(interval).pointStart(
dateStart.getTime());
- for (SeriesJobData seriesJobData : seriesJobBasic
- .getSeries()) {
+ for (SeriesJobData seriesJobData : seriesJobBasic.getSeries()) {
dataOperationCount.push(seriesJobData.getOperationCount());
dataDuration.push(seriesJobData.getDuration() / unitMeasure);
dataMaxInvocationTime.push(seriesJobData.getMaxInvocationTime()
@@ -593,10 +586,9 @@ public class JobChartBasicPanel extends SimpleContainer {
+ " \"text\": \""
+ JobChartMeasure.OperationCount.getLabel() + "\","
+ " \"style\": {" + " \"color\": \"" + colors.get(1)
- + "\"" + " }" + " }" + "} , {"
- + " \"id\": \"JobData\", " + " \"linkedTo\": \"0\","
- + " \"gridLineWidth\": \"0\"," + " \"title\": {"
- + " \"text\": \"\"," + " \"style\": {"
+ + "\"" + " }" + " }" + "} , {" + " \"id\": \"JobData\", "
+ + " \"linkedTo\": \"0\"," + " \"gridLineWidth\": \"0\","
+ + " \"title\": {" + " \"text\": \"\"," + " \"style\": {"
+ " \"color\": \"" + colors.get(1) + "\"" + " }"
+ " }," + " \"labels\": {" + " \"format\": \"{value} "
+ unitMeasureLabel + "\"," + " \"style\": {"
@@ -620,8 +612,7 @@ public class JobChartBasicPanel extends SimpleContainer {
SeriesColumn seriesOperationCount = highchartsFactory
.createSeriesColumn();
- seriesOperationCount
- .name(JobChartMeasure.OperationCount.getLabel());
+ seriesOperationCount.name(JobChartMeasure.OperationCount.getLabel());
seriesOperationCount.color(colors.get(1));
seriesOperationCount.type("column");
@@ -634,7 +625,7 @@ public class JobChartBasicPanel extends SimpleContainer {
SeriesArea seriesDuration = highchartsFactory.createSeriesArea();
seriesDuration.name(JobChartMeasure.Duration.getLabel());
seriesDuration.color(colors.get(0));
- //seriesDuration.yAxisAsString("JobData");
+ // seriesDuration.yAxisAsString("JobData");
ArrayNumber dataDuration = seriesDuration.dataAsArrayNumber();
@@ -645,7 +636,7 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMaxInvocationTime.name(JobChartMeasure.MaxInvocationTime
.getLabel());
seriesMaxInvocationTime.color(colors.get(2));
- //seriesMaxInvocationTime.yAxisAsString("JobData");
+ // seriesMaxInvocationTime.yAxisAsString("JobData");
ArrayNumber dataMaxInvocationTime = seriesMaxInvocationTime
.dataAsArrayNumber();
@@ -658,7 +649,7 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMinInvocationTime.name(JobChartMeasure.MinInvocationTime
.getLabel());
seriesMinInvocationTime.color(colors.get(3));
- //seriesMinInvocationTime.yAxisAsString("JobData");
+ // seriesMinInvocationTime.yAxisAsString("JobData");
ArrayNumber dataMinInvocationTime = seriesMinInvocationTime
.dataAsArrayNumber();
@@ -666,8 +657,7 @@ public class JobChartBasicPanel extends SimpleContainer {
seriesMinInvocationTime.pointInterval(interval).pointStart(
dateStart.getTime());
- for (SeriesJobData seriesJobData : seriesJobBasic
- .getSeries()) {
+ for (SeriesJobData seriesJobData : seriesJobBasic.getSeries()) {
dataOperationCount.push(seriesJobData.getOperationCount());
dataDuration.push(seriesJobData.getDuration() / unitMeasure);
dataMaxInvocationTime.push(seriesJobData.getMaxInvocationTime()
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 60d61dc..567a74b 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,12 +3,13 @@ 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.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;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.TimeUnitMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -55,10 +56,11 @@ public class JobChartTopPanel extends SimpleContainer {
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
+ private MenuItem downloadCSVItem;
private MenuItem downloadPNGItem;
private MenuItem downloadJPGItem;
private MenuItem downloadPDFItem;
@@ -88,7 +90,7 @@ public class JobChartTopPanel extends SimpleContainer {
private VerticalLayoutContainer vert;
public JobChartTopPanel(EventBus eventBus,
- AccountingStateData accountingStateData) {
+ AccountingClientStateData accountingStateData) {
this.eventBus = eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
@@ -150,6 +152,9 @@ public class JobChartTopPanel extends SimpleContainer {
private Menu createDownloadMenu() {
Menu menuDownload = new Menu();
+ downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
@@ -162,7 +167,18 @@ public class JobChartTopPanel extends SimpleContainer {
downloadSVGItem = new MenuItem(DownloadConstants.DOWNLOAD_SVG,
AccountingManagerResources.INSTANCE.accountingFileSVG24());
downloadSVGItem.setHeight(30);
+
+ downloadCSVItem.addSelectionHandler(new SelectionHandler
- () {
+ @Override
+ public void onSelection(SelectionEvent
- event) {
+ onDownloadCSV();
+
+ }
+
+ });
+
+
downloadPNGItem.addSelectionHandler(new SelectionHandler
- () {
@Override
@@ -199,7 +215,8 @@ public class JobChartTopPanel extends SimpleContainer {
onDownloadSVG(id);
}
});
-
+
+ menuDownload.add(downloadCSVItem);
menuDownload.add(downloadPNGItem);
menuDownload.add(downloadJPGItem);
menuDownload.add(downloadPDFItem);
@@ -348,7 +365,13 @@ public class JobChartTopPanel extends SimpleContainer {
return menuUnit;
}
-
+
+ private void onDownloadCSV() {
+ DownloadCSVRequestEvent event = new DownloadCSVRequestEvent(
+ 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 8b303e8..c5b62da 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,12 +2,13 @@ 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.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;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.TimeUnitMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -56,10 +57,11 @@ public class ServiceChartBasicPanel extends SimpleContainer {
private static final String SINGLE_AXIS = "Single Axis";
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
+ private MenuItem downloadCSVItem;
private MenuItem downloadPNGItem;
private MenuItem downloadJPGItem;
private MenuItem downloadPDFItem;
@@ -80,7 +82,7 @@ public class ServiceChartBasicPanel extends SimpleContainer {
private ToggleButton toggleButton;
- public ServiceChartBasicPanel(EventBus eventBus, AccountingStateData accountingStateData) {
+ public ServiceChartBasicPanel(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
@@ -226,6 +228,9 @@ public class ServiceChartBasicPanel extends SimpleContainer {
private Menu createDownloadMenu() {
Menu menuDownload = new Menu();
+ downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
@@ -238,7 +243,18 @@ public class ServiceChartBasicPanel extends SimpleContainer {
downloadSVGItem = new MenuItem(DownloadConstants.DOWNLOAD_SVG,
AccountingManagerResources.INSTANCE.accountingFileSVG24());
downloadSVGItem.setHeight(30);
+
+ downloadCSVItem.addSelectionHandler(new SelectionHandler
- () {
+ @Override
+ public void onSelection(SelectionEvent
- event) {
+ onDownloadCSV();
+
+ }
+
+
+ });
+
downloadPNGItem.addSelectionHandler(new SelectionHandler
- () {
@Override
@@ -275,7 +291,8 @@ public class ServiceChartBasicPanel extends SimpleContainer {
onDownloadSVG(id);
}
});
-
+
+ menuDownload.add(downloadCSVItem);
menuDownload.add(downloadPNGItem);
menuDownload.add(downloadJPGItem);
menuDownload.add(downloadPDFItem);
@@ -283,6 +300,12 @@ public class ServiceChartBasicPanel extends SimpleContainer {
return menuDownload;
}
+
+ private void onDownloadCSV() {
+ DownloadCSVRequestEvent event = new DownloadCSVRequestEvent(
+ 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 437eeaf..d9a7493 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,12 +3,13 @@ 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.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;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ServiceChartMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -55,10 +56,11 @@ public class ServiceChartTopPanel extends SimpleContainer {
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
+ private MenuItem downloadCSVItem;
private MenuItem downloadPNGItem;
private MenuItem downloadJPGItem;
private MenuItem downloadPDFItem;
@@ -86,10 +88,10 @@ public class ServiceChartTopPanel extends SimpleContainer {
private TextButton measureButton;
private VerticalLayoutContainer vert;
-
- public ServiceChartTopPanel(EventBus eventBus, AccountingStateData accountingStateData) {
- this.eventBus=eventBus;
+ public ServiceChartTopPanel(EventBus eventBus,
+ AccountingClientStateData accountingStateData) {
+ this.eventBus = eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
create();
@@ -109,7 +111,8 @@ public class ServiceChartTopPanel extends SimpleContainer {
downloadButton.setMenu(createDownloadMenu());
// Measure
- measureButton = new TextButton(ServiceChartMeasure.OperationCount.getLabel(),
+ measureButton = new TextButton(
+ ServiceChartMeasure.OperationCount.getLabel(),
AccountingManagerResources.INSTANCE.accountingByte24());
measureButton.setIconAlign(IconAlign.RIGHT);
measureButton.setArrowAlign(ButtonArrowAlign.RIGHT);
@@ -122,12 +125,11 @@ public class ServiceChartTopPanel extends SimpleContainer {
unitButton.setArrowAlign(ButtonArrowAlign.RIGHT);
unitButton.setMenu(createUnitMenu());
unitButton.setVisible(false);
-
+
toolBar.add(downloadButton, new BoxLayoutData(new Margins(0)));
toolBar.add(measureButton, new BoxLayoutData(new Margins(0)));
toolBar.add(unitButton, new BoxLayoutData(new Margins(0)));
-
-
+
//
createChart();
@@ -152,6 +154,9 @@ public class ServiceChartTopPanel extends SimpleContainer {
private Menu createDownloadMenu() {
Menu menuDownload = new Menu();
+ downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
@@ -165,6 +170,16 @@ public class ServiceChartTopPanel extends SimpleContainer {
AccountingManagerResources.INSTANCE.accountingFileSVG24());
downloadSVGItem.setHeight(30);
+ downloadCSVItem.addSelectionHandler(new SelectionHandler
- () {
+
+ @Override
+ public void onSelection(SelectionEvent
- event) {
+ onDownloadCSV();
+
+ }
+
+ });
+
downloadPNGItem.addSelectionHandler(new SelectionHandler
- () {
@Override
@@ -202,6 +217,7 @@ public class ServiceChartTopPanel extends SimpleContainer {
}
});
+ menuDownload.add(downloadCSVItem);
menuDownload.add(downloadPNGItem);
menuDownload.add(downloadJPGItem);
menuDownload.add(downloadPDFItem);
@@ -352,6 +368,12 @@ public class ServiceChartTopPanel extends SimpleContainer {
}
+ private void onDownloadCSV() {
+ DownloadCSVRequestEvent event = new DownloadCSVRequestEvent(
+ 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/storage/StorageChartBasicPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/maindata/charts/storage/StorageChartBasicPanel.java
index 780de6c..f7a066e 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
@@ -8,7 +8,7 @@ import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.C
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.StorageChartMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -55,7 +55,7 @@ public class StorageChartBasicPanel extends SimpleContainer {
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
@@ -79,7 +79,7 @@ public class StorageChartBasicPanel extends SimpleContainer {
private VerticalLayoutContainer vert;
public StorageChartBasicPanel(EventBus eventBus,
- AccountingStateData accountingStateData) {
+ AccountingClientStateData accountingStateData) {
this.eventBus = eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
@@ -216,7 +216,8 @@ public class StorageChartBasicPanel extends SimpleContainer {
private Menu createDownloadMenu() {
Menu menuDownload = new Menu();
downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
- AccountingManagerResources.INSTANCE.accountingByte24());
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
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 140bfe9..300985c 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
@@ -9,7 +9,7 @@ import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.C
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.DownloadConstants;
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.StorageChartMeasure;
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
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;
@@ -56,7 +56,7 @@ public class StorageChartTopPanel extends SimpleContainer {
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
private EventBus eventBus;
- private AccountingStateData accountingStateData;
+ private AccountingClientStateData accountingStateData;
private HighchartsLayoutPanel highchartsLayoutPanel;
// Download Menu
@@ -88,7 +88,7 @@ public class StorageChartTopPanel extends SimpleContainer {
private VerticalLayoutContainer vert;
- public StorageChartTopPanel(EventBus eventBus, AccountingStateData accountingStateData) {
+ public StorageChartTopPanel(EventBus eventBus, AccountingClientStateData accountingStateData) {
this.eventBus=eventBus;
this.accountingStateData = accountingStateData;
forceLayoutOnResize = true;
@@ -165,7 +165,8 @@ public class StorageChartTopPanel extends SimpleContainer {
private Menu createDownloadMenu() {
Menu menuDownload = new Menu();
downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
- AccountingManagerResources.INSTANCE.accountingByte24());
+ AccountingManagerResources.INSTANCE.accountingFileCSV24());
+ downloadCSVItem.setHeight(30);
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
AccountingManagerResources.INSTANCE.accountingFilePNG24());
downloadPNGItem.setHeight(30);
@@ -225,7 +226,8 @@ public class StorageChartTopPanel extends SimpleContainer {
onDownloadSVG(id);
}
});
-
+
+ menuDownload.add(downloadCSVItem);
menuDownload.add(downloadPNGItem);
menuDownload.add(downloadJPGItem);
menuDownload.add(downloadPDFItem);
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 6679d66..00db6ae 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
@@ -180,6 +180,12 @@ public interface AccountingManagerResources extends ClientBundle {
@Source("accounting-file_32.png")
ImageResource accountingFile32();
+ @Source("accounting-file-csv_24.png")
+ ImageResource accountingFileCSV24();
+
+ @Source("accounting-file-csv_32.png")
+ ImageResource accountingFileCSV32();
+
@Source("accounting-file-png_24.png")
ImageResource accountingFilePNG24();
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png
new file mode 100644
index 0000000..b9c6c95
Binary files /dev/null and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png differ
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png
new file mode 100644
index 0000000..532cc62
Binary files /dev/null and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png differ
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerService.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerService.java
index 239ed59..3c951d8 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerService.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerService.java
@@ -2,7 +2,6 @@ package org.gcube.portlets.admin.accountingmanager.client.rpc;
import java.util.ArrayList;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
@@ -81,7 +80,7 @@ public interface AccountingManagerService extends RemoteService {
* @return
* @throws ServiceException
*/
- public ItemDescription saveCSVOnWorkspace(AccountingStateData accountingStateData)
+ public ItemDescription saveCSVOnWorkspace(AccountingType accountingType)
throws ServiceException;
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerServiceAsync.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerServiceAsync.java
index eac55bc..5ddc199 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/rpc/AccountingManagerServiceAsync.java
@@ -5,7 +5,6 @@ package org.gcube.portlets.admin.accountingmanager.client.rpc;
import java.util.ArrayList;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
@@ -77,7 +76,7 @@ public interface AccountingManagerServiceAsync {
* @param accountingStateData
* @param callback
*/
- void saveCSVOnWorkspace(AccountingStateData accountingStateData,
+ void saveCSVOnWorkspace(AccountingType accountingType,
AsyncCallback callback);
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientState.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientState.java
new file mode 100644
index 0000000..0bba8b4
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientState.java
@@ -0,0 +1,37 @@
+package org.gcube.portlets.admin.accountingmanager.client.state;
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
+
+/**
+ *
+ * @author giancarlo email: g.panichi@isti.cnr.it
+ *
+ */
+public class AccountingClientState implements Serializable {
+
+ private static final long serialVersionUID = 5993049979009321365L;
+ private HashMap clientState;
+
+ public AccountingClientState() {
+ clientState = new HashMap();
+ }
+
+ public AccountingClientStateData getState(AccountingType accountingType) {
+ return clientState.get(accountingType);
+ }
+
+ public void setState(AccountingType accountingType,
+ AccountingClientStateData accountingStateData) {
+ clientState.put(accountingType, accountingStateData);
+ }
+
+ @Override
+ public String toString() {
+ return "AccountingClientState [clientState=" + clientState + "]";
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientStateData.java
similarity index 89%
rename from src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java
rename to src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientStateData.java
index cde3ef9..d465ebc 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingClientStateData.java
@@ -14,7 +14,7 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesRes
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it
*
*/
-public class AccountingStateData implements Serializable {
+public class AccountingClientStateData implements Serializable {
private static final long serialVersionUID = -2080165745912743812L;
private AccountingType accountingType;
@@ -22,11 +22,11 @@ public class AccountingStateData implements Serializable {
private SeriesResponse seriesResponse;
private ArrayList availableFilterKeys;
- public AccountingStateData() {
+ public AccountingClientStateData() {
super();
}
- public AccountingStateData(AccountingType accountingType,
+ public AccountingClientStateData(AccountingType accountingType,
SeriesRequest seriesRequest, SeriesResponse seriesResponse,
ArrayList availableFilterKeys) {
super();
@@ -70,10 +70,11 @@ public class AccountingStateData implements Serializable {
@Override
public String toString() {
- return "AccountingStateData [accountingType=" + accountingType
+ return "AccountingClientStateData [accountingType=" + accountingType
+ ", seriesRequest=" + seriesRequest + ", seriesResponse="
+ seriesResponse + ", availableFilterKeys="
+ availableFilterKeys + "]";
}
+
}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingState.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingState.java
deleted file mode 100644
index 1e504aa..0000000
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingState.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.gcube.portlets.admin.accountingmanager.client.state;
-
-import java.io.Serializable;
-import java.util.HashMap;
-
-import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
-
-/**
- *
- * @author giancarlo
- * email: g.panichi@isti.cnr.it
- *
- */
-public class AccountingState implements Serializable {
-
- private static final long serialVersionUID = 5993049979009321365L;
- private HashMap clientState;
-
- public AccountingState(){
- clientState=new HashMap();
- }
-
-
- public AccountingStateData getState(AccountingType accountingType){
- return clientState.get(accountingType);
- }
-
- public void setState(AccountingType accountingType, AccountingStateData accountingStateData){
- clientState.put(accountingType,accountingStateData);
- }
-
-
- @Override
- public String toString() {
- return "AccountingState [clientState=" + clientState + "]";
- }
-
-
-}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
index ce833c7..d1d3755 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java
@@ -7,11 +7,11 @@ import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerService;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.server.amservice.AccountingCaller;
import org.gcube.portlets.admin.accountingmanager.server.amservice.AccountingCallerInterface;
import org.gcube.portlets.admin.accountingmanager.server.amservice.AccountingCallerTester;
import org.gcube.portlets.admin.accountingmanager.server.csv.CSVManager;
+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.Constants;
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
@@ -101,7 +101,10 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
}
SeriesResponse seriesResponse = accountingCaller.getSeries(
accountingType, seriesRequest);
-
+ AccountingStateData accountingStateData = new AccountingStateData(
+ accountingType, seriesRequest, seriesResponse);
+ SessionUtil.setAccountingStateData(session, accountingType,
+ accountingStateData);
return seriesResponse;
} catch (ServiceException e) {
@@ -179,16 +182,25 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
}
}
-
+
@Override
- public ItemDescription saveCSVOnWorkspace(AccountingStateData accountingStateData)
+ public ItemDescription saveCSVOnWorkspace(AccountingType accountingType)
throws ServiceException {
try {
HttpSession session = this.getThreadLocalRequest().getSession();
ASLSession aslSession = SessionUtil.getASLSession(session);
- logger.debug("SaveDataOnWorkspace(): " + accountingStateData);
- CSVManager csvManager=new CSVManager(aslSession.getUsername());
- ItemDescription itemDescription=csvManager.saveOnWorkspace(accountingStateData);
+
+ logger.debug("SaveDataOnWorkspace(): " + accountingType);
+ AccountingStateData accountingStateData = SessionUtil
+ .getAccountingStateData(session, accountingType);
+ if(accountingStateData==null){
+ logger.error("No series present in session for thi accounting type: "+accountingType);
+ throw new ServiceException("No series present in session for thi accounting type: "+accountingType);
+ }
+
+ CSVManager csvManager = new CSVManager(aslSession.getUsername());
+ ItemDescription itemDescription = csvManager
+ .saveOnWorkspace(accountingStateData);
return itemDescription;
} catch (ServiceException e) {
e.printStackTrace();
@@ -199,8 +211,6 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
-
-
@Override
public String getPublicLink(ItemDescription itemDescription)
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/DownloadCSVServlet.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/DownloadCSVServlet.java
new file mode 100644
index 0000000..7f57d03
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/DownloadCSVServlet.java
@@ -0,0 +1,127 @@
+package org.gcube.portlets.admin.accountingmanager.server;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.gcube.application.framework.core.session.ASLSession;
+import org.gcube.portlets.admin.accountingmanager.server.csv.CSVManager;
+import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.shared.Constants;
+import org.gcube.portlets.admin.accountingmanager.shared.csv.CSVDescriptor;
+import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
+import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ * email: g.panichi@isti.cnr.it
+ *
+ * Download Folder Servlet
+ *
+ */
+public class DownloadCSVServlet extends HttpServlet {
+ private static final long serialVersionUID = -1838255772767180518L;
+ private static Logger logger = LoggerFactory
+ .getLogger(DownloadCSVServlet.class);
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public DownloadCSVServlet() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ createResponse(request, response);
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ createResponse(request, response);
+ }
+
+ private void createResponse(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ try {
+ logger.info("DownloadCSVServlet");
+
+ HttpSession session = request.getSession();
+
+ if (session == null) {
+ logger.error("Error getting the session, no session valid found: "
+ + session);
+ response.sendError(
+ HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+ "ERROR-Error getting the user session, no session found "
+ + session);
+ return;
+ }
+ logger.debug("DownloadCSVServlet session id: " + session.getId());
+
+ ASLSession aslSession = SessionUtil.getASLSession(session);
+
+ String accountingType = request.getParameter(Constants.DOWNLOAD_CVS_SERVLET_ACCOUNTINGTYPE_PARAMETER);
+ logger.debug("Request: [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);
+ }
+
+ CSVManager csvManager=new CSVManager(aslSession.getUsername());
+ CSVDescriptor csvDescriptor=csvManager.downloadCSV(accountingStateData);
+ logger.debug("CSVDescriptor: "+csvDescriptor);
+ response.setHeader("Content-Disposition", "attachment; filename=\""
+ + csvDescriptor.getCsvModel().getFileName()+csvDescriptor.getCsvModel().getFileExtension() + "\"");
+ response.setContentType("text/csv");
+ response.setHeader("Content-Length",
+ String.valueOf(csvDescriptor.getPath().toFile().length()));
+
+ OutputStream out = response.getOutputStream();
+ Files.copy(csvDescriptor.getPath(), out);
+ out.flush();
+ out.close();
+
+ try {
+ Files.delete(csvDescriptor.getPath());
+ } 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;
+
+ } catch (Throwable e) {
+ logger.error("Error in DownloadFolderServlet: "
+ + e.getLocalizedMessage());
+ e.printStackTrace();
+ throw new ServletException("Error:"
+ + e.getLocalizedMessage(), e);
+
+ }
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
index 5eae2a6..05b0d4c 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/SessionUtil.java
@@ -13,7 +13,10 @@ import javax.servlet.http.HttpSession;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
+import org.gcube.portlets.admin.accountingmanager.server.state.AccountingState;
+import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.shared.Constants;
+import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
import org.slf4j.Logger;
@@ -65,23 +68,52 @@ public class SessionUtil {
}
public static String getToken(ASLSession aslSession) {
- String token=null;
+ String token = null;
if (Constants.DEBUG_MODE) {
List userRoles = new ArrayList<>();
userRoles.add(Constants.DEFAULT_ROLE);
- /*if (aslSession.getUsername().compareTo("lucio.lelii") == 0)
- userRoles.add("VRE-Manager");*/
+ /*
+ * if (aslSession.getUsername().compareTo("lucio.lelii") == 0)
+ * userRoles.add("VRE-Manager");
+ */
token = authorizationService().build().generate(
aslSession.getUsername(), userRoles);
-
+
} else {
token = aslSession.getSecurityToken();
}
logger.info("received token: " + token);
return token;
-
-
+
+ }
+
+ public static void setAccountingStateData(HttpSession httpSession,
+ AccountingType accountingType,
+ AccountingStateData accountingStateData) {
+ AccountingState accountingState = (AccountingState) httpSession
+ .getAttribute(Constants.SESSION_ACCOUNTING_STATE);
+
+ if (accountingState == null) {
+ accountingState = new AccountingState();
+ accountingState.setState(accountingType, accountingStateData);
+ httpSession.setAttribute(Constants.SESSION_ACCOUNTING_STATE,
+ accountingState);
+ } else {
+ accountingState.setState(accountingType, accountingStateData);
+ }
+
+ return;
}
-
+ public static AccountingStateData getAccountingStateData(HttpSession httpSession,
+ AccountingType accountingType) {
+ AccountingState accountingState = (AccountingState) httpSession
+ .getAttribute(Constants.SESSION_ACCOUNTING_STATE);
+ if (accountingState == null) {
+ return null;
+ } else {
+ return accountingState.getState(accountingType);
+ }
+ }
+
}
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/csv/CSVManager.java
index 6314b0f..d82379c 100644
--- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/CSVManager.java
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/csv/CSVManager.java
@@ -9,13 +9,15 @@ import java.nio.file.StandardOpenOption;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
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.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.workspace.ItemDescription;
import org.slf4j.Logger;
@@ -53,6 +55,7 @@ public class CSVManager {
switch (accountingStateData.getAccountingType()) {
case SERVICE:
+ csvModelBuilder = new CSVModel4Service(accountingStateData);
break;
case STORAGE:
csvModelBuilder = new CSVModel4Storage(accountingStateData);
@@ -128,5 +131,82 @@ public class CSVManager {
}
}
+
+
+ public CSVDescriptor downloadCSV(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!");
+ }
+
+ CSVModelBuilder csvModelBuilder = null;
+
+ switch (accountingStateData.getAccountingType()) {
+ case SERVICE:
+ csvModelBuilder = new CSVModel4Service(accountingStateData);
+ break;
+ case STORAGE:
+ csvModelBuilder = new CSVModel4Storage(accountingStateData);
+ break;
+ case JOB:
+ case PORTLET:
+ case TASK:
+ default:
+ logger.error("Accounting Type not supported!");
+ 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);
+
+ if (csvModel == null) {
+ logger.error("CSV model created is null");
+ throw new ServiceException("CSVModel created is null!");
+ }
+
+ Path tempFile = Files.createTempFile(csvModel.getFileName(),
+ csvModel.getFileExtension());
+ logger.debug("Temp File: " + tempFile.toString());
+
+ // Create the CSVFormat object
+ CSVFormat format = CSVFormat.RFC4180.withHeader()
+ .withDelimiter(',');
+
+ 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(row.getData());
+ }
+ // close the printer
+ printer.close();
+ printStream.close();
+
+
+ return new CSVDescriptor(tempFile, csvModel);
+
+ } catch (ServiceException e) {
+ throw e;
+ } catch (Throwable e) {
+ logger.error("Error downloading data: " + e.getLocalizedMessage());
+ e.printStackTrace();
+ throw new ServiceException("Error downloading data: "
+ + e.getLocalizedMessage());
+
+ }
+
+ }
}
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/csv/file/CSVModel4Service.java
index c06a9f5..815b2d0 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/csv/file/CSVModel4Service.java
@@ -1,9 +1,10 @@
package org.gcube.portlets.admin.accountingmanager.server.csv.file;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
@@ -44,10 +45,21 @@ public class CSVModel4Service extends CSVModelBuilder {
}
- String startDate = sdfFile.format(seriesRequest.getAccountingPeriod()
- .getStartDate());
- String endDate = sdfFile.format(seriesRequest.getAccountingPeriod()
- .getEndDate());
+ String startDate="";
+ try {
+ startDate = sdfFile.format(sdf.parse(seriesRequest.getAccountingPeriod()
+ .getStartDate()));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ String endDate="";
+ try {
+ endDate = sdfFile.format(sdf.parse(seriesRequest.getAccountingPeriod()
+ .getEndDate()));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
String periodType = seriesRequest.getAccountingPeriod().getPeriod()
.getLabel();
@@ -77,7 +89,7 @@ public class CSVModel4Service extends CSVModelBuilder {
.getSeries();
for (SeriesServiceData seriesData : listData) {
ArrayList data = new ArrayList<>();
- data.add(sdf.format(seriesData.getDate()));
+ data.add(sdfCSVDate.format(seriesData.getDate()));
data.add(String.valueOf(seriesData.getOperationCount()));
data.add(String.valueOf(seriesData.getDuration()));
data.add(String.valueOf(seriesData.getMaxInvocationTime()));
@@ -103,7 +115,7 @@ public class CSVModel4Service extends CSVModelBuilder {
for (SeriesServiceData seriesData : listData) {
ArrayList data = new ArrayList<>();
data.add(filterValue.getValue());
- data.add(sdf.format(seriesData.getDate()));
+ data.add(sdfCSVDate.format(seriesData.getDate()));
data.add(String.valueOf(seriesData
.getOperationCount()));
data.add(String.valueOf(seriesData.getDuration()));
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/csv/file/CSVModel4Storage.java
index 78beeb4..154c517 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/csv/file/CSVModel4Storage.java
@@ -1,9 +1,10 @@
package org.gcube.portlets.admin.accountingmanager.server.csv.file;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
-import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData;
+import org.gcube.portlets.admin.accountingmanager.server.state.AccountingStateData;
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
@@ -44,10 +45,22 @@ public class CSVModel4Storage extends CSVModelBuilder {
}
- String startDate = sdfFile.format(seriesRequest.getAccountingPeriod()
- .getStartDate());
- String endDate = sdfFile.format(seriesRequest.getAccountingPeriod()
- .getEndDate());
+ String startDate="";
+ try {
+ startDate = sdfFile.format(sdf.parse(seriesRequest.getAccountingPeriod()
+ .getStartDate()));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ String endDate="";
+ try {
+ endDate = sdfFile.format(sdf.parse(seriesRequest.getAccountingPeriod()
+ .getEndDate()));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
String periodType = seriesRequest.getAccountingPeriod().getPeriod()
.getLabel();
@@ -76,9 +89,9 @@ public class CSVModel4Storage extends CSVModelBuilder {
.getSeries();
for (SeriesStorageData seriesData : listData) {
ArrayList data = new ArrayList<>();
- data.add(sdf.format(seriesData.getDate()));
- data.add(sdf.format(seriesData.getOperationCount()));
- data.add(sdf.format(seriesData.getDataVolume()));
+ data.add(sdfCSVDate.format(seriesData.getDate()));
+ data.add(String.valueOf(seriesData.getOperationCount()));
+ data.add(String.valueOf(seriesData.getDataVolume()));
CSVDataRow csvDataRow = new CSVDataRow(data);
rows.add(csvDataRow);
}
@@ -100,9 +113,9 @@ public class CSVModel4Storage extends CSVModelBuilder {
for (SeriesStorageData seriesData : listData) {
ArrayList data = new ArrayList<>();
data.add(filterValue.getValue());
- data.add(sdf.format(seriesData.getDate()));
- data.add(sdf.format(seriesData.getOperationCount()));
- data.add(sdf.format(seriesData.getDataVolume()));
+ data.add(sdfCSVDate.format(seriesData.getDate()));
+ data.add(String.valueOf(seriesData.getOperationCount()));
+ data.add(String.valueOf(seriesData.getDataVolume()));
CSVDataRow csvDataRow = new CSVDataRow(data);
rows.add(csvDataRow);
}
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/csv/file/CSVModelBuilder.java
index 6aa510c..f71ac8d 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/csv/file/CSVModelBuilder.java
@@ -13,7 +13,9 @@ import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceExcept
*/
public abstract class CSVModelBuilder {
protected CSVModelSpec csvModelSpec;
- protected SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+
+ 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(){
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingState.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingState.java
new file mode 100644
index 0000000..6d14f16
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingState.java
@@ -0,0 +1,40 @@
+package org.gcube.portlets.admin.accountingmanager.server.state;
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
+
+/**
+ *
+ * @author giancarlo email: g.panichi@isti.cnr.it
+ *
+ */
+public class AccountingState implements Serializable {
+
+ private static final long serialVersionUID = 5993049979009321365L;
+ private HashMap state;
+
+ public AccountingState() {
+ state = new HashMap();
+ }
+
+ public AccountingStateData getState(AccountingType accountingType) {
+ return state.get(accountingType);
+ }
+
+ public void setState(AccountingType accountingType,
+ AccountingStateData accountingStateData) {
+ state.put(accountingType, accountingStateData);
+ }
+
+ @Override
+ public String toString() {
+ return "AccountingState [state=" + state + "]";
+ }
+
+
+
+
+}
diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingStateData.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingStateData.java
new file mode 100644
index 0000000..da3420d
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/state/AccountingStateData.java
@@ -0,0 +1,65 @@
+package org.gcube.portlets.admin.accountingmanager.server.state;
+
+import java.io.Serializable;
+
+import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
+import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
+import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
+
+/**
+ *
+ * @author giancarlo email: g.panichi@isti.cnr.it
+ *
+ */
+public class AccountingStateData implements Serializable {
+
+ private static final long serialVersionUID = -2080165745912743812L;
+ private AccountingType accountingType;
+ private SeriesRequest seriesRequest;
+ private SeriesResponse seriesResponse;
+
+ public AccountingStateData() {
+ super();
+ }
+
+ public AccountingStateData(AccountingType accountingType,
+ SeriesRequest seriesRequest, SeriesResponse seriesResponse) {
+ super();
+ this.accountingType = accountingType;
+ this.seriesRequest = seriesRequest;
+ this.seriesResponse = seriesResponse;
+ }
+
+ public AccountingType getAccountingType() {
+ return accountingType;
+ }
+
+ public void setAccountingType(AccountingType accountingType) {
+ this.accountingType = accountingType;
+ }
+
+ public SeriesRequest getSeriesRequest() {
+ return seriesRequest;
+ }
+
+ public void setSeriesRequest(SeriesRequest seriesRequest) {
+ this.seriesRequest = seriesRequest;
+ }
+
+ public SeriesResponse getSeriesResponse() {
+ return seriesResponse;
+ }
+
+ public void setSeriesResponse(SeriesResponse seriesResponse) {
+ this.seriesResponse = seriesResponse;
+ }
+
+ @Override
+ public String toString() {
+ return "AccountingStateData [accountingType=" + accountingType
+ + ", seriesRequest=" + seriesRequest + ", seriesResponse="
+ + seriesResponse + "]";
+ }
+
+}
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 e456801..569c398 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,5 +23,10 @@ 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 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
new file mode 100644
index 0000000..4d1cb31
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/csv/CSVDescriptor.java
@@ -0,0 +1,52 @@
+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/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png
new file mode 100644
index 0000000..b9c6c95
Binary files /dev/null and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_24.png differ
diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png
new file mode 100644
index 0000000..532cc62
Binary files /dev/null and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-file-csv_32.png differ
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index c2f640b..c3a35bb 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -29,7 +29,12 @@
AccountingManagerService
org.gcube.portlets.admin.accountingmanager.server.AccountingManagerServiceImpl
-
+
+
+
+ DownloadCSVServlet
+ org.gcube.portlets.admin.accountingmanager.server.DownloadCSVServlet
+
@@ -56,9 +61,12 @@
/accountingman/ams
-
-
-
+
+
+ DownloadCSVServlet
+ /accountingman/downloadCSVServlet
+
+