From 6b7d32fcbf0b2cedd4cea3e3e12f9a456a332e03 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 8 Apr 2020 16:52:52 +0200 Subject: [PATCH] ref 18815: Accounting Dashboard Reminiscence https://support.d4science.org/issues/18815 Updated detached REs support --- .../application/controller/Controller.java | 23 +++++++++ .../application/event/EnvironmentEvent.java | 51 +++++++++++++++++++ .../mainarea/filter/FilterAreaPresenter.java | 15 ++++++ .../mainarea/filter/FilterAreaView.java | 34 +++++++++++++ .../mainarea/filter/FilterAreaView.ui.xml | 2 +- .../rpc/AccountingDashboardService.java | 3 ++ .../rpc/AccountingDashboardServiceAsync.java | 3 ++ .../AccountingDashboardServiceImpl.java | 22 +++++++- .../server/accounting/AccountingService.java | 1 + .../accounting/PortalContextTreeProvider.java | 1 + .../env}/AccountingServiceType.java | 2 +- .../shared/env/EnvironmentData.java | 38 ++++++++++++++ .../AccountingServiceTest.java | 2 +- 13 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/event/EnvironmentEvent.java rename src/main/java/org/gcube/portlets/user/accountingdashboard/{server/accounting => shared/env}/AccountingServiceType.java (64%) create mode 100644 src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/EnvironmentData.java diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/controller/Controller.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/controller/Controller.java index 4f8bb58..0f6b577 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/controller/Controller.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/controller/Controller.java @@ -6,6 +6,7 @@ import java.util.logging.Logger; import org.gcube.portlets.user.accountingdashboard.client.application.dialog.error.ErrorPresenter; import org.gcube.portlets.user.accountingdashboard.client.application.dialog.info.InfoPresenter; import org.gcube.portlets.user.accountingdashboard.client.application.dialog.monitor.MonitorPresenter; +import org.gcube.portlets.user.accountingdashboard.client.application.event.EnvironmentEvent; import org.gcube.portlets.user.accountingdashboard.client.application.event.HelloEvent; import org.gcube.portlets.user.accountingdashboard.client.application.event.ReportEvent; import org.gcube.portlets.user.accountingdashboard.client.application.event.ScopeDataEvent; @@ -13,6 +14,7 @@ import org.gcube.portlets.user.accountingdashboard.client.rpc.AccountingDashboar import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.gcube.portlets.user.accountingdashboard.shared.session.UserInfo; @@ -111,6 +113,27 @@ public class Controller { }); } + + public void getEnvironment() { + service.getEnvironment(new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + logger.log(Level.FINE, "Error in getEnvironment(): ", caught); + errorPresenter.errorMessage(caught.getLocalizedMessage()); + } + + @Override + public void onSuccess(EnvironmentData environmentData) { + logger.log(Level.FINE, "ScopeData: " + environmentData); + EnvironmentEvent event = new EnvironmentEvent(environmentData); + eventBus.fireEvent(event); + } + + }); + + } + public void getTree() { service.getScopeData(treeOptions,new AsyncCallback() { diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/event/EnvironmentEvent.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/event/EnvironmentEvent.java new file mode 100644 index 0000000..beb26bb --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/event/EnvironmentEvent.java @@ -0,0 +1,51 @@ +package org.gcube.portlets.user.accountingdashboard.client.application.event; + +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HasHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +public class EnvironmentEvent extends GwtEvent { + + private EnvironmentData environmentData; + + public interface EnvironmentEventHandler extends EventHandler { + void onInit(EnvironmentEvent event); + } + + public static final Type TYPE = new Type<>(); + + public EnvironmentEvent(EnvironmentData environmentData) { + this.environmentData = environmentData; + } + + public static void fire(HasHandlers source, EnvironmentEvent event) { + source.fireEvent(event); + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(EnvironmentEventHandler handler) { + handler.onInit(this); + } + + public EnvironmentData getEnvironmentData() { + return environmentData; + } + + @Override + public String toString() { + return "EnvironmentEvent [environmentData=" + environmentData + "]"; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaPresenter.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaPresenter.java index d49c831..41b1af6 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaPresenter.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaPresenter.java @@ -5,9 +5,11 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.gcube.portlets.user.accountingdashboard.client.application.controller.Controller; +import org.gcube.portlets.user.accountingdashboard.client.application.event.EnvironmentEvent; import org.gcube.portlets.user.accountingdashboard.client.application.event.ScopeDataEvent; import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import com.google.gwt.i18n.client.DateTimeFormat; @@ -30,6 +32,8 @@ public class FilterAreaPresenter extends PresenterWidget { void displayScopeData(ScopeData scopeData); + + void setEnvironment(EnvironmentData environmentData); } @@ -62,12 +66,23 @@ public class FilterAreaPresenter extends PresenterWidget @UiField(provided = true) ListBox monthEnd; + + @UiField(provided = false) + ControlGroup cgDetachedREs; @UiField(provided = true) RadioButton btnShowDetachedREs; @@ -173,6 +178,8 @@ public class FilterAreaView extends ViewWithUiHandlers logger.log(Level.FINE, "Configuring buttons DetachedREs"); + //cgDetachedREs=new ControlGroup(); + btnShowDetachedREs=new RadioButton("radioDetachedREs"); btnShowDetachedREs.addClickHandler(new ClickHandler() { @@ -216,6 +223,31 @@ public class FilterAreaView extends ViewWithUiHandlers logger.log(Level.FINE, "FilterAreaView init end"); } + @Override + public void setEnvironment(EnvironmentData environmentData) { + logger.log(Level.FINE, "displayScopeData()"); + if(environmentData!=null&&environmentData.getAccountingServiceType()!=null){ + switch(environmentData.getAccountingServiceType()){ + case CurrentScope: + cgDetachedREs.setVisible(false); + break; + case Infrastructure: + cgDetachedREs.setVisible(true); + break; + case PortalContex: + cgDetachedREs.setVisible(false); + break; + default: + cgDetachedREs.setVisible(false); + break; + + } + } else { + cgDetachedREs.setVisible(false); + } + } + + @Override public void displayScopeData(ScopeData scopeData) { logger.log(Level.FINE, "displayScopeData()"); @@ -277,4 +309,6 @@ public class FilterAreaView extends ViewWithUiHandlers } + + } diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaView.ui.xml b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaView.ui.xml index 15fa6f1..46b8e2f 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaView.ui.xml +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/filter/FilterAreaView.ui.xml @@ -36,7 +36,7 @@ Select the end date - + Detached: diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardService.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardService.java index eeb4d41..29497e0 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardService.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardService.java @@ -3,6 +3,7 @@ package org.gcube.portlets.user.accountingdashboard.client.rpc; import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; import org.gcube.portlets.user.accountingdashboard.shared.exception.ServiceException; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.gcube.portlets.user.accountingdashboard.shared.session.UserInfo; @@ -31,4 +32,6 @@ public interface AccountingDashboardService extends RemoteService { public ReportData getReport(RequestReportData requestReportdata, TreeOptions treeOptions) throws ServiceException; + public EnvironmentData getEnvironment() throws ServiceException; + } diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardServiceAsync.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardServiceAsync.java index f5739b3..228bce6 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/rpc/AccountingDashboardServiceAsync.java @@ -6,6 +6,7 @@ package org.gcube.portlets.user.accountingdashboard.client.rpc; import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.gcube.portlets.user.accountingdashboard.shared.session.UserInfo; @@ -25,6 +26,8 @@ public interface AccountingDashboardServiceAsync { void hello(AsyncCallback callback); + void getEnvironment(AsyncCallback callback); + void getScopeData(TreeOptions treeOptions, AsyncCallback callback); void getReport(RequestReportData requestReportdata, TreeOptions treeOptions, diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/AccountingDashboardServiceImpl.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/AccountingDashboardServiceImpl.java index 998c4e3..4abba8d 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/AccountingDashboardServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/AccountingDashboardServiceImpl.java @@ -6,11 +6,12 @@ import org.gcube.common.scope.impl.ScopeBean; import org.gcube.common.scope.impl.ScopeBean.Type; import org.gcube.portlets.user.accountingdashboard.client.rpc.AccountingDashboardService; import org.gcube.portlets.user.accountingdashboard.server.accounting.AccountingService; -import org.gcube.portlets.user.accountingdashboard.server.accounting.AccountingServiceType; import org.gcube.portlets.user.accountingdashboard.server.util.ServiceCredentials; import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; +import org.gcube.portlets.user.accountingdashboard.shared.env.AccountingServiceType; +import org.gcube.portlets.user.accountingdashboard.shared.env.EnvironmentData; import org.gcube.portlets.user.accountingdashboard.shared.exception.ServiceException; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.gcube.portlets.user.accountingdashboard.shared.session.UserInfo; @@ -64,6 +65,23 @@ public class AccountingDashboardServiceImpl extends RemoteServiceServlet impleme } } + + @Override + public EnvironmentData getEnvironment() throws ServiceException { + try { + logger.debug("AccountingDashboardServiceImpl getEnvironment()"); + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest()); + AccountingServiceType accountingServiceType=getAccountingContext(serviceCredentials.getScope()); + EnvironmentData environmentData=new EnvironmentData(accountingServiceType); + return environmentData; + } catch (ServiceException e) { + logger.error(e.getLocalizedMessage(), e); + throw e; + } catch (Throwable e) { + logger.error("GetEnvironment(): " + e.getLocalizedMessage(), e); + throw new ServiceException("Error retrieving environment info: " + e.getLocalizedMessage(), e); + } + } @Override public ScopeData getScopeData(TreeOptions treeOptions) throws ServiceException { @@ -118,4 +136,6 @@ public class AccountingDashboardServiceImpl extends RemoteServiceServlet impleme } } + + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingService.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingService.java index 0900edf..704fc3f 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingService.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingService.java @@ -16,6 +16,7 @@ import org.gcube.portlets.user.accountingdashboard.shared.data.ReportElementData import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData; import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData; import org.gcube.portlets.user.accountingdashboard.shared.data.SeriesData; +import org.gcube.portlets.user.accountingdashboard.shared.env.AccountingServiceType; import org.gcube.portlets.user.accountingdashboard.shared.exception.ServiceException; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.slf4j.Logger; diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/PortalContextTreeProvider.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/PortalContextTreeProvider.java index 7b8666e..a668c1a 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/PortalContextTreeProvider.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/PortalContextTreeProvider.java @@ -20,6 +20,7 @@ import org.gcube.infrastructure.detachedres.detachedreslibrary.shared.re.VO; import org.gcube.portlets.user.accountingdashboard.server.is.BuildInfraNode; import org.gcube.portlets.user.accountingdashboard.server.util.CocktailSort; import org.gcube.portlets.user.accountingdashboard.server.util.CocktailSort.Order; +import org.gcube.portlets.user.accountingdashboard.shared.env.AccountingServiceType; import org.gcube.portlets.user.accountingdashboard.shared.is.InfraNode; import org.gcube.portlets.user.accountingdashboard.shared.options.TreeOptions; import org.gcube.vomanagement.usermanagement.GroupManager; diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingServiceType.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/AccountingServiceType.java similarity index 64% rename from src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingServiceType.java rename to src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/AccountingServiceType.java index 7570943..e52050d 100644 --- a/src/main/java/org/gcube/portlets/user/accountingdashboard/server/accounting/AccountingServiceType.java +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/AccountingServiceType.java @@ -1,4 +1,4 @@ -package org.gcube.portlets.user.accountingdashboard.server.accounting; +package org.gcube.portlets.user.accountingdashboard.shared.env; /** * diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/EnvironmentData.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/EnvironmentData.java new file mode 100644 index 0000000..61b1933 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/shared/env/EnvironmentData.java @@ -0,0 +1,38 @@ +package org.gcube.portlets.user.accountingdashboard.shared.env; + +import java.io.Serializable; + +/** + * + * @author Giancarlo Panichi + * + */ +public class EnvironmentData implements Serializable { + + private static final long serialVersionUID = 5817114786613046203L; + + private AccountingServiceType accountingServiceType; + + public EnvironmentData() { + super(); + } + + public EnvironmentData(AccountingServiceType accountingServiceType) { + super(); + this.accountingServiceType = accountingServiceType; + } + + public AccountingServiceType getAccountingServiceType() { + return accountingServiceType; + } + + public void setAccountingServiceType(AccountingServiceType accountingServiceType) { + this.accountingServiceType = accountingServiceType; + } + + @Override + public String toString() { + return "EnvironmentData [accountingServiceType=" + accountingServiceType + "]"; + } + +} diff --git a/src/test/java/org/gcube/portlets/user/accountingdashboard/AccountingServiceTest.java b/src/test/java/org/gcube/portlets/user/accountingdashboard/AccountingServiceTest.java index 96d12d2..526e0c7 100644 --- a/src/test/java/org/gcube/portlets/user/accountingdashboard/AccountingServiceTest.java +++ b/src/test/java/org/gcube/portlets/user/accountingdashboard/AccountingServiceTest.java @@ -1,8 +1,8 @@ package org.gcube.portlets.user.accountingdashboard; import org.gcube.portlets.user.accountingdashboard.server.accounting.AccountingService; -import org.gcube.portlets.user.accountingdashboard.server.accounting.AccountingServiceType; import org.gcube.portlets.user.accountingdashboard.shared.Constants; +import org.gcube.portlets.user.accountingdashboard.shared.env.AccountingServiceType; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory;