diff --git a/.classpath b/.classpath index 843009d..d03a6f4 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -45,5 +45,5 @@ - + diff --git a/distro/changelog.xml b/distro/changelog.xml index 3558ec8..3e13599 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,9 @@ + + Updated to AUTH2.0 + Added Job + Added CSV download [Ticket #4041] diff --git a/pom.xml b/pom.xml index b8130c6..86960e2 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ 4.0.0 org.gcube.portlets.admin accounting-manager - 1.3.0-SNAPSHOT + 1.4.0-SNAPSHOT war 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 16bdf96..1266f21 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,6 +1,9 @@ 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.maindata.charts.job.JobChartTopPanel; +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.AccountingClientStateData; import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob; import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException; @@ -16,12 +19,13 @@ import com.sencha.gxt.widget.core.client.container.SimpleContainer; * */ public class AccountingChart4Job extends AccountingChartBuilder { - + private AccountingClientStateData accountingStateData; private EventBus eventBus; - public AccountingChart4Job(EventBus eventBus, AccountingClientStateData accountingStateData) { - this.eventBus=eventBus; + public AccountingChart4Job(EventBus eventBus, + AccountingClientStateData accountingStateData) { + this.eventBus = eventBus; this.accountingStateData = accountingStateData; } @@ -50,16 +54,14 @@ public class AccountingChart4Job extends AccountingChartBuilder { } - private SimpleContainer createJobChartPanel() - throws ChartDrawException { + private SimpleContainer createJobChartPanel() throws ChartDrawException { if (accountingStateData == null || accountingStateData.getSeriesRequest() == null || accountingStateData.getSeriesRequest() .getAccountingFilterDefinition() == null || accountingStateData.getSeriesRequest() - .getAccountingFilterDefinition() - .getChartType() == null) { + .getAccountingFilterDefinition().getChartType() == null) { return null; } @@ -67,15 +69,10 @@ public class AccountingChart4Job extends AccountingChartBuilder { .getAccountingFilterDefinition().getChartType()) { case Top: - return null; - //return new JobChartTopPanel(accountingStateData); - //createJobChart(new JobChart4Top(accountingStateData)); + return new JobChartTopPanel(eventBus, accountingStateData); case Basic: return new JobChartBasicPanel(eventBus, accountingStateData); - //createJobChart(new JobChart4Basic( - //accountingStateData)); default: - return null; } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/menu/AccountingManagerMenu.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/menu/AccountingManagerMenu.java index b2187f5..f43429f 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/menu/AccountingManagerMenu.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/menu/AccountingManagerMenu.java @@ -52,6 +52,11 @@ public class AccountingManagerMenu extends TabPanel { EmptyPanel serviceCategory=new EmptyPanel(AccountingType.SERVICE.name()); add(serviceCategory, serviceItemConf); + TabItemConfig jobItemConf = new TabItemConfig("Job", false); + jobItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingJob48()); + EmptyPanel jobCategory=new EmptyPanel(AccountingType.JOB.name()); + add(jobCategory, jobItemConf); + /* TabItemConfig portletItemConf = new TabItemConfig("Portlet", false); @@ -65,10 +70,6 @@ public class AccountingManagerMenu extends TabPanel { add(taskCategory, taskItemConf); */ - /*TabItemConfig jobItemConf = new TabItemConfig("Job", false); - jobItemConf.setIcon(AccountingManagerResources.INSTANCE.accountingJob48()); - EmptyPanel jobCategory=new EmptyPanel(AccountingType.JOB.name()); - add(jobCategory, jobItemConf);*/ setActiveWidget(getWidget(0)); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png index f798abc..2939ef9 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png index 326b22c..5ef62f3 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png index 7bd40f1..bf24ddc 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png index d2fcd77..bb34e8e 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png index 2939ef9..f798abc 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png index 5ef62f3..326b22c 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png index bf24ddc..7bd40f1 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png index bb34e8e..d2fcd77 100644 Binary files a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png and b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png differ diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java index a2ca46a..27f08c9 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/ExportServlet.java @@ -157,7 +157,7 @@ public class ExportServlet extends HttpServlet { logger.error("Error in ExportServlet: " + e.getLocalizedMessage()); e.printStackTrace(); - throw new ServletException("Error:" + 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 7a932de..e137ee2 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 @@ -3,16 +3,10 @@ */ package org.gcube.portlets.admin.accountingmanager.server; -import static org.gcube.common.authorization.client.Constants.authorizationService; - -import java.util.ArrayList; -import java.util.List; - import javax.servlet.http.HttpSession; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; -import org.gcube.common.authorization.library.provider.UserInfo; 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; @@ -23,8 +17,6 @@ import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpire import org.slf4j.Logger; import org.slf4j.LoggerFactory; - - /** * * @author "Giancarlo Panichi" userRoles = new ArrayList<>(); - userRoles.add(Constants.DEFAULT_ROLE); - /* - * if (aslSession.getUsername().compareTo("lucio.lelii") == 0) - * userRoles.add("VRE-Manager"); - */ - try { - token = authorizationService().generateUserToken( - new UserInfo(aslSession.getUsername(), userRoles), - aslSession.getScope()); - } catch (Exception e) { - logger.error("Error generating the token for test: "+e.getLocalizedMessage()); - e.printStackTrace(); - throw new ServiceException("Error generating the token for test: "+e.getLocalizedMessage()); - } - + token = Constants.DEFAULT_TOKEN; } else { token = aslSession.getSecurityToken(); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobBasic.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobBasic.java index 74f668d..3058031 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobBasic.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobBasic.java @@ -5,9 +5,11 @@ import java.util.List; import org.gcube.accounting.analytics.Info; import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord; +import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobBasic; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobData; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceData; import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; import org.json.JSONObject; import org.slf4j.Logger; @@ -34,28 +36,25 @@ public class SeriesResponse4JobBasic extends SeriesResponseBuilder { try { if (infos.size() <= 0) { logger.error("Error creating series for job accounting: No data available!"); - throw new ServiceException( - "No data available!"); + throw new ServiceException("No data available!"); } ArrayList series = new ArrayList(); for (Info info : infos) { JSONObject jso = info.getValue(); - // Long duration = - // jso.getLong(AggregatedJobUsageRecord.DURATION); + Long duration = jso.getLong(AggregatedJobUsageRecord.DURATION); Long operationCount = jso .getLong(AggregatedJobUsageRecord.OPERATION_COUNT); - // Long maxInvocationTime = - // jso.getLong(AggregatedServiceUsageRecord.MAX_INVOCATION_TIME); - // Long minInvocationTime = - // jso.getLong(AggregatedServiceUsageRecord.MIN_INVOCATION_TIME); + Long maxInvocationTime = jso + .getLong(AggregatedJobUsageRecord.MAX_INVOCATION_TIME); + Long minInvocationTime = jso + .getLong(AggregatedJobUsageRecord.MIN_INVOCATION_TIME); series.add(new SeriesJobData(info.getCalendar().getTime(), - operationCount, operationCount, operationCount, - operationCount)); + operationCount, duration, maxInvocationTime, + minInvocationTime)); } - SeriesJobBasic seriesJobBasic = new SeriesJobBasic(series); SeriesJob seriesJob = new SeriesJob(seriesJobBasic); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobTop.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobTop.java index 8655bfd..872e7f1 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobTop.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4JobTop.java @@ -7,11 +7,16 @@ import java.util.SortedMap; import org.gcube.accounting.analytics.Info; import org.gcube.accounting.analytics.NumberedFilter; import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord; +import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue; import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobData; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobDataTop; import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobTop; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceData; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceDataTop; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceTop; import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; import org.json.JSONObject; import org.slf4j.Logger; @@ -43,8 +48,10 @@ public class SeriesResponse4JobTop extends SeriesResponseBuilder { try { if (topSM == null || topSM.isEmpty()) { logger.error("Error creating series for job accounting: No data available!"); - throw new ServiceException("No data available!"); + throw new ServiceException( + "No data available!"); } + ArrayList seriesJobDataTopList = new ArrayList<>(); @@ -54,18 +61,19 @@ public class SeriesResponse4JobTop extends SeriesResponseBuilder { SortedMap infos = topSM.get(topValue); for (Info info : infos.values()) { JSONObject jso = info.getValue(); - // Long duration = - // jso.getLong(AggregatedJobUsageRecord.DURATION); + Long duration = jso + .getLong(AggregatedServiceUsageRecord.DURATION); Long operationCount = jso - .getLong(AggregatedJobUsageRecord.OPERATION_COUNT); - // Long maxInvocationTime = - // jso.getLong(AggregatedJobUsageRecord.MAX_INVOCATION_TIME); - // Long minInvocationTime = - // jso.getLong(AggregatedJobUsageRecord.MIN_INVOCATION_TIME); + .getLong(AggregatedServiceUsageRecord.OPERATION_COUNT); + Long maxInvocationTime = jso + .getLong(AggregatedServiceUsageRecord.MAX_INVOCATION_TIME); + Long minInvocationTime = jso + .getLong(AggregatedServiceUsageRecord.MIN_INVOCATION_TIME); + + series.add(new SeriesJobData(info.getCalendar() + .getTime(), operationCount, duration, + maxInvocationTime, minInvocationTime)); - series.add(new SeriesJobData(info.getCalendar().getTime(), - operationCount, operationCount, operationCount, - operationCount)); } SeriesJobDataTop seriesJobDataTop = new SeriesJobDataTop( new FilterValue(topValue.getValue()), series); @@ -73,11 +81,11 @@ public class SeriesResponse4JobTop extends SeriesResponseBuilder { } - SeriesJobTop seriesJobTop = new SeriesJobTop(showOthers, topNumber, + SeriesJobTop seriesJobTop = new SeriesJobTop(showOthers,topNumber, seriesJobDataTopList); - SeriesJob seriesJob = new SeriesJob(seriesJobTop); + SeriesJob seriesService = new SeriesJob(seriesJobTop); - seriesResponseSpec.setSr(seriesJob); + seriesResponseSpec.setSr(seriesService); } catch (Throwable e) { logger.error("Error creating series for job accounting top chart: " diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceBasic.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceBasic.java index 0821e47..7f9ca50 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceBasic.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceBasic.java @@ -26,39 +26,48 @@ public class SeriesResponse4ServiceBasic extends SeriesResponseBuilder { private List infos; public SeriesResponse4ServiceBasic(List infos) { - this.infos=infos; + this.infos = infos; } @Override public void buildSeriesResponse() throws ServiceException { try { - if(infos.size()<=0){ + if (infos.size() <= 0) { logger.error("Error creating series for service accounting: No data available!"); throw new ServiceException("No data available!"); } - - ArrayList series=new ArrayList(); + + ArrayList series = new ArrayList(); for (Info info : infos) { JSONObject jso = info.getValue(); - Long duration = jso.getLong(AggregatedServiceUsageRecord.DURATION); + Long duration = jso + .getLong(AggregatedServiceUsageRecord.DURATION); Long operationCount = jso .getLong(AggregatedServiceUsageRecord.OPERATION_COUNT); - Long maxInvocationTime = jso.getLong(AggregatedServiceUsageRecord.MAX_INVOCATION_TIME); - Long minInvocationTime = jso.getLong(AggregatedServiceUsageRecord.MIN_INVOCATION_TIME); - - series.add(new SeriesServiceData(info.getCalendar().getTime(), operationCount, duration, maxInvocationTime, minInvocationTime)); - + Long maxInvocationTime = jso + .getLong(AggregatedServiceUsageRecord.MAX_INVOCATION_TIME); + Long minInvocationTime = jso + .getLong(AggregatedServiceUsageRecord.MIN_INVOCATION_TIME); + + series.add(new SeriesServiceData(info.getCalendar().getTime(), + operationCount, duration, maxInvocationTime, + minInvocationTime)); + } - SeriesServiceBasic seriesServiceBasic=new SeriesServiceBasic(series); - + SeriesServiceBasic seriesServiceBasic = new SeriesServiceBasic( + series); + SeriesService seriesService = new SeriesService(seriesServiceBasic); seriesResponseSpec.setSr(seriesService); } catch (Throwable e) { - logger.error("Error creating series for service accounting chart basic: "+e.getLocalizedMessage()); + logger.error("Error creating series for service accounting chart basic: " + + e.getLocalizedMessage()); e.printStackTrace(); - throw new ServiceException("Error creating series for service accounting chart basic: "+e.getLocalizedMessage()); + throw new ServiceException( + "Error creating series for service accounting chart basic: " + + e.getLocalizedMessage()); } } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceTop.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceTop.java index 8bca0d3..316cce7 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceTop.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/response/SeriesResponse4ServiceTop.java @@ -33,8 +33,8 @@ public class SeriesResponse4ServiceTop extends SeriesResponseBuilder { public SeriesResponse4ServiceTop(Boolean showOthers, Integer topNumber, SortedMap> topSM) { - this.showOthers=showOthers; - this.topNumber=topNumber; + this.showOthers = showOthers; + this.topNumber = topNumber; this.topSM = topSM; } @@ -43,10 +43,8 @@ public class SeriesResponse4ServiceTop extends SeriesResponseBuilder { try { if (topSM == null || topSM.isEmpty()) { logger.error("Error creating series for service accounting: No data available!"); - throw new ServiceException( - "No data available!"); + throw new ServiceException("No data available!"); } - ArrayList seriesServiceDataTopList = new ArrayList<>(); @@ -76,8 +74,8 @@ public class SeriesResponse4ServiceTop extends SeriesResponseBuilder { } - SeriesServiceTop seriesServiceTop = new SeriesServiceTop(showOthers,topNumber, - seriesServiceDataTopList); + SeriesServiceTop seriesServiceTop = new SeriesServiceTop( + showOthers, topNumber, seriesServiceDataTopList); SeriesService seriesService = new SeriesService(seriesServiceTop); seriesResponseSpec.setSr(seriesService); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java index f0eb799..d0a7504 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/CSVManager.java @@ -11,6 +11,7 @@ import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataRow; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Job; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; @@ -62,6 +63,8 @@ public class CSVManager { accountingModelBuilder = new AccountingModel4Storage(accountingStateData); break; case JOB: + accountingModelBuilder = new AccountingModel4Job(accountingStateData); + break; case PORTLET: case TASK: default: @@ -157,6 +160,8 @@ public class CSVManager { accountindModelBuilder = new AccountingModel4Storage(accountingStateData); break; case JOB: + accountindModelBuilder = new AccountingModel4Job(accountingStateData); + break; case PORTLET: case TASK: default: diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java index d0d72d4..2185288 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/JSONManager.java @@ -10,6 +10,7 @@ import java.nio.file.StandardOpenOption; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataRow; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Job; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; @@ -66,6 +67,9 @@ public class JSONManager { accountingStateData); break; case JOB: + accountingModelBuilder = new AccountingModel4Job( + accountingStateData); + break; case PORTLET: case TASK: default: @@ -174,6 +178,9 @@ public class JSONManager { accountingStateData); break; case JOB: + accountingModelBuilder = new AccountingModel4Job( + accountingStateData); + break; case PORTLET: case TASK: default: diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java index 943db60..1895a77 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/XMLManager.java @@ -9,6 +9,7 @@ import java.nio.file.Path; import java.nio.file.StandardOpenOption; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingDataModel; +import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Job; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Service; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModel4Storage; import org.gcube.portlets.admin.accountingmanager.server.export.model.AccountingModelBuilder; @@ -63,6 +64,9 @@ public class XMLManager { accountingStateData); break; case JOB: + accountingModelBuilder = new AccountingModel4Job( + accountingStateData); + break; case PORTLET: case TASK: default: @@ -157,6 +161,8 @@ public class XMLManager { accountingStateData); break; case JOB: + accountingModelBuilder = new AccountingModel4Job( + accountingStateData); case PORTLET: case TASK: default: diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Job.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Job.java new file mode 100644 index 0000000..564b155 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/export/model/AccountingModel4Job.java @@ -0,0 +1,150 @@ +package org.gcube.portlets.admin.accountingmanager.server.export.model; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Arrays; + +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.SeriesJob; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobBasic; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobData; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobDataTop; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobDefinition; +import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobTop; +import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Accounting Model 4 Job + * + * @author "Giancarlo Panichi" email: g.panichi@isti.cnr.it + * + */ +public class AccountingModel4Job extends AccountingModelBuilder { + protected static Logger logger = LoggerFactory + .getLogger(AccountingModel4Job.class); + private AccountingStateData accountingStateData; + + public AccountingModel4Job(AccountingStateData accountingStateData) { + this.accountingStateData = accountingStateData; + } + + @Override + public void buildOpEx() throws ServiceException { + SeriesRequest seriesRequest = accountingStateData.getSeriesRequest(); + + if (seriesRequest == null) { + logger.error("Error series request is null"); + throw new ServiceException( + "Error series request is null"); + + } + + 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(); + + SeriesResponse seriesResponse = accountingStateData.getSeriesResponse(); + + if (seriesResponse == null) { + logger.error("Error series response is null"); + throw new ServiceException( + "Error series response is null"); + } + + String fileName = "Untitled"; + ArrayList header; + ArrayList rows = new ArrayList<>(); + if (seriesResponse instanceof SeriesJob) { + SeriesJob seriesService = (SeriesJob) seriesResponse; + SeriesJobDefinition definition = seriesService + .getSeriesJobDefinition(); + if (definition instanceof SeriesJobBasic) { + SeriesJobBasic seriesJobBasic = (SeriesJobBasic) definition; + fileName = "Job_" + periodType + "_" + startDate + "_" + + endDate; + header = new ArrayList<>(Arrays.asList(new String[] { "Date", + "Operation Count", "Duration", "Max Invocation", + "Min Invocation" })); + ArrayList listData = seriesJobBasic + .getSeries(); + for (SeriesJobData seriesData : listData) { + ArrayList data = new ArrayList<>(); + data.add(sdfCSVDate.format(seriesData.getDate())); + data.add(String.valueOf(seriesData.getOperationCount())); + data.add(String.valueOf(seriesData.getDuration())); + data.add(String.valueOf(seriesData.getMaxInvocationTime())); + data.add(String.valueOf(seriesData.getMinInvocationTime())); + AccountingDataRow csvDataRow = new AccountingDataRow(data); + rows.add(csvDataRow); + } + } else { + if (definition instanceof SeriesJobTop) { + SeriesJobTop seriesJobTop = (SeriesJobTop) definition; + fileName = "JobTop_" + periodType + "_" + startDate + + "_" + endDate; + header = new ArrayList<>(Arrays.asList(new String[] { + "Value", "Date", "Operation Count", "Duration", + "Max Invocation", "Min Invocation" })); + ArrayList listDataTop = seriesJobTop + .getSeriesJobDataTopList(); + for (SeriesJobDataTop seriesDataTop : listDataTop) { + FilterValue filterValue = seriesDataTop + .getFilterValue(); + ArrayList listData = seriesDataTop + .getSeries(); + for (SeriesJobData seriesData : listData) { + ArrayList data = new ArrayList<>(); + data.add(filterValue.getValue()); + data.add(sdfCSVDate.format(seriesData.getDate())); + data.add(String.valueOf(seriesData + .getOperationCount())); + data.add(String.valueOf(seriesData.getDuration())); + data.add(String.valueOf(seriesData + .getMaxInvocationTime())); + data.add(String.valueOf(seriesData + .getMinInvocationTime())); + AccountingDataRow csvDataRow = new AccountingDataRow(data); + rows.add(csvDataRow); + } + } + } else { + logger.error("Unsupported Serie Definition for Job: " + + definition); + throw new ServiceException( + "Unsupported Serie Definition for Job: " + + definition); + } + } + } else { + logger.error("Job not support this serie response: " + + seriesResponse); + throw new ServiceException( + "Job not support this serie response: " + + seriesResponse); + } + + AccountingDataModel invocation = new AccountingDataModel(fileName, header, rows); + accountingModelSpec.setOp(invocation); + + } +} 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 ebf9e31..397f980 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 @@ -14,13 +14,8 @@ public class Constants { public static final String AM_LANG_COOKIE = "AMLangCookie"; public static final String AM_LANG = "AMLang"; public static final String DEFAULT_USER = "giancarlo.panichi"; - //public final static String DEFAULT_USER = "test.user"; - //public final static String DEFAULT_SCOPE = "/gcube/devNext"; - //public final static String DEFAULT_SCOPE = "/gcube/devsec/devVRE"; - - //public final static String DEFAULT_SCOPE = "/gcube/devNext/NextNext"; - - public static final String DEFAULT_SCOPE = "/gcube"; + public final static String DEFAULT_SCOPE = "/gcube/devNext"; + public final static String DEFAULT_TOKEN = "16e65d4f-11e0-4e4a-84b9-351688fccc12-98187548"; public static final String DEFAULT_ROLE = "OrganizationMember"; public static final String EXPORT_SERVLET="ExportServlet"; diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png index f798abc..2939ef9 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_128.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png index 326b22c..5ef62f3 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_24.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png index 7bd40f1..bf24ddc 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_32.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png index d2fcd77..bb34e8e 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-job_48.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png index 2939ef9..f798abc 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_128.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png index 5ef62f3..326b22c 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_24.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png index bf24ddc..7bd40f1 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_32.png differ diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png index bb34e8e..d2fcd77 100644 Binary files a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png and b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-task_48.png differ