ref 8397:Accounting Manager - Add the Spaces management
https://support.d4science.org/issues/8397 Added the Spaces management git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/accounting-manager@148337 82a268e6-3cf1-43bd-a215-b396298e98cf
|
@ -1,12 +1,12 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/accounting-manager-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/accounting-manager-1.7.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry excluding="**" kind="src" output="target/accounting-manager-1.6.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
<classpathentry excluding="**" kind="src" output="target/accounting-manager-1.7.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
|
@ -45,5 +45,5 @@
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA.jar" sourcepath="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA-sources.jar"/>
|
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA.jar" sourcepath="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA-sources.jar"/>
|
||||||
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA-sources.jar"/>
|
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.6.1/validation-api-1.0.0.GA-sources.jar"/>
|
||||||
<classpathentry kind="output" path="target/accounting-manager-1.6.0-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/accounting-manager-1.7.0-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
<ReleaseNotes>
|
<ReleaseNotes>
|
||||||
|
<Changeset component="org.gcube.portlets.admin.accounting-manager.1-7-0"
|
||||||
|
date="2017-06-12">
|
||||||
|
<Change>Added Spaces chart [Ticket #8397]</Change>
|
||||||
|
</Changeset>
|
||||||
<Changeset component="org.gcube.portlets.admin.accounting-manager.1-6-0"
|
<Changeset component="org.gcube.portlets.admin.accounting-manager.1-6-0"
|
||||||
date="2017-02-28">
|
date="2017-02-28">
|
||||||
<Change>Fixed download in case of multitab on different scopes</Change>
|
<Change>Fixed download in case of multitab on different scopes</Change>
|
||||||
|
|
2
pom.xml
|
@ -13,7 +13,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.gcube.portlets.admin</groupId>
|
<groupId>org.gcube.portlets.admin</groupId>
|
||||||
<artifactId>accounting-manager</artifactId>
|
<artifactId>accounting-manager</artifactId>
|
||||||
<version>1.6.0-SNAPSHOT</version>
|
<version>1.7.0-SNAPSHOT</version>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,11 +24,13 @@ import org.gcube.portlets.admin.accountingmanager.client.type.UIStateType;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.util.UtilsGXT3;
|
import org.gcube.portlets.admin.accountingmanager.client.util.UtilsGXT3;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.Constants;
|
import org.gcube.portlets.admin.accountingmanager.shared.Constants;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterBasic;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterBasic;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterSpaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriod;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriod;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriodMode;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriodMode;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
||||||
|
@ -189,7 +191,9 @@ public class AccountingManagerController {
|
||||||
} else {
|
} else {
|
||||||
this.enableTabs = enableTabs;
|
this.enableTabs = enableTabs;
|
||||||
EnableTabsEvent event = new EnableTabsEvent(enableTabs);
|
EnableTabsEvent event = new EnableTabsEvent(enableTabs);
|
||||||
|
Log.debug("Fire: " + event);
|
||||||
eventBus.fireEvent(event);
|
eventBus.fireEvent(event);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,6 +304,7 @@ public class AccountingManagerController {
|
||||||
case STORAGE:
|
case STORAGE:
|
||||||
case TASK:
|
case TASK:
|
||||||
case JOB:
|
case JOB:
|
||||||
|
case SPACE:
|
||||||
Log.debug("AccountingType: " + event.getAccountingType());
|
Log.debug("AccountingType: " + event.getAccountingType());
|
||||||
accountingStateData = accountingState.getState(event
|
accountingStateData = accountingState.getState(event
|
||||||
.getAccountingType());
|
.getAccountingType());
|
||||||
|
@ -322,29 +327,17 @@ public class AccountingManagerController {
|
||||||
if (enableTabs != null && enableTabs.getTabs() != null
|
if (enableTabs != null && enableTabs.getTabs() != null
|
||||||
&& enableTabs.getTabs().size() > 0
|
&& enableTabs.getTabs().size() > 0
|
||||||
&& enableTabs.getTabs().get(0) != null) {
|
&& enableTabs.getTabs().get(0) != null) {
|
||||||
|
Log.debug("Create DefaultChart");
|
||||||
createDefaultChart(enableTabs.getTabs().get(0).getAccountingType());
|
createDefaultChart(enableTabs.getTabs().get(0).getAccountingType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createDefaultChart(AccountingType accountingType) {
|
private void createDefaultChart(AccountingType accountingType) {
|
||||||
accountingMonitor = new AccountingMonitor();
|
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());
|
|
||||||
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));
|
|
||||||
this.accountingType = accountingType;
|
this.accountingType = accountingType;
|
||||||
|
|
||||||
AccountingClientStateData accountingStateData = new AccountingClientStateData(
|
AccountingClientStateData accountingStateData = new AccountingClientStateData(
|
||||||
accountingType, seriesRequest, null, null, null, rootScope);
|
accountingType, rootScope);
|
||||||
accountingState.setState(accountingType, accountingStateData);
|
accountingState.setState(accountingType, accountingStateData);
|
||||||
|
|
||||||
retrieveFilterKey();
|
retrieveFilterKey();
|
||||||
|
@ -415,12 +408,90 @@ public class AccountingManagerController {
|
||||||
accountingStateData.setAvailableContext(result);
|
accountingStateData.setAvailableContext(result);
|
||||||
accountingState.setState(accountingType,
|
accountingState.setState(accountingType,
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
callDefaultSeriesRequest();
|
retrieveSpace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void retrieveSpace() {
|
||||||
|
if (rootScope) {
|
||||||
|
|
||||||
|
AccountingManagerServiceAsync.INSTANCE
|
||||||
|
.getSpaces(new AsyncCallback<Spaces>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
accountingMonitor.hide();
|
||||||
|
if (caught instanceof SessionExpiredException) {
|
||||||
|
eventBus.fireEvent(new SessionExpiredEvent(
|
||||||
|
SessionExpiredType.EXPIREDONSERVER));
|
||||||
|
} else {
|
||||||
|
Log.error("Error retrieving sapces for "
|
||||||
|
+ accountingType + ":"
|
||||||
|
+ caught.getLocalizedMessage());
|
||||||
|
UtilsGXT3.alert("Error retrieving spaces ",
|
||||||
|
caught.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Spaces result) {
|
||||||
|
Log.debug("Available Spaces: " + result);
|
||||||
|
createDefaultSeriesRequest(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
createDefaultSeriesRequest(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createDefaultSeriesRequest(Spaces spaces) {
|
||||||
|
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());
|
||||||
|
CalendarUtil.addMonthsToDate(lastMonth, -1);
|
||||||
|
Log.debug("LastMoth= " + dtf.format(lastMonth) + " , date="
|
||||||
|
+ dtf.format(date));
|
||||||
|
|
||||||
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
|
.getState(accountingType);
|
||||||
|
SeriesRequest seriesRequest = null;
|
||||||
|
|
||||||
|
switch (accountingType) {
|
||||||
|
case JOB:
|
||||||
|
case PORTLET:
|
||||||
|
case SERVICE:
|
||||||
|
case STORAGE:
|
||||||
|
case TASK:
|
||||||
|
seriesRequest = new SeriesRequest(new AccountingPeriod(
|
||||||
|
dtf.format(lastMonth), dtf.format(date),
|
||||||
|
AccountingPeriodMode.DAILY), new AccountingFilterBasic());
|
||||||
|
Log.debug("DefaultSeriesRequest: " + seriesRequest);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case SPACE:
|
||||||
|
accountingStateData.setAvailableSpaces(spaces);
|
||||||
|
seriesRequest = new SeriesRequest(new AccountingPeriod(
|
||||||
|
dtf.format(lastMonth), dtf.format(date),
|
||||||
|
AccountingPeriodMode.DAILY), new AccountingFilterSpaces(
|
||||||
|
spaces));
|
||||||
|
Log.debug("DefaultSeriesRequest: " + seriesRequest);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
accountingStateData.setSeriesRequest(seriesRequest);
|
||||||
|
accountingState.setState(accountingType, accountingStateData);
|
||||||
|
callDefaultSeriesRequest();
|
||||||
|
}
|
||||||
|
|
||||||
private void callDefaultSeriesRequest() {
|
private void callDefaultSeriesRequest() {
|
||||||
|
|
||||||
AccountingManagerServiceAsync.INSTANCE.getSeriesInCache(accountingType,
|
AccountingManagerServiceAsync.INSTANCE.getSeriesInCache(accountingType,
|
||||||
|
@ -461,13 +532,12 @@ public class AccountingManagerController {
|
||||||
caught.getLocalizedMessage());
|
caught.getLocalizedMessage());
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Restore, accountingState.getState(accountingType));
|
StateChangeType.Restore, accountingState
|
||||||
|
.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -493,10 +563,8 @@ public class AccountingManagerController {
|
||||||
+ operationId);
|
+ operationId);
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Restore, accountingState
|
StateChangeType.Restore, accountingState
|
||||||
|
@ -520,10 +588,8 @@ public class AccountingManagerController {
|
||||||
caught.getLocalizedMessage());
|
caught.getLocalizedMessage());
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Restore, accountingState
|
StateChangeType.Restore, accountingState
|
||||||
|
@ -612,10 +678,8 @@ public class AccountingManagerController {
|
||||||
UtilsGXT3.alert("Error Time Out", "Time Out");
|
UtilsGXT3.alert("Error Time Out", "Time Out");
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Restore,
|
StateChangeType.Restore,
|
||||||
|
@ -698,13 +762,12 @@ public class AccountingManagerController {
|
||||||
caught.printStackTrace();
|
caught.printStackTrace();
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Update, accountingState.getState(accountingType));
|
StateChangeType.Update, accountingState
|
||||||
|
.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -729,13 +792,12 @@ public class AccountingManagerController {
|
||||||
+ operationId);
|
+ operationId);
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Update, accountingState.getState(accountingType));
|
StateChangeType.Update, accountingState
|
||||||
|
.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
} else {
|
} else {
|
||||||
operationMonitor(operationId);
|
operationMonitor(operationId);
|
||||||
|
@ -755,13 +817,12 @@ public class AccountingManagerController {
|
||||||
caught.printStackTrace();
|
caught.printStackTrace();
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Update, accountingState.getState(accountingType));
|
StateChangeType.Update, accountingState
|
||||||
|
.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -826,7 +887,9 @@ public class AccountingManagerController {
|
||||||
accountingType,
|
accountingType,
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Update, accountingState.getState(accountingType));
|
StateChangeType.Update,
|
||||||
|
accountingState
|
||||||
|
.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -842,13 +905,12 @@ public class AccountingManagerController {
|
||||||
UtilsGXT3.alert("Error Time Out", "Time Out");
|
UtilsGXT3.alert("Error Time Out", "Time Out");
|
||||||
AccountingClientStateData accountingStateData = accountingState
|
AccountingClientStateData accountingStateData = accountingState
|
||||||
.getState(accountingType);
|
.getState(accountingType);
|
||||||
accountingStateData
|
accountingStateData.setSeriesResponse(null);
|
||||||
.setSeriesResponse(null);
|
accountingState.setState(accountingType,
|
||||||
accountingState.setState(
|
|
||||||
accountingType,
|
|
||||||
accountingStateData);
|
accountingStateData);
|
||||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||||
StateChangeType.Update, accountingState.getState(accountingType));
|
StateChangeType.Update,
|
||||||
|
accountingState.getState(accountingType));
|
||||||
eventBus.fireEvent(stateChangeEvent);
|
eventBus.fireEvent(stateChangeEvent);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEve
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
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.monitor.AccountingMonitor;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingFilterProperties;
|
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingFilterProperties;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.properties.ContextDataProperties;
|
import org.gcube.portlets.admin.accountingmanager.client.properties.GenresDataProperties;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
|
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.rpc.AccountingManagerServiceAsync;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
|
import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
|
||||||
|
@ -19,13 +19,15 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilter;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterBasic;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterBasic;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterContext;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterContext;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterDefinition;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterDefinition;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterSpaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterTop;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterTop;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.ChartType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.ChartType;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.ContextData;
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.GenresData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
||||||
|
|
||||||
import com.allen_sauer.gwt.log.client.Log;
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
@ -105,9 +107,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
private EventBus eventBus;
|
private EventBus eventBus;
|
||||||
private Grid<AccountingFilter> gridFilter;
|
private Grid<AccountingFilter> gridFilter;
|
||||||
private ListStore<AccountingFilter> storeFilter;
|
private ListStore<AccountingFilter> storeFilter;
|
||||||
private Grid<ContextData> gridContext;
|
private Grid<GenresData> gridGenres;
|
||||||
private ListStore<ContextData> storeContext;
|
private ListStore<GenresData> storeGenres;
|
||||||
private CheckBoxSelectionModel<ContextData> smContext;
|
private CheckBoxSelectionModel<GenresData> smGenres;
|
||||||
|
private ColumnConfig<GenresData, String> labelGenresCol;
|
||||||
private boolean addStatus;
|
private boolean addStatus;
|
||||||
private AccountingClientStateData accountingStateData;
|
private AccountingClientStateData accountingStateData;
|
||||||
private ListStore<FilterKey> storeComboFilterKey;
|
private ListStore<FilterKey> storeComboFilterKey;
|
||||||
|
@ -117,6 +120,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
private GridRowEditing<AccountingFilter> editing;
|
private GridRowEditing<AccountingFilter> editing;
|
||||||
private TextButton addButton;
|
private TextButton addButton;
|
||||||
private int seq;
|
private int seq;
|
||||||
|
private FieldLabel comboChartTypeLabel;
|
||||||
private ListStore<ChartType> storeComboChartType;
|
private ListStore<ChartType> storeComboChartType;
|
||||||
private ComboBox<ChartType> comboChartType;
|
private ComboBox<ChartType> comboChartType;
|
||||||
private ListStore<FilterKey> storeComboTopFilterKey;
|
private ListStore<FilterKey> storeComboTopFilterKey;
|
||||||
|
@ -415,7 +419,6 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
storeComboChartType.addAll(ChartType.asList());
|
|
||||||
|
|
||||||
LabelProvider<ChartType> comboChartTypeLabelProvider = new LabelProvider<ChartType>() {
|
LabelProvider<ChartType> comboChartTypeLabelProvider = new LabelProvider<ChartType>() {
|
||||||
|
|
||||||
|
@ -428,16 +431,16 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
};
|
};
|
||||||
|
|
||||||
// /Grid Context
|
// /Grid Context
|
||||||
ContextDataProperties propsContextData = GWT
|
GenresDataProperties propsGenresData = GWT
|
||||||
.create(ContextDataProperties.class);
|
.create(GenresDataProperties.class);
|
||||||
|
|
||||||
IdentityValueProvider<ContextData> identity = new IdentityValueProvider<ContextData>();
|
IdentityValueProvider<GenresData> identity = new IdentityValueProvider<GenresData>();
|
||||||
smContext = new CheckBoxSelectionModel<ContextData>(identity);
|
smGenres = new CheckBoxSelectionModel<GenresData>(identity);
|
||||||
|
|
||||||
ColumnConfig<ContextData, String> labelCol = new ColumnConfig<ContextData, String>(
|
labelGenresCol = new ColumnConfig<GenresData, String>(
|
||||||
propsContextData.label(), 356, "Scope");
|
propsGenresData.label(), 356, "Genres");
|
||||||
|
|
||||||
labelCol.setCell(new AbstractCell<String>() {
|
labelGenresCol.setCell(new AbstractCell<String>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Context context, String value, SafeHtmlBuilder sb) {
|
public void render(Context context, String value, SafeHtmlBuilder sb) {
|
||||||
|
@ -450,26 +453,26 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
List<ColumnConfig<ContextData, ?>> lContext = new ArrayList<ColumnConfig<ContextData, ?>>();
|
List<ColumnConfig<GenresData, ?>> lGenres = new ArrayList<ColumnConfig<GenresData, ?>>();
|
||||||
lContext.add(smContext.getColumn());
|
lGenres.add(smGenres.getColumn());
|
||||||
lContext.add(labelCol);
|
lGenres.add(labelGenresCol);
|
||||||
ColumnModel<ContextData> cmContextData = new ColumnModel<ContextData>(
|
ColumnModel<GenresData> cmGenresData = new ColumnModel<GenresData>(
|
||||||
lContext);
|
lGenres);
|
||||||
|
|
||||||
storeContext = new ListStore<ContextData>(propsContextData.id());
|
storeGenres = new ListStore<GenresData>(propsGenresData.id());
|
||||||
|
|
||||||
gridContext = new Grid<ContextData>(storeContext, cmContextData);
|
gridGenres = new Grid<GenresData>(storeGenres, cmGenresData);
|
||||||
|
|
||||||
sm.setSelectionMode(SelectionMode.MULTI);
|
sm.setSelectionMode(SelectionMode.MULTI);
|
||||||
gridContext.setHeight("130px");
|
gridGenres.setHeight("130px");
|
||||||
gridContext.setSelectionModel(smContext);
|
gridGenres.setSelectionModel(smGenres);
|
||||||
gridContext.getView().setStripeRows(true);
|
gridGenres.getView().setStripeRows(true);
|
||||||
gridContext.getView().setColumnLines(true);
|
gridGenres.getView().setColumnLines(true);
|
||||||
gridContext.getView().setAutoFill(true);
|
gridGenres.getView().setAutoFill(true);
|
||||||
gridContext.setBorders(true);
|
gridGenres.setBorders(true);
|
||||||
gridContext.setColumnReordering(false);
|
gridGenres.setColumnReordering(false);
|
||||||
gridContext.getView().setAutoExpandColumn(labelCol);
|
gridGenres.getView().setAutoExpandColumn(labelGenresCol);
|
||||||
gridContext.getView().setSortingEnabled(true);
|
gridGenres.getView().setSortingEnabled(true);
|
||||||
|
|
||||||
// /
|
// /
|
||||||
|
|
||||||
|
@ -486,7 +489,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
comboChartType.setTriggerAction(TriggerAction.ALL);
|
comboChartType.setTriggerAction(TriggerAction.ALL);
|
||||||
addHandlersForComboChartType(comboChartTypeLabelProvider);
|
addHandlersForComboChartType(comboChartTypeLabelProvider);
|
||||||
|
|
||||||
FieldLabel comboChartTypeLabel = new FieldLabel(comboChartType, "Chart");
|
comboChartTypeLabel = new FieldLabel(comboChartType, "Chart");
|
||||||
|
|
||||||
// FileterKeyCombo for Top Chart
|
// FileterKeyCombo for Top Chart
|
||||||
storeComboTopFilterKey = new ListStore<FilterKey>(
|
storeComboTopFilterKey = new ListStore<FilterKey>(
|
||||||
|
@ -582,7 +585,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
vlc.add(comboChartTypeLabel, new VerticalLayoutData(1, -1, new Margins(
|
vlc.add(comboChartTypeLabel, new VerticalLayoutData(1, -1, new Margins(
|
||||||
0)));
|
0)));
|
||||||
vlc.add(gridContext, new VerticalLayoutData(1, -1, new Margins(0)));
|
vlc.add(gridGenres, new VerticalLayoutData(1, -1, new Margins(0)));
|
||||||
vlc.add(noContextLabel, new VerticalLayoutData(1, -1, new Margins(0)));
|
vlc.add(noContextLabel, new VerticalLayoutData(1, -1, new Margins(0)));
|
||||||
vlc.add(comboTopFilterKeyLabel, new VerticalLayoutData(1, -1,
|
vlc.add(comboTopFilterKeyLabel, new VerticalLayoutData(1, -1,
|
||||||
new Margins(0)));
|
new Margins(0)));
|
||||||
|
@ -598,7 +601,8 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
fieldSet.add(vlc);
|
fieldSet.add(vlc);
|
||||||
|
|
||||||
add(fieldSet, new MarginData(0));
|
add(fieldSet, new MarginData(0));
|
||||||
gridContext.setVisible(false);
|
comboChartTypeLabel.setVisible(false);
|
||||||
|
gridGenres.setVisible(false);
|
||||||
noContextLabel.setVisible(false);
|
noContextLabel.setVisible(false);
|
||||||
comboTopFilterKeyLabel.setVisible(false);
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
showOthersLabel.setVisible(false);
|
showOthersLabel.setVisible(false);
|
||||||
|
@ -648,8 +652,48 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onRestoreStateChange(StateChangeEvent event) {
|
private void onRestoreStateChange(StateChangeEvent event) {
|
||||||
|
Log.debug("onRestoreStateChange: " + event);
|
||||||
if (event.getAccountingStateData() != null) {
|
if (event.getAccountingStateData() != null) {
|
||||||
|
|
||||||
accountingStateData = event.getAccountingStateData();
|
accountingStateData = event.getAccountingStateData();
|
||||||
|
if (accountingStateData.getAccountingType() != null) {
|
||||||
|
switch (accountingStateData.getAccountingType()) {
|
||||||
|
case JOB:
|
||||||
|
case PORTLET:
|
||||||
|
case SERVICE:
|
||||||
|
case STORAGE:
|
||||||
|
case TASK:
|
||||||
|
List<ChartType> chartsTypeForDefault = new ArrayList<>(ChartType.asList());
|
||||||
|
Log.debug("ChartsType: " + chartsTypeForDefault);
|
||||||
|
chartsTypeForDefault.remove(ChartType.Spaces);
|
||||||
|
Log.debug("ChartsType after remove: " + chartsTypeForDefault);
|
||||||
|
storeComboChartType.clear();
|
||||||
|
storeComboChartType.addAll(chartsTypeForDefault);
|
||||||
|
storeComboChartType.commitChanges();
|
||||||
|
comboChartTypeLabel.setVisible(true);
|
||||||
|
break;
|
||||||
|
case SPACE:
|
||||||
|
List<ChartType> chartsTypeForSpace = new ArrayList<>();
|
||||||
|
chartsTypeForSpace.add(ChartType.Spaces);
|
||||||
|
Log.debug("ChartsType: " + chartsTypeForSpace);
|
||||||
|
storeComboChartType.clear();
|
||||||
|
storeComboChartType.addAll(chartsTypeForSpace);
|
||||||
|
storeComboChartType.commitChanges();
|
||||||
|
comboChartTypeLabel.setVisible(false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
storeComboChartType.clear();
|
||||||
|
storeComboChartType.commitChanges();
|
||||||
|
comboChartTypeLabel.setVisible(false);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
storeComboChartType.clear();
|
||||||
|
storeComboChartType.commitChanges();
|
||||||
|
comboChartTypeLabel.setVisible(false);
|
||||||
|
|
||||||
|
}
|
||||||
changeActiveFilters();
|
changeActiveFilters();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -683,6 +727,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
case Context:
|
case Context:
|
||||||
changeActiveFiltersForContext();
|
changeActiveFiltersForContext();
|
||||||
break;
|
break;
|
||||||
|
case Spaces:
|
||||||
|
changeActiveFiltersForSpaces();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
changeActiveFiltersForBasic();
|
changeActiveFiltersForBasic();
|
||||||
break;
|
break;
|
||||||
|
@ -748,7 +796,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
}
|
}
|
||||||
comboChartType.setValue(ChartType.Basic);
|
comboChartType.setValue(ChartType.Basic);
|
||||||
gridContext.setVisible(false);
|
gridGenres.setVisible(false);
|
||||||
comboTopFilterKey.reset();
|
comboTopFilterKey.reset();
|
||||||
comboTopFilterKeyLabel.setVisible(false);
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
showOthersToggle.reset();
|
showOthersToggle.reset();
|
||||||
|
@ -815,7 +863,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
comboChartType.setValue(ChartType.Top);
|
comboChartType.setValue(ChartType.Top);
|
||||||
gridContext.setVisible(false);
|
gridGenres.setVisible(false);
|
||||||
comboTopFilterKeyLabel.setVisible(true);
|
comboTopFilterKeyLabel.setVisible(true);
|
||||||
showOthersLabel.setVisible(true);
|
showOthersLabel.setVisible(true);
|
||||||
noContextToggle.reset();
|
noContextToggle.reset();
|
||||||
|
@ -825,7 +873,6 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
forceLayout();
|
forceLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
|
||||||
private void changeActiveFiltersForContext() {
|
private void changeActiveFiltersForContext() {
|
||||||
if (accountingStateData.getSeriesRequest() != null
|
if (accountingStateData.getSeriesRequest() != null
|
||||||
&& accountingStateData.getSeriesRequest()
|
&& accountingStateData.getSeriesRequest()
|
||||||
|
@ -845,42 +892,41 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
.isEmpty()) {
|
.isEmpty()) {
|
||||||
ArrayList<String> contexts = accountingStateData
|
ArrayList<String> contexts = accountingStateData
|
||||||
.getAvailableContext().getContexts();
|
.getAvailableContext().getContexts();
|
||||||
ArrayList<ContextData> ctx = new ArrayList<ContextData>();
|
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||||
for (String context : contexts) {
|
for (String context : contexts) {
|
||||||
ContextData contextData = new ContextData(context);
|
GenresData genresData = new GenresData(context);
|
||||||
ctx.add(contextData);
|
genres.add(genresData);
|
||||||
}
|
}
|
||||||
storeContext.clear();
|
storeGenres.clear();
|
||||||
storeContext.addAll(ctx);
|
storeGenres.addAll(genres);
|
||||||
storeContext.commitChanges();
|
storeGenres.commitChanges();
|
||||||
|
|
||||||
smContext.deselectAll();
|
smGenres.deselectAll();
|
||||||
|
|
||||||
if (accountingFilterContext.getContext().getContexts() == null
|
if (accountingFilterContext.getContext().getContexts() == null
|
||||||
|| accountingFilterContext.getContext()
|
|| accountingFilterContext.getContext()
|
||||||
.getContexts().isEmpty()) {
|
.getContexts().isEmpty()) {
|
||||||
} else {
|
} else {
|
||||||
ArrayList<ContextData> selected = new ArrayList<>();
|
ArrayList<GenresData> selected = new ArrayList<>();
|
||||||
for (String c : accountingFilterContext.getContext()
|
for (String c : accountingFilterContext.getContext()
|
||||||
.getContexts()) {
|
.getContexts()) {
|
||||||
for (ContextData contextData : storeContext
|
for (GenresData genresData : storeGenres.getAll()) {
|
||||||
.getAll()) {
|
if (c.compareTo(genresData.getGenre()) == 0) {
|
||||||
if (c.compareTo(contextData.getContextData()) == 0) {
|
selected.add(genresData);
|
||||||
selected.add(contextData);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!selected.isEmpty()) {
|
if (!selected.isEmpty()) {
|
||||||
if (selected.size() == storeContext.getAll().size()) {
|
if (selected.size() == storeGenres.getAll().size()) {
|
||||||
smContext.selectAll();
|
smGenres.selectAll();
|
||||||
} else {
|
} else {
|
||||||
smContext.select(selected, false);
|
smGenres.select(selected, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
smContext.refresh();
|
smGenres.refresh();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
repopulatesContexts();
|
repopulatesContexts();
|
||||||
|
@ -916,7 +962,9 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
}
|
}
|
||||||
comboChartType.setValue(ChartType.Context);
|
comboChartType.setValue(ChartType.Context);
|
||||||
gridContext.setVisible(true);
|
gridGenres.setVisible(true);
|
||||||
|
labelGenresCol.setHeader("Scope");
|
||||||
|
gridGenres.getView().refresh(true);
|
||||||
comboTopFilterKey.reset();
|
comboTopFilterKey.reset();
|
||||||
comboTopFilterKeyLabel.setVisible(false);
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
showOthersToggle.reset();
|
showOthersToggle.reset();
|
||||||
|
@ -943,25 +991,164 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetContexts() {
|
private void resetContexts() {
|
||||||
storeContext.clear();
|
storeGenres.clear();
|
||||||
storeContext.commitChanges();
|
storeGenres.commitChanges();
|
||||||
smContext.deselectAll();
|
smGenres.deselectAll();
|
||||||
smContext.refresh();
|
smGenres.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void repopulatesContexts() {
|
private void repopulatesContexts() {
|
||||||
ArrayList<String> contexts = accountingStateData.getAvailableContext()
|
ArrayList<String> contexts = accountingStateData.getAvailableContext()
|
||||||
.getContexts();
|
.getContexts();
|
||||||
ArrayList<ContextData> ctx = new ArrayList<ContextData>();
|
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||||
for (String context : contexts) {
|
for (String context : contexts) {
|
||||||
ContextData contextData = new ContextData(context);
|
GenresData genresData = new GenresData(context);
|
||||||
ctx.add(contextData);
|
genres.add(genresData);
|
||||||
}
|
}
|
||||||
storeContext.clear();
|
storeGenres.clear();
|
||||||
storeContext.addAll(ctx);
|
storeGenres.addAll(genres);
|
||||||
storeContext.commitChanges();
|
storeGenres.commitChanges();
|
||||||
smContext.selectAll();
|
smGenres.selectAll();
|
||||||
smContext.refresh();
|
smGenres.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void changeActiveFiltersForSpaces() {
|
||||||
|
if (accountingStateData.getSeriesRequest() != null
|
||||||
|
&& accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingFilterDefinition() != null
|
||||||
|
&& accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingFilterDefinition() instanceof AccountingFilterSpaces) {
|
||||||
|
AccountingFilterSpaces accountingFilterSapces = (AccountingFilterSpaces) accountingStateData
|
||||||
|
.getSeriesRequest().getAccountingFilterDefinition();
|
||||||
|
if (accountingStateData.getAvailableSpaces() != null
|
||||||
|
&& accountingStateData.getAvailableSpaces().getSpacesList() != null
|
||||||
|
&& !accountingStateData.getAvailableSpaces().getSpacesList()
|
||||||
|
.isEmpty()) {
|
||||||
|
|
||||||
|
if (accountingFilterSapces.getSpaces() != null
|
||||||
|
&& accountingFilterSapces.getSpaces().getSpacesList() != null
|
||||||
|
&& !accountingFilterSapces.getSpaces().getSpacesList()
|
||||||
|
.isEmpty()) {
|
||||||
|
ArrayList<String> spacesList = accountingStateData
|
||||||
|
.getAvailableSpaces().getSpacesList();
|
||||||
|
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||||
|
for (String space : spacesList) {
|
||||||
|
GenresData genresData = new GenresData(space);
|
||||||
|
genres.add(genresData);
|
||||||
|
}
|
||||||
|
storeGenres.clear();
|
||||||
|
storeGenres.addAll(genres);
|
||||||
|
storeGenres.commitChanges();
|
||||||
|
|
||||||
|
smGenres.deselectAll();
|
||||||
|
|
||||||
|
if (accountingFilterSapces.getSpaces().getSpacesList() == null
|
||||||
|
|| accountingFilterSapces.getSpaces()
|
||||||
|
.getSpacesList().isEmpty()) {
|
||||||
|
} else {
|
||||||
|
ArrayList<GenresData> selected = new ArrayList<>();
|
||||||
|
for (String s : accountingFilterSapces.getSpaces()
|
||||||
|
.getSpacesList()) {
|
||||||
|
for (GenresData genresData : storeGenres.getAll()) {
|
||||||
|
if (s.compareTo(genresData.getGenre()) == 0) {
|
||||||
|
selected.add(genresData);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!selected.isEmpty()) {
|
||||||
|
if (selected.size() == storeGenres.getAll().size()) {
|
||||||
|
smGenres.selectAll();
|
||||||
|
} else {
|
||||||
|
smGenres.select(selected, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
smGenres.refresh();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
repopulatesSpaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
resetSpaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accountingFilterSapces.getFilters() != null) {
|
||||||
|
List<AccountingFilter> filters = accountingFilterSapces
|
||||||
|
.getFilters();
|
||||||
|
storeFilter.clear();
|
||||||
|
storeFilter.addAll(filters);
|
||||||
|
seq = 0;
|
||||||
|
for (AccountingFilter filter : filters) {
|
||||||
|
if (filter.getId() > seq) {
|
||||||
|
seq = filter.getId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeFilter.commitChanges();
|
||||||
|
} else {
|
||||||
|
storeFilter.clear();
|
||||||
|
storeFilter.commitChanges();
|
||||||
|
seq = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
reconfigureSpaces();
|
||||||
|
storeFilter.clear();
|
||||||
|
storeFilter.commitChanges();
|
||||||
|
seq = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
comboChartType.setValue(ChartType.Spaces);
|
||||||
|
gridGenres.setVisible(true);
|
||||||
|
labelGenresCol.setHeader("Space");
|
||||||
|
gridGenres.getView().refresh(true);
|
||||||
|
comboTopFilterKey.reset();
|
||||||
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
|
showOthersToggle.reset();
|
||||||
|
showOthersNo.setValue(true);
|
||||||
|
showOthersLabel.setVisible(false);
|
||||||
|
noContextToggle.reset();
|
||||||
|
noContextNo.setValue(true);
|
||||||
|
noContextLabel.setVisible(false);
|
||||||
|
topNumber.reset();
|
||||||
|
topNumberLabel.setVisible(false);
|
||||||
|
forceLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reconfigureSpaces() {
|
||||||
|
if (accountingStateData.getAvailableSpaces() != null
|
||||||
|
&& accountingStateData.getAvailableSpaces().getSpacesList() != null
|
||||||
|
&& !accountingStateData.getAvailableSpaces().getSpacesList()
|
||||||
|
.isEmpty()) {
|
||||||
|
repopulatesSpaces();
|
||||||
|
} else {
|
||||||
|
resetSpaces();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetSpaces() {
|
||||||
|
storeGenres.clear();
|
||||||
|
storeGenres.commitChanges();
|
||||||
|
smGenres.deselectAll();
|
||||||
|
smGenres.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void repopulatesSpaces() {
|
||||||
|
ArrayList<String> spaces = accountingStateData.getAvailableSpaces()
|
||||||
|
.getSpacesList();
|
||||||
|
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||||
|
for (String space : spaces) {
|
||||||
|
GenresData genresData = new GenresData(space);
|
||||||
|
genres.add(genresData);
|
||||||
|
}
|
||||||
|
storeGenres.clear();
|
||||||
|
storeGenres.addAll(genres);
|
||||||
|
storeGenres.commitChanges();
|
||||||
|
smGenres.selectAll();
|
||||||
|
smGenres.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
public AccountingFilterDefinition getActiveFilters() {
|
public AccountingFilterDefinition getActiveFilters() {
|
||||||
|
@ -975,7 +1162,8 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
return getActiveFiltersForTop();
|
return getActiveFiltersForTop();
|
||||||
case Context:
|
case Context:
|
||||||
return getActiveFiltersForContext();
|
return getActiveFiltersForContext();
|
||||||
|
case Spaces:
|
||||||
|
return getActiveFiltersForSpaces();
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
@ -1054,11 +1242,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
private AccountingFilterDefinition getActiveFiltersForContext() {
|
private AccountingFilterDefinition getActiveFiltersForContext() {
|
||||||
ArrayList<String> contextsSelected = new ArrayList<String>();
|
ArrayList<String> contextsSelected = new ArrayList<String>();
|
||||||
if (storeContext != null && storeContext.size() > 0
|
if (storeGenres != null && storeGenres.size() > 0 && smGenres != null) {
|
||||||
&& smContext != null) {
|
List<GenresData> selected = smGenres.getSelectedItems();
|
||||||
List<ContextData> selected = smContext.getSelectedItems();
|
for (GenresData cd : selected) {
|
||||||
for (ContextData cd : selected) {
|
contextsSelected.add(cd.getGenre());
|
||||||
contextsSelected.add(cd.getContextData());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
org.gcube.portlets.admin.accountingmanager.shared.data.Context context = new org.gcube.portlets.admin.accountingmanager.shared.data.Context(
|
org.gcube.portlets.admin.accountingmanager.shared.data.Context context = new org.gcube.portlets.admin.accountingmanager.shared.data.Context(
|
||||||
|
@ -1080,6 +1267,32 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AccountingFilterDefinition getActiveFiltersForSpaces() {
|
||||||
|
ArrayList<String> spacesSelected = new ArrayList<String>();
|
||||||
|
if (storeGenres != null && storeGenres.size() > 0 && smGenres != null) {
|
||||||
|
List<GenresData> selected = smGenres.getSelectedItems();
|
||||||
|
for (GenresData cd : selected) {
|
||||||
|
spacesSelected.add(cd.getGenre());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Spaces spaces = new Spaces(spacesSelected);
|
||||||
|
|
||||||
|
List<AccountingFilter> filtersActives = storeFilter.getAll();
|
||||||
|
ArrayList<AccountingFilter> filtersReady = new ArrayList<AccountingFilter>();
|
||||||
|
for (AccountingFilter filter : filtersActives) {
|
||||||
|
if (filter.getFilterValue() != null
|
||||||
|
&& !filter.getFilterValue().isEmpty()) {
|
||||||
|
filtersReady.add(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (filtersReady.size() > 0) {
|
||||||
|
return new AccountingFilterSpaces(spaces, filtersReady);
|
||||||
|
} else {
|
||||||
|
return new AccountingFilterSpaces(spaces, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void addNewFilter(SelectEvent event) {
|
private void addNewFilter(SelectEvent event) {
|
||||||
List<AccountingFilter> filtersSet = storeFilter.getAll();
|
List<AccountingFilter> filtersSet = storeFilter.getAll();
|
||||||
FilterKey fk = null;
|
FilterKey fk = null;
|
||||||
|
@ -1275,7 +1488,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
}
|
}
|
||||||
switch (chartType) {
|
switch (chartType) {
|
||||||
case Basic:
|
case Basic:
|
||||||
gridContext.setVisible(false);
|
gridGenres.setVisible(false);
|
||||||
comboTopFilterKey.reset();
|
comboTopFilterKey.reset();
|
||||||
comboTopFilterKeyLabel.setVisible(false);
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
showOthersToggle.reset();
|
showOthersToggle.reset();
|
||||||
|
@ -1300,7 +1513,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
forceLayout();
|
forceLayout();
|
||||||
break;
|
break;
|
||||||
case Top:
|
case Top:
|
||||||
gridContext.setVisible(false);
|
gridGenres.setVisible(false);
|
||||||
comboTopFilterKey.reset();
|
comboTopFilterKey.reset();
|
||||||
if (accountingStateData != null
|
if (accountingStateData != null
|
||||||
&& accountingStateData.getAvailableFilterKeys() != null
|
&& accountingStateData.getAvailableFilterKeys() != null
|
||||||
|
@ -1326,7 +1539,30 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
break;
|
break;
|
||||||
case Context:
|
case Context:
|
||||||
reconfigureContext();
|
reconfigureContext();
|
||||||
gridContext.setVisible(true);
|
gridGenres.setVisible(true);
|
||||||
|
labelGenresCol.setHeader("Scope");
|
||||||
|
gridGenres.getView().refresh(true);
|
||||||
|
comboTopFilterKey.reset();
|
||||||
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
|
showOthersToggle.reset();
|
||||||
|
showOthersNo.setValue(true);
|
||||||
|
showOthersLabel.setVisible(false);
|
||||||
|
noContextToggle.reset();
|
||||||
|
noContextYes.setValue(false);
|
||||||
|
noContextNo.setValue(true);
|
||||||
|
noContextLabel.setVisible(false);
|
||||||
|
topNumber.reset();
|
||||||
|
topNumberLabel.setVisible(false);
|
||||||
|
storeFilter.clear();
|
||||||
|
storeFilter.commitChanges();
|
||||||
|
seq = 0;
|
||||||
|
forceLayout();
|
||||||
|
break;
|
||||||
|
case Spaces:
|
||||||
|
reconfigureSpaces();
|
||||||
|
gridGenres.setVisible(true);
|
||||||
|
labelGenresCol.setHeader("Space");
|
||||||
|
gridGenres.getView().refresh(true);
|
||||||
comboTopFilterKey.reset();
|
comboTopFilterKey.reset();
|
||||||
comboTopFilterKeyLabel.setVisible(false);
|
comboTopFilterKeyLabel.setVisible(false);
|
||||||
showOthersToggle.reset();
|
showOthersToggle.reset();
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Job;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Job;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Portlet;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Portlet;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Service;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Service;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Space;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Storage;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Storage;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Task;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChart4Task;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChartBuilder;
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChartBuilder;
|
||||||
|
@ -100,6 +101,11 @@ public class ChartViewerPanel extends FramedPanel {
|
||||||
case TASK:
|
case TASK:
|
||||||
createChart(new AccountingChart4Task(eventBus, event.getAccountingStateData()));
|
createChart(new AccountingChart4Task(eventBus, event.getAccountingStateData()));
|
||||||
break;
|
break;
|
||||||
|
case SPACE:
|
||||||
|
createChart(new AccountingChart4Space(eventBus, event.getAccountingStateData()));
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space.SpaceChartSpacesPanel;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesSpace;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.ChartDrawException;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventBus;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accounting Chart 4 Space
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingChart4Space extends AccountingChartBuilder {
|
||||||
|
private EventBus eventBus;
|
||||||
|
private AccountingClientStateData accountingStateData;
|
||||||
|
|
||||||
|
|
||||||
|
public AccountingChart4Space(EventBus eventBus, AccountingClientStateData accountingStateData) {
|
||||||
|
this.eventBus=eventBus;
|
||||||
|
this.accountingStateData = accountingStateData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildChart() throws ChartDrawException {
|
||||||
|
AccountingChartPanel accountingChartPanel = null;
|
||||||
|
|
||||||
|
if (accountingStateData == null
|
||||||
|
|| accountingStateData.getAccountingType() == null
|
||||||
|
|| accountingStateData.getSeriesRequest() == null
|
||||||
|
|| accountingStateData.getSeriesResponse() == null) {
|
||||||
|
accountingChartSpec.setChart(accountingChartPanel);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(accountingStateData.getSeriesResponse() instanceof SeriesSpace)) {
|
||||||
|
accountingChartSpec.setChart(accountingChartPanel);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleContainer container = createSpaceChartPanel();
|
||||||
|
|
||||||
|
accountingChartPanel = new AccountingChartPanel(container);
|
||||||
|
|
||||||
|
accountingChartSpec.setChart(accountingChartPanel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private SimpleContainer createSpaceChartPanel()
|
||||||
|
throws ChartDrawException {
|
||||||
|
|
||||||
|
if (accountingStateData == null
|
||||||
|
|| accountingStateData.getSeriesRequest() == null
|
||||||
|
|| accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingFilterDefinition() == null
|
||||||
|
|| accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingFilterDefinition().getChartType() == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingFilterDefinition().getChartType()) {
|
||||||
|
|
||||||
|
case Spaces:
|
||||||
|
return new SpaceChartSpacesPanel(eventBus,accountingStateData);
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,891 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.event.ExportRequestEvent;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ByteUnitMeasure;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils.ChartDateTimeData;
|
||||||
|
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.SpaceChartMeasure;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.state.AccountingClientStateData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriodMode;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesSpace;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.export.ExportType;
|
||||||
|
|
||||||
|
import com.allen_sauer.gwt.log.client.Log;
|
||||||
|
import com.github.highcharts4gwt.client.view.widget.HighchartsLayoutPanel;
|
||||||
|
import com.github.highcharts4gwt.model.array.api.Array;
|
||||||
|
import com.github.highcharts4gwt.model.array.api.ArrayNumber;
|
||||||
|
import com.github.highcharts4gwt.model.array.api.ArrayString;
|
||||||
|
import com.github.highcharts4gwt.model.factory.api.HighchartsOptionFactory;
|
||||||
|
import com.github.highcharts4gwt.model.factory.jso.JsoHighchartsOptionFactory;
|
||||||
|
import com.github.highcharts4gwt.model.highcharts.option.api.ChartOptions;
|
||||||
|
import com.github.highcharts4gwt.model.highcharts.option.api.SeriesColumn;
|
||||||
|
import com.github.highcharts4gwt.model.highcharts.option.api.seriescolumn.Data;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionEvent;
|
||||||
|
import com.google.gwt.event.logical.shared.SelectionHandler;
|
||||||
|
import com.google.gwt.event.shared.EventBus;
|
||||||
|
import com.google.gwt.i18n.client.DateTimeFormat;
|
||||||
|
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
|
||||||
|
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonArrowAlign;
|
||||||
|
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
|
||||||
|
import com.sencha.gxt.core.client.util.Margins;
|
||||||
|
import com.sencha.gxt.widget.core.client.button.TextButton;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.MarginData;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
|
||||||
|
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.Item;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.Menu;
|
||||||
|
import com.sencha.gxt.widget.core.client.menu.MenuItem;
|
||||||
|
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SpaceChartSpacesPanel extends SimpleContainer {
|
||||||
|
|
||||||
|
private static final String DATA_VOLUME_UNIT = "Data Volume Unit";
|
||||||
|
|
||||||
|
private DateTimeFormat dtf = DateTimeFormat
|
||||||
|
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
|
||||||
|
|
||||||
|
private EventBus eventBus;
|
||||||
|
private AccountingClientStateData accountingStateData;
|
||||||
|
private HighchartsLayoutPanel highchartsLayoutPanel;
|
||||||
|
|
||||||
|
// Download Menu
|
||||||
|
private MenuItem downloadCSVItem;
|
||||||
|
private MenuItem downloadXMLItem;
|
||||||
|
private MenuItem downloadJSONItem;
|
||||||
|
private MenuItem downloadPNGItem;
|
||||||
|
private MenuItem downloadJPGItem;
|
||||||
|
private MenuItem downloadPDFItem;
|
||||||
|
private MenuItem downloadSVGItem;
|
||||||
|
|
||||||
|
// Unit Menu
|
||||||
|
private MenuItem kBItem;
|
||||||
|
private MenuItem MBItem;
|
||||||
|
private MenuItem GBItem;
|
||||||
|
private MenuItem TBItem;
|
||||||
|
|
||||||
|
private long unitMeasure = ByteUnitMeasure.getMegaByteDimForStorage();
|
||||||
|
private String unitMeasureLabel = ByteUnitMeasure.MB;
|
||||||
|
private TextButton unitButton;
|
||||||
|
|
||||||
|
private ChartOptions options;
|
||||||
|
|
||||||
|
private SpaceChartMeasure measure = SpaceChartMeasure.DataVolume;
|
||||||
|
private TextButton measureButton;
|
||||||
|
|
||||||
|
private VerticalLayoutContainer vert;
|
||||||
|
|
||||||
|
public SpaceChartSpacesPanel(EventBus eventBus,
|
||||||
|
AccountingClientStateData accountingStateData) {
|
||||||
|
this.eventBus = eventBus;
|
||||||
|
this.accountingStateData = accountingStateData;
|
||||||
|
forceLayoutOnResize = true;
|
||||||
|
create();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void create() {
|
||||||
|
ToolBar toolBar = new ToolBar();
|
||||||
|
toolBar.setSpacing(2);
|
||||||
|
// Download
|
||||||
|
final TextButton downloadButton = new TextButton(
|
||||||
|
DownloadConstants.DOWNLOAD,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingDownload24());
|
||||||
|
// downloadButton.setScale(ButtonScale.MEDIUM);
|
||||||
|
downloadButton.setIconAlign(IconAlign.RIGHT);
|
||||||
|
downloadButton.setArrowAlign(ButtonArrowAlign.RIGHT);
|
||||||
|
downloadButton.setMenu(createDownloadMenu());
|
||||||
|
|
||||||
|
// Unit
|
||||||
|
unitButton = new TextButton(DATA_VOLUME_UNIT,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingUnitMB24());
|
||||||
|
unitButton.setIconAlign(IconAlign.RIGHT);
|
||||||
|
unitButton.setArrowAlign(ButtonArrowAlign.RIGHT);
|
||||||
|
unitButton.setMenu(createUnitMenu());
|
||||||
|
|
||||||
|
toolBar.add(downloadButton, new BoxLayoutData(new Margins(0)));
|
||||||
|
toolBar.add(unitButton, new BoxLayoutData(new Margins(0)));
|
||||||
|
|
||||||
|
//
|
||||||
|
createChart();
|
||||||
|
|
||||||
|
highchartsLayoutPanel = new HighchartsLayoutPanel();
|
||||||
|
highchartsLayoutPanel.renderChart(options);
|
||||||
|
|
||||||
|
//
|
||||||
|
vert = new VerticalLayoutContainer();
|
||||||
|
vert.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
|
||||||
|
vert.add(highchartsLayoutPanel, new VerticalLayoutData(1, 1,
|
||||||
|
new Margins(0)));
|
||||||
|
|
||||||
|
add(vert, new MarginData(0));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateChart() {
|
||||||
|
createChart();
|
||||||
|
highchartsLayoutPanel.renderChart(options);
|
||||||
|
forceLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Menu createDownloadMenu() {
|
||||||
|
Menu menuDownload = new Menu();
|
||||||
|
downloadCSVItem = new MenuItem(DownloadConstants.DOWNLOAD_CSV,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFileCSV24());
|
||||||
|
downloadCSVItem.setHeight(30);
|
||||||
|
downloadXMLItem = new MenuItem(DownloadConstants.DOWNLOAD_XML,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFileXML24());
|
||||||
|
downloadXMLItem.setHeight(30);
|
||||||
|
downloadJSONItem = new MenuItem(DownloadConstants.DOWNLOAD_JSON,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFileJSON24());
|
||||||
|
downloadJSONItem.setHeight(30);
|
||||||
|
downloadPNGItem = new MenuItem(DownloadConstants.DOWNLOAD_PNG,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFilePNG24());
|
||||||
|
downloadPNGItem.setHeight(30);
|
||||||
|
downloadJPGItem = new MenuItem(DownloadConstants.DOWNLOAD_JPG,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFileJPG24());
|
||||||
|
downloadJPGItem.setHeight(30);
|
||||||
|
downloadPDFItem = new MenuItem(DownloadConstants.DOWNLOAD_PDF,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFilePDF24());
|
||||||
|
downloadPDFItem.setHeight(30);
|
||||||
|
downloadSVGItem = new MenuItem(DownloadConstants.DOWNLOAD_SVG,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingFileSVG24());
|
||||||
|
downloadSVGItem.setHeight(30);
|
||||||
|
|
||||||
|
downloadCSVItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
onDownloadCSV();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadXMLItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
onDownloadXML();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadJSONItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
onDownloadJSON();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadPNGItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
String id = highchartsLayoutPanel.getElement().getId();
|
||||||
|
onDownloadPNG(id);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadJPGItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
String id = highchartsLayoutPanel.getElement().getId();
|
||||||
|
onDownloadJPG(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadPDFItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
String id = highchartsLayoutPanel.getElement().getId();
|
||||||
|
onDownloadPDF(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadSVGItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
String id = highchartsLayoutPanel.getElement().getId();
|
||||||
|
onDownloadSVG(id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
menuDownload.add(downloadCSVItem);
|
||||||
|
menuDownload.add(downloadXMLItem);
|
||||||
|
menuDownload.add(downloadJSONItem);
|
||||||
|
menuDownload.add(downloadPNGItem);
|
||||||
|
menuDownload.add(downloadJPGItem);
|
||||||
|
menuDownload.add(downloadPDFItem);
|
||||||
|
menuDownload.add(downloadSVGItem);
|
||||||
|
return menuDownload;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Menu createUnitMenu() {
|
||||||
|
Menu menuUnit = new Menu();
|
||||||
|
kBItem = new MenuItem(ByteUnitMeasure.KILOBYTE,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingUnitkB24());
|
||||||
|
kBItem.setHeight(30);
|
||||||
|
MBItem = new MenuItem(ByteUnitMeasure.MEGABYTE,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingUnitMB24());
|
||||||
|
MBItem.setHeight(30);
|
||||||
|
GBItem = new MenuItem(ByteUnitMeasure.GIGABYTE,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingUnitGB24());
|
||||||
|
GBItem.setHeight(30);
|
||||||
|
TBItem = new MenuItem(ByteUnitMeasure.TERABYTE,
|
||||||
|
AccountingManagerResources.INSTANCE.accountingUnitTB24());
|
||||||
|
TBItem.setHeight(30);
|
||||||
|
|
||||||
|
kBItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
unitMeasure = ByteUnitMeasure.getKiloByteDimForStorage();
|
||||||
|
unitMeasureLabel = ByteUnitMeasure.kB;
|
||||||
|
unitButton.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
.accountingUnitkB24());
|
||||||
|
updateChart();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
MBItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
unitMeasure = ByteUnitMeasure.getMegaByteDimForStorage();
|
||||||
|
unitMeasureLabel = ByteUnitMeasure.MB;
|
||||||
|
unitButton.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
.accountingUnitMB24());
|
||||||
|
updateChart();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
GBItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
unitMeasure = ByteUnitMeasure.getGigaByteDimForStorage();
|
||||||
|
unitMeasureLabel = ByteUnitMeasure.GB;
|
||||||
|
unitButton.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
.accountingUnitGB24());
|
||||||
|
updateChart();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TBItem.addSelectionHandler(new SelectionHandler<Item>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSelection(SelectionEvent<Item> event) {
|
||||||
|
unitMeasure = ByteUnitMeasure.getTeraByteDimForStorage();
|
||||||
|
unitMeasureLabel = ByteUnitMeasure.TB;
|
||||||
|
unitButton.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
.accountingUnitTB24());
|
||||||
|
updateChart();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
menuUnit.add(kBItem);
|
||||||
|
menuUnit.add(MBItem);
|
||||||
|
menuUnit.add(GBItem);
|
||||||
|
menuUnit.add(TBItem);
|
||||||
|
return menuUnit;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onDownloadCSV() {
|
||||||
|
ExportRequestEvent event = new ExportRequestEvent(ExportType.CSV,
|
||||||
|
accountingStateData.getAccountingType());
|
||||||
|
eventBus.fireEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onDownloadXML() {
|
||||||
|
ExportRequestEvent event = new ExportRequestEvent(ExportType.XML,
|
||||||
|
accountingStateData.getAccountingType());
|
||||||
|
eventBus.fireEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onDownloadJSON() {
|
||||||
|
ExportRequestEvent event = new ExportRequestEvent(ExportType.JSON,
|
||||||
|
accountingStateData.getAccountingType());
|
||||||
|
eventBus.fireEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
// chart.options.exporting.buttons.contextButton.menuItems[0].onclick();
|
||||||
|
|
||||||
|
public static native void onDownloadPNG(String id) /*-{
|
||||||
|
console.log(id);
|
||||||
|
var chart = $wnd
|
||||||
|
.jQuery('#' + id)
|
||||||
|
.highcharts(
|
||||||
|
this.@org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space.SpaceChartSpacesPanel::options);
|
||||||
|
console.log(chart);
|
||||||
|
chart.exportChart();
|
||||||
|
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
public static native void onDownloadJPG(String id) /*-{
|
||||||
|
console.log(id);
|
||||||
|
var chart = $wnd
|
||||||
|
.jQuery('#' + id)
|
||||||
|
.highcharts(
|
||||||
|
this.@org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space.SpaceChartSpacesPanel::options);
|
||||||
|
console.log(chart);
|
||||||
|
chart.exportChart({
|
||||||
|
type : 'image/jpeg'
|
||||||
|
});
|
||||||
|
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
public static native void onDownloadPDF(String id) /*-{
|
||||||
|
console.log(id);
|
||||||
|
var chart = $wnd
|
||||||
|
.jQuery('#' + id)
|
||||||
|
.highcharts(
|
||||||
|
this.@org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space.SpaceChartSpacesPanel::options);
|
||||||
|
console.log(chart);
|
||||||
|
chart.exportChart({
|
||||||
|
type : 'application/pdf'
|
||||||
|
});
|
||||||
|
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
public static native void onDownloadSVG(String id) /*-{
|
||||||
|
console.log(id);
|
||||||
|
var chart = $wnd
|
||||||
|
.jQuery('#' + id)
|
||||||
|
.highcharts(
|
||||||
|
this.@org.gcube.portlets.admin.accountingmanager.client.maindata.charts.space.SpaceChartSpacesPanel::options);
|
||||||
|
console.log(chart);
|
||||||
|
chart.exportChart({
|
||||||
|
type : 'image/svg+xml'
|
||||||
|
});
|
||||||
|
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
private void createChart() {
|
||||||
|
SeriesSpace seriesSpace = (SeriesSpace) accountingStateData
|
||||||
|
.getSeriesResponse();
|
||||||
|
|
||||||
|
if (!(seriesSpace.getSerieSpaceDefinition() instanceof SeriesSpaceSpaces)) {
|
||||||
|
Log.debug("Invalid SeriesSpaceCategories!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SeriesSpaceSpaces seriesSpaceCategories = (SeriesSpaceSpaces) seriesSpace
|
||||||
|
.getSerieSpaceDefinition();
|
||||||
|
|
||||||
|
HighchartsOptionFactory highchartsFactory = new JsoHighchartsOptionFactory();
|
||||||
|
|
||||||
|
options = highchartsFactory.createChartOptions();
|
||||||
|
options.chart().zoomType("xy");
|
||||||
|
options.exporting().buttons().contextButton().enabled(false);
|
||||||
|
options.exporting().filename("AccountingSpaceCategories");
|
||||||
|
options.title().text("Accounting Space");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* options.subtitle().text("Click and drag in the plot area to zoom in");
|
||||||
|
*/
|
||||||
|
|
||||||
|
ArrayString colors = options.colors();
|
||||||
|
// colors.setValue(0, "#cc0038");
|
||||||
|
// colors.setValue(1, "#32cd32");
|
||||||
|
|
||||||
|
// yAxis
|
||||||
|
options.setFieldAsJsonObject("yAxis", retrieveYAxis(colors));
|
||||||
|
|
||||||
|
options.plotOptions().setFieldAsJsonObject(
|
||||||
|
"column",
|
||||||
|
"{ " + "\"stacking\": \"normal\"," + "\"dataLabels\": { "
|
||||||
|
+ " \"enabled\": \"true\","
|
||||||
|
+ " \"color\": \"white\", " + " \"style\": {"
|
||||||
|
+ " \"textShadow\": \"0 0 3px black\"" + " }"
|
||||||
|
+ " }" + " }");
|
||||||
|
|
||||||
|
ArrayList<SeriesColumn> seriesColumn = new ArrayList<>();
|
||||||
|
/*
|
||||||
|
* if (seriesServiceContext.getShowOthers()) {
|
||||||
|
* createSeriesColumnShowOthers(seriesServiceContext, highchartsFactory,
|
||||||
|
* colors, seriesColumn); } else {
|
||||||
|
*/
|
||||||
|
createSeriesColumnSimple(seriesSpaceCategories, highchartsFactory,
|
||||||
|
colors, seriesColumn);
|
||||||
|
/* } */
|
||||||
|
for (SeriesColumn serie : seriesColumn) {
|
||||||
|
options.series().addToEnd(serie);
|
||||||
|
}
|
||||||
|
|
||||||
|
options.chart().showAxes(true);
|
||||||
|
|
||||||
|
options.legend().enabled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createSeriesColumnShowOthers(
|
||||||
|
SeriesSpaceSpaces seriesSpaceCategories,
|
||||||
|
HighchartsOptionFactory highchartsFactory, ArrayString colors,
|
||||||
|
ArrayList<SeriesColumn> seriesColumn) {
|
||||||
|
Log.debug("Series ShowOthers");
|
||||||
|
if (accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.DAILY) == 0
|
||||||
|
|| accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.HOURLY) == 0
|
||||||
|
|| accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.MINUTELY) == 0) {
|
||||||
|
|
||||||
|
double minRange = ChartTimeMeasure
|
||||||
|
.calculateMinRange(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod());
|
||||||
|
|
||||||
|
double interval = ChartTimeMeasure
|
||||||
|
.calculateInterval(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod());
|
||||||
|
|
||||||
|
Date dateStart = dtf.parse(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod().getStartDate());
|
||||||
|
|
||||||
|
dateStart.setTime(dateStart.getTime()
|
||||||
|
+ ChartTimeMeasure.timeZoneOffset()
|
||||||
|
* ChartTimeMeasure.MINUTE);
|
||||||
|
|
||||||
|
Log.debug("BuildChart DateStart: "
|
||||||
|
+ DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_FULL)
|
||||||
|
.format(dateStart));
|
||||||
|
|
||||||
|
// xAxis
|
||||||
|
options.xAxis().type("datetime");
|
||||||
|
options.xAxis().minRange(minRange);
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (; i < seriesSpaceCategories.getSeriesSpaceDataCategoriesList()
|
||||||
|
.size(); i++) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name(seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSpace());
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
ArrayNumber data = seriesColumnData.dataAsArrayNumber();
|
||||||
|
|
||||||
|
for (SeriesSpaceData seriesSpaceData : seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSeries()) {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
data.push(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
data.push(seriesSpaceData.getDataVolume());
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumnData.pointInterval(interval).pointStart(
|
||||||
|
dateStart.getTime());
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < seriesSpaceCategories.getSeriesSpaceDataCategoriesList()
|
||||||
|
.size()) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name("Others");
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
ArrayList<Long> othersData = new ArrayList<>();
|
||||||
|
for (int j = i; j < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().size(); j++) {
|
||||||
|
Long value;
|
||||||
|
for (int k = 0; k < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(j)
|
||||||
|
.getSeries().size(); k++) {
|
||||||
|
SeriesSpaceData seriesSpaceData = seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(j)
|
||||||
|
.getSeries().get(k);
|
||||||
|
if (j == i) {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
othersData.add(seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
othersData.add(seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
|
||||||
|
value = seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure + othersData.get(k);
|
||||||
|
othersData.set(k, value);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
value = seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure + othersData.get(k);
|
||||||
|
othersData.set(k, value);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayNumber data = seriesColumnData.dataAsArrayNumber();
|
||||||
|
|
||||||
|
for (Long value : othersData) {
|
||||||
|
data.push(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumnData.pointInterval(interval).pointStart(
|
||||||
|
dateStart.getTime());
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// xAxis
|
||||||
|
options.xAxis().type("datetime");
|
||||||
|
|
||||||
|
if (accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.MONTHLY) == 0) {
|
||||||
|
// options.tooltip().xDateFormat("%b, %Y");
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod().getPeriod()
|
||||||
|
.compareTo(AccountingPeriodMode.YEARLY) == 0) {
|
||||||
|
// options.tooltip().xDateFormat("%Y");
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (; i < seriesSpaceCategories.getSeriesSpaceDataCategoriesList()
|
||||||
|
.size(); i++) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name(seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSpace());
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
Array<Data> arrayData = seriesColumnData.dataAsArrayObject();
|
||||||
|
|
||||||
|
for (SeriesSpaceData seriesSpaceData : seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSeries()) {
|
||||||
|
long dateFrom1970 = seriesSpaceData.getDate().getTime();
|
||||||
|
|
||||||
|
Log.debug("SeriersSpaceData: " + seriesSpaceData.getDate());
|
||||||
|
Log.debug("SeriersSpaceData: " + dateFrom1970);
|
||||||
|
|
||||||
|
Data data = highchartsFactory.createSeriesColumnData();
|
||||||
|
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
data.x(dateFrom1970);
|
||||||
|
data.y(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
arrayData.addToEnd(data);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
data.x(dateFrom1970);
|
||||||
|
data.y(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
arrayData.addToEnd(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < seriesSpaceCategories.getSeriesSpaceDataCategoriesList()
|
||||||
|
.size()) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name("Others");
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
ArrayList<ChartDateTimeData> othersData = new ArrayList<>();
|
||||||
|
for (int j = i; j < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().size(); j++) {
|
||||||
|
ChartDateTimeData chartDateTimeData;
|
||||||
|
for (int k = 0; k < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(j)
|
||||||
|
.getSeries().size(); k++) {
|
||||||
|
SeriesSpaceData seriesSpaceData = seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(j)
|
||||||
|
.getSeries().get(k);
|
||||||
|
if (j == i) {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
chartDateTimeData = new ChartDateTimeData(
|
||||||
|
seriesSpaceData.getDate(),
|
||||||
|
seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure);
|
||||||
|
othersData.add(chartDateTimeData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
chartDateTimeData = new ChartDateTimeData(
|
||||||
|
seriesSpaceData.getDate(),
|
||||||
|
seriesSpaceData.getDataVolume()
|
||||||
|
/ unitMeasure);
|
||||||
|
othersData.add(chartDateTimeData);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
chartDateTimeData = new ChartDateTimeData(
|
||||||
|
seriesSpaceData.getDate(),
|
||||||
|
(seriesSpaceData.getDataVolume() / unitMeasure)
|
||||||
|
+ othersData.get(k).getValue());
|
||||||
|
othersData.set(k, chartDateTimeData);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
chartDateTimeData = new ChartDateTimeData(
|
||||||
|
seriesSpaceData.getDate(),
|
||||||
|
(seriesSpaceData.getDataVolume() / unitMeasure)
|
||||||
|
+ othersData.get(k).getValue());
|
||||||
|
othersData.set(k, chartDateTimeData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Array<Data> arrayData = seriesColumnData.dataAsArrayObject();
|
||||||
|
|
||||||
|
for (ChartDateTimeData chartDateTimeData : othersData) {
|
||||||
|
long dateFrom1970 = chartDateTimeData.getDate().getTime();
|
||||||
|
|
||||||
|
Log.debug("SeriersOthersData: "
|
||||||
|
+ chartDateTimeData.getDate());
|
||||||
|
Log.debug("SeriersOthersData: " + dateFrom1970);
|
||||||
|
|
||||||
|
Data data = highchartsFactory.createSeriesColumnData();
|
||||||
|
|
||||||
|
data.x(dateFrom1970);
|
||||||
|
data.y(chartDateTimeData.getValue());
|
||||||
|
arrayData.addToEnd(data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createSeriesColumnSimple(
|
||||||
|
SeriesSpaceSpaces seriesSpaceCategories,
|
||||||
|
HighchartsOptionFactory highchartsFactory, ArrayString colors,
|
||||||
|
ArrayList<SeriesColumn> seriesColumn) {
|
||||||
|
|
||||||
|
Log.debug("Series Simple");
|
||||||
|
if (accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.DAILY) == 0
|
||||||
|
|| accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.HOURLY) == 0
|
||||||
|
|| accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.MINUTELY) == 0) {
|
||||||
|
|
||||||
|
double minRange = ChartTimeMeasure
|
||||||
|
.calculateMinRange(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod());
|
||||||
|
|
||||||
|
double interval = ChartTimeMeasure
|
||||||
|
.calculateInterval(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod());
|
||||||
|
|
||||||
|
Date dateStart = dtf.parse(accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod().getStartDate());
|
||||||
|
|
||||||
|
dateStart.setTime(dateStart.getTime()
|
||||||
|
+ ChartTimeMeasure.timeZoneOffset()
|
||||||
|
* ChartTimeMeasure.MINUTE);
|
||||||
|
|
||||||
|
Log.debug("BuildChart DateStart: "
|
||||||
|
+ DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_FULL)
|
||||||
|
.format(dateStart));
|
||||||
|
|
||||||
|
// xAxis
|
||||||
|
options.xAxis().type("datetime");
|
||||||
|
options.xAxis().minRange(minRange);
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
for (int i = 0; i < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().size(); i++) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name(seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSpace());
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
ArrayNumber data = seriesColumnData.dataAsArrayNumber();
|
||||||
|
|
||||||
|
for (SeriesSpaceData seriesSpaceData : seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSeries()) {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
data.push(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
data.push(seriesSpaceData.getDataVolume());
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumnData.pointInterval(interval).pointStart(
|
||||||
|
dateStart.getTime());
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// xAxis
|
||||||
|
options.xAxis().type("datetime");
|
||||||
|
|
||||||
|
if (accountingStateData.getSeriesRequest().getAccountingPeriod()
|
||||||
|
.getPeriod().compareTo(AccountingPeriodMode.MONTHLY) == 0) {
|
||||||
|
// options.tooltip().xDateFormat("%b, %Y");
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (accountingStateData.getSeriesRequest()
|
||||||
|
.getAccountingPeriod().getPeriod()
|
||||||
|
.compareTo(AccountingPeriodMode.YEARLY) == 0) {
|
||||||
|
// options.tooltip().xDateFormat("%Y");
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
options.tooltip().xDateFormat("Selected Data");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().size(); i++) {
|
||||||
|
SeriesColumn seriesColumnData = highchartsFactory
|
||||||
|
.createSeriesColumn();
|
||||||
|
|
||||||
|
seriesColumnData.name(seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSpace());
|
||||||
|
seriesColumnData.color(colors.get(i));
|
||||||
|
seriesColumnData.type("column");
|
||||||
|
|
||||||
|
Array<Data> arrayData = seriesColumnData.dataAsArrayObject();
|
||||||
|
|
||||||
|
for (SeriesSpaceData seriesSpaceData : seriesSpaceCategories
|
||||||
|
.getSeriesSpaceDataCategoriesList().get(i).getSeries()) {
|
||||||
|
long dateFrom1970 = seriesSpaceData.getDate().getTime();
|
||||||
|
|
||||||
|
Log.debug("SeriersSpaceData: " + seriesSpaceData.getDate());
|
||||||
|
Log.debug("SeriersStorageData: " + dateFrom1970);
|
||||||
|
|
||||||
|
Data data = highchartsFactory.createSeriesColumnData();
|
||||||
|
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
data.x(dateFrom1970);
|
||||||
|
data.y(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
arrayData.addToEnd(data);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
data.x(dateFrom1970);
|
||||||
|
data.y(seriesSpaceData.getDataVolume() / unitMeasure);
|
||||||
|
arrayData.addToEnd(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesColumn.add(seriesColumnData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String retrieveYAxis(ArrayString colors) {
|
||||||
|
switch (measure) {
|
||||||
|
case DataVolume:
|
||||||
|
return "[{" + " \"id\": \"" + SpaceChartMeasure.DataVolume.name()
|
||||||
|
+ "\"," + " \"labels\": {" + " \"format\": \"{value} "
|
||||||
|
+ unitMeasureLabel + "\"," + " \"style\": {"
|
||||||
|
+ " \"color\": \"" + colors.get(1) + "\"" + " }"
|
||||||
|
+ " }," + " \"stackLabels\": {" + " \"enabled\": \"true\","
|
||||||
|
+ " \"style\": {" + " \"fontWeight\": \"bold\","
|
||||||
|
+ " \"color\": \"gray\"" + " } " + " },"
|
||||||
|
+ " \"title\": { " + " \"text\": \""
|
||||||
|
+ SpaceChartMeasure.DataVolume.getLabel() + "\","
|
||||||
|
+ " \"style\": {" + " \"color\": \""
|
||||||
|
+ colors.get(1) + "\"" + " }" + " }" + "}]";
|
||||||
|
|
||||||
|
default:
|
||||||
|
return "[{" + " \"id\": \"" + SpaceChartMeasure.DataVolume.name()
|
||||||
|
+ "\"," + " \"labels\": {" + " \"format\": \"{value} "
|
||||||
|
+ unitMeasureLabel + "\"," + " \"style\": {"
|
||||||
|
+ " \"color\": \"" + colors.get(1) + "\"" + " }"
|
||||||
|
+ " }," + " \"stackLabels\": {" + " \"enabled\": \"true\","
|
||||||
|
+ " \"style\": {" + " \"fontWeight\": \"bold\","
|
||||||
|
+ " \"color\": \"gray\"" + " } " + " },"
|
||||||
|
+ " \"title\": { " + " \"text\": \""
|
||||||
|
+ SpaceChartMeasure.DataVolume.getLabel() + "\","
|
||||||
|
+ " \"style\": {" + " \"color\": \""
|
||||||
|
+ colors.get(1) + "\"" + " }" + " }" + "}]";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.client.maindata.charts.utils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service Chart Measure
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
public enum SpaceChartMeasure {
|
||||||
|
|
||||||
|
DataVolume("Data Volume");
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
private SpaceChartMeasure(final String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final String id;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static SpaceChartMeasure getFromId(String id) {
|
||||||
|
if (id == null || id.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
for (SpaceChartMeasure measure : values()) {
|
||||||
|
if (measure.id.compareToIgnoreCase(id) == 0) {
|
||||||
|
return measure;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<SpaceChartMeasure> asList() {
|
||||||
|
List<SpaceChartMeasure> list = Arrays.asList(values());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -63,6 +63,15 @@ public class AccountingManagerMenu extends TabPanel {
|
||||||
AccountingType.SERVICE.name());
|
AccountingType.SERVICE.name());
|
||||||
add(serviceCategory, serviceItemConf);
|
add(serviceCategory, serviceItemConf);
|
||||||
break;
|
break;
|
||||||
|
case SPACE:
|
||||||
|
TabItemConfig spaceItemConf = new TabItemConfig("Space", false);
|
||||||
|
spaceItemConf.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
.accountingSpace48());
|
||||||
|
EmptyPanel spaceCategory = new EmptyPanel(
|
||||||
|
AccountingType.SPACE.name());
|
||||||
|
add(spaceCategory, spaceItemConf);
|
||||||
|
break;
|
||||||
|
|
||||||
case STORAGE:
|
case STORAGE:
|
||||||
TabItemConfig storageItemConf = new TabItemConfig("Storage", false);
|
TabItemConfig storageItemConf = new TabItemConfig("Storage", false);
|
||||||
storageItemConf.setIcon(AccountingManagerResources.INSTANCE
|
storageItemConf.setIcon(AccountingManagerResources.INSTANCE
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package org.gcube.portlets.admin.accountingmanager.client.properties;
|
package org.gcube.portlets.admin.accountingmanager.client.properties;
|
||||||
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.ContextData;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.GenresData;
|
||||||
|
|
||||||
import com.google.gwt.editor.client.Editor.Path;
|
import com.google.gwt.editor.client.Editor.Path;
|
||||||
import com.sencha.gxt.core.client.ValueProvider;
|
import com.sencha.gxt.core.client.ValueProvider;
|
||||||
|
@ -13,9 +13,9 @@ import com.sencha.gxt.data.shared.PropertyAccess;
|
||||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public interface ContextDataProperties extends PropertyAccess<ContextData> {
|
public interface GenresDataProperties extends PropertyAccess<GenresData> {
|
||||||
@Path("contextData")
|
@Path("genre")
|
||||||
ModelKeyProvider<org.gcube.portlets.admin.accountingmanager.shared.data.ContextData> id();
|
ModelKeyProvider<GenresData> id();
|
||||||
|
|
||||||
ValueProvider<ContextData, String> label();
|
ValueProvider<GenresData, String> label();
|
||||||
}
|
}
|
|
@ -39,6 +39,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
||||||
@Source("accounting-job_128.png")
|
@Source("accounting-job_128.png")
|
||||||
ImageResource accountingJob128();
|
ImageResource accountingJob128();
|
||||||
|
|
||||||
|
@Source("accounting-space_128.png")
|
||||||
|
ImageResource accountingSpace128();
|
||||||
|
|
||||||
@Source("accounting-manager_48.png")
|
@Source("accounting-manager_48.png")
|
||||||
ImageResource accountingManager48();
|
ImageResource accountingManager48();
|
||||||
|
|
||||||
|
@ -57,6 +60,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
||||||
@Source("accounting-job_48.png")
|
@Source("accounting-job_48.png")
|
||||||
ImageResource accountingJob48();
|
ImageResource accountingJob48();
|
||||||
|
|
||||||
|
@Source("accounting-space_48.png")
|
||||||
|
ImageResource accountingSpace48();
|
||||||
|
|
||||||
@Source("accounting-manager_32.png")
|
@Source("accounting-manager_32.png")
|
||||||
ImageResource accountingManager32();
|
ImageResource accountingManager32();
|
||||||
|
|
||||||
|
@ -75,6 +81,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
||||||
@Source("accounting-job_32.png")
|
@Source("accounting-job_32.png")
|
||||||
ImageResource accountingJob32();
|
ImageResource accountingJob32();
|
||||||
|
|
||||||
|
@Source("accounting-space_32.png")
|
||||||
|
ImageResource accountingSpace32();
|
||||||
|
|
||||||
@Source("accounting-manager_24.png")
|
@Source("accounting-manager_24.png")
|
||||||
ImageResource accountingManager24();
|
ImageResource accountingManager24();
|
||||||
|
|
||||||
|
@ -93,6 +102,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
||||||
@Source("accounting-job_24.png")
|
@Source("accounting-job_24.png")
|
||||||
ImageResource accountingJob24();
|
ImageResource accountingJob24();
|
||||||
|
|
||||||
|
@Source("accounting-space_24.png")
|
||||||
|
ImageResource accountingSpace24();
|
||||||
|
|
||||||
@Source("accounting-reload_24.png")
|
@Source("accounting-reload_24.png")
|
||||||
ImageResource accountingReload24();
|
ImageResource accountingReload24();
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 928 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
|
@ -3,6 +3,7 @@ package org.gcube.portlets.admin.accountingmanager.client.rpc;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
|
@ -33,7 +34,6 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
*/
|
*/
|
||||||
public UserInfo hello() throws ServiceException;
|
public UserInfo hello() throws ServiceException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
|
@ -41,7 +41,6 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
*/
|
*/
|
||||||
public Long getClientMonitorTimeout() throws ServiceException;
|
public Long getClientMonitorTimeout() throws ServiceException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve Accounting Series in Cache
|
* Retrieve Accounting Series in Cache
|
||||||
*
|
*
|
||||||
|
@ -55,8 +54,6 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
public SeriesResponse getSeriesInCache(AccountingType accountingType,
|
public SeriesResponse getSeriesInCache(AccountingType accountingType,
|
||||||
SeriesRequest seriesRequest) throws ServiceException;
|
SeriesRequest seriesRequest) throws ServiceException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve Accounting Series
|
* Retrieve Accounting Series
|
||||||
*
|
*
|
||||||
|
@ -70,7 +67,6 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
public String getSeries(AccountingType accountingType,
|
public String getSeries(AccountingType accountingType,
|
||||||
SeriesRequest seriesRequest) throws ServiceException;
|
SeriesRequest seriesRequest) throws ServiceException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accounting Request Monitor
|
* Accounting Request Monitor
|
||||||
*
|
*
|
||||||
|
@ -78,8 +74,8 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
* @return
|
* @return
|
||||||
* @throws ServiceException
|
* @throws ServiceException
|
||||||
*/
|
*/
|
||||||
public SeriesResponse operationMonitor(String operationId) throws ServiceException;
|
public SeriesResponse operationMonitor(String operationId)
|
||||||
|
throws ServiceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -103,13 +99,21 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
FilterValuesRequest filterValuesRequest) throws ServiceException;
|
FilterValuesRequest filterValuesRequest) throws ServiceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Retrieve Context available
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
* @throws ServiceException
|
* @throws ServiceException
|
||||||
*/
|
*/
|
||||||
public Context getContext() throws ServiceException;
|
public Context getContext() throws ServiceException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve spaces available
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @throws ServiceException
|
||||||
|
*/
|
||||||
|
public Spaces getSpaces() throws ServiceException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param itemDescription
|
* @param itemDescription
|
||||||
|
@ -144,6 +148,4 @@ public interface AccountingManagerService extends RemoteService {
|
||||||
*/
|
*/
|
||||||
public Boolean isRootScope() throws ServiceException;
|
public Boolean isRootScope() throws ServiceException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ package org.gcube.portlets.admin.accountingmanager.client.rpc;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
|
@ -43,7 +44,6 @@ public interface AccountingManagerServiceAsync {
|
||||||
*/
|
*/
|
||||||
void getClientMonitorTimeout(AsyncCallback<Long> callback);
|
void getClientMonitorTimeout(AsyncCallback<Long> callback);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve Accounting Series in Cache
|
* Retrieve Accounting Series in Cache
|
||||||
*
|
*
|
||||||
|
@ -68,14 +68,14 @@ public interface AccountingManagerServiceAsync {
|
||||||
void getSeries(AccountingType accountingType, SeriesRequest seriesRequest,
|
void getSeries(AccountingType accountingType, SeriesRequest seriesRequest,
|
||||||
AsyncCallback<String> callback);
|
AsyncCallback<String> callback);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accounting Request Monitor
|
* Accounting Request Monitor
|
||||||
*
|
*
|
||||||
* @param operationId
|
* @param operationId
|
||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
void operationMonitor(String operationId, AsyncCallback<SeriesResponse> callback);
|
void operationMonitor(String operationId,
|
||||||
|
AsyncCallback<SeriesResponse> callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -95,6 +95,12 @@ public interface AccountingManagerServiceAsync {
|
||||||
*/
|
*/
|
||||||
void getContext(AsyncCallback<Context> callback);
|
void getContext(AsyncCallback<Context> callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param callback
|
||||||
|
*/
|
||||||
|
void getSpaces(AsyncCallback<Spaces> callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param itemDescription
|
* @param itemDescription
|
||||||
|
@ -126,6 +132,4 @@ public interface AccountingManagerServiceAsync {
|
||||||
*/
|
*/
|
||||||
void isRootScope(AsyncCallback<Boolean> callback);
|
void isRootScope(AsyncCallback<Boolean> callback);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
||||||
|
@ -23,12 +24,30 @@ public class AccountingClientStateData implements Serializable {
|
||||||
private SeriesResponse seriesResponse;
|
private SeriesResponse seriesResponse;
|
||||||
private ArrayList<FilterKey> availableFilterKeys;
|
private ArrayList<FilterKey> availableFilterKeys;
|
||||||
private Context availableContext;
|
private Context availableContext;
|
||||||
|
private Spaces availableSpaces;
|
||||||
private Boolean rootScope;
|
private Boolean rootScope;
|
||||||
|
|
||||||
public AccountingClientStateData() {
|
public AccountingClientStateData() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param accountingType
|
||||||
|
* @param rootScope
|
||||||
|
*/
|
||||||
|
public AccountingClientStateData(AccountingType accountingType,
|
||||||
|
Boolean rootScope) {
|
||||||
|
super();
|
||||||
|
this.accountingType = accountingType;
|
||||||
|
this.seriesRequest = null;
|
||||||
|
this.seriesResponse = null;
|
||||||
|
this.availableFilterKeys = null;
|
||||||
|
this.availableContext = null;
|
||||||
|
this.availableSpaces = null;
|
||||||
|
this.rootScope = rootScope;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param accountingType
|
* @param accountingType
|
||||||
|
@ -41,13 +60,14 @@ public class AccountingClientStateData implements Serializable {
|
||||||
public AccountingClientStateData(AccountingType accountingType,
|
public AccountingClientStateData(AccountingType accountingType,
|
||||||
SeriesRequest seriesRequest, SeriesResponse seriesResponse,
|
SeriesRequest seriesRequest, SeriesResponse seriesResponse,
|
||||||
ArrayList<FilterKey> availableFilterKeys, Context availableContext,
|
ArrayList<FilterKey> availableFilterKeys, Context availableContext,
|
||||||
Boolean rootScope) {
|
Spaces availableSpaces, Boolean rootScope) {
|
||||||
super();
|
super();
|
||||||
this.accountingType = accountingType;
|
this.accountingType = accountingType;
|
||||||
this.seriesRequest = seriesRequest;
|
this.seriesRequest = seriesRequest;
|
||||||
this.seriesResponse = seriesResponse;
|
this.seriesResponse = seriesResponse;
|
||||||
this.availableFilterKeys = availableFilterKeys;
|
this.availableFilterKeys = availableFilterKeys;
|
||||||
this.availableContext = availableContext;
|
this.availableContext = availableContext;
|
||||||
|
this.availableSpaces = availableSpaces;
|
||||||
this.rootScope = rootScope;
|
this.rootScope = rootScope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,13 +119,22 @@ public class AccountingClientStateData implements Serializable {
|
||||||
this.accountingType = accountingType;
|
this.accountingType = accountingType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Spaces getAvailableSpaces() {
|
||||||
|
return availableSpaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAvailableSpaces(Spaces availableSpaces) {
|
||||||
|
this.availableSpaces = availableSpaces;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "AccountingClientStateData [accountingType=" + accountingType
|
return "AccountingClientStateData [accountingType=" + accountingType
|
||||||
+ ", seriesRequest=" + seriesRequest + ", seriesResponse="
|
+ ", seriesRequest=" + seriesRequest + ", seriesResponse="
|
||||||
+ seriesResponse + ", availableFilterKeys="
|
+ seriesResponse + ", availableFilterKeys="
|
||||||
+ availableFilterKeys + ", availableContext="
|
+ availableFilterKeys + ", availableContext="
|
||||||
+ availableContext + ", rootScope=" + rootScope + "]";
|
+ availableContext + ", availableSpaces=" + availableSpaces
|
||||||
|
+ ", rootScope=" + rootScope + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,12 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
||||||
private TaskRequest taskRequest;
|
private TaskRequest taskRequest;
|
||||||
private AccountingCache accountingCache;
|
private AccountingCache accountingCache;
|
||||||
|
|
||||||
public AccountingClientCallable(TaskRequest taskRequest, AccountingCache accountingCache) {
|
public AccountingClientCallable(TaskRequest taskRequest,
|
||||||
|
AccountingCache accountingCache) {
|
||||||
super();
|
super();
|
||||||
this.taskRequest = taskRequest;
|
this.taskRequest = taskRequest;
|
||||||
this.accountingCache = accountingCache;
|
this.accountingCache = accountingCache;
|
||||||
logger.debug("AccountingClientCallable: "+taskRequest);
|
logger.debug("AccountingClientCallable: " + taskRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -41,23 +42,25 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
HttpSession httpSession = taskRequest.getHttpSession();
|
HttpSession httpSession = taskRequest.getHttpSession();
|
||||||
if(httpSession==null){
|
if (httpSession == null) {
|
||||||
logger.error("Error retrieving HttpSession in AccountingClientCallable: is null");
|
logger.error("Error retrieving HttpSession in AccountingClientCallable: is null");
|
||||||
return TaskStatus.ERROR;
|
return TaskStatus.ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
logger.info("Set SecurityToken: "+taskRequest.getServiceCredentials().getToken());
|
|
||||||
SecurityTokenProvider.instance.set(taskRequest.getServiceCredentials().getToken());
|
|
||||||
logger.info("Set ScopeProvider: "+taskRequest.getServiceCredentials().getScope());
|
|
||||||
ScopeProvider.instance.set(taskRequest.getServiceCredentials().getScope());
|
|
||||||
|
|
||||||
|
|
||||||
AccountingCallerInterface accountingCaller;
|
AccountingCallerInterface accountingCaller;
|
||||||
if (Constants.DEBUG_MODE) {
|
if (Constants.DEBUG_MODE) {
|
||||||
accountingCaller = new AccountingCallerTester();
|
accountingCaller = new AccountingCallerTester();
|
||||||
} else {
|
} else {
|
||||||
|
logger.info("Set SecurityToken: "
|
||||||
|
+ taskRequest.getServiceCredentials().getToken());
|
||||||
|
SecurityTokenProvider.instance.set(taskRequest
|
||||||
|
.getServiceCredentials().getToken());
|
||||||
|
logger.info("Set ScopeProvider: "
|
||||||
|
+ taskRequest.getServiceCredentials().getScope());
|
||||||
|
ScopeProvider.instance.set(taskRequest.getServiceCredentials()
|
||||||
|
.getScope());
|
||||||
accountingCaller = new AccountingCaller();
|
accountingCaller = new AccountingCaller();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SeriesResponse seriesResponse = null;
|
SeriesResponse seriesResponse = null;
|
||||||
|
@ -96,7 +99,6 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
||||||
+ taskRequest.getAccountingType().name()
|
+ taskRequest.getAccountingType().name()
|
||||||
+ "_" + taskRequest.getSeriesRequest().toString());
|
+ "_" + taskRequest.getSeriesRequest().toString());
|
||||||
|
|
||||||
|
|
||||||
accountingCache.putSeries(key, seriesResponse);
|
accountingCache.putSeries(key, seriesResponse);
|
||||||
|
|
||||||
AccountingStateData accountingStateData = new AccountingStateData(
|
AccountingStateData accountingStateData = new AccountingStateData(
|
||||||
|
|
|
@ -139,17 +139,25 @@ public class AccountingClientDaemon implements Runnable {
|
||||||
private void retrieveTimeOut() {
|
private void retrieveTimeOut() {
|
||||||
long timeo = 0;
|
long timeo = 0;
|
||||||
|
|
||||||
try {
|
if (Constants.DEBUG_MODE) {
|
||||||
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
logger.info("AccountingManager use default configuration for threadpool");
|
||||||
String scope = groupManagement
|
timeo = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS;
|
||||||
.getInfrastructureScope(groupManagement.getRootVO()
|
} else {
|
||||||
.getGroupId());
|
|
||||||
logger.debug("Retrieving thread pool timeout in scope: " + scope);
|
try {
|
||||||
ThreadPoolInfo threadPoolInfo = BuildThreadPoolInfo.build(scope);
|
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
||||||
timeo = threadPoolInfo.getTimeout();
|
String scope = groupManagement
|
||||||
} catch (Throwable e) {
|
.getInfrastructureScope(groupManagement.getRootVO()
|
||||||
logger.error("Error retrieving thread pool timeout!", e);
|
.getGroupId());
|
||||||
return;
|
logger.debug("Retrieving thread pool timeout in scope: "
|
||||||
|
+ scope);
|
||||||
|
ThreadPoolInfo threadPoolInfo = BuildThreadPoolInfo
|
||||||
|
.build(scope);
|
||||||
|
timeo = threadPoolInfo.getTimeout();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Error retrieving thread pool timeout!", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeo > 0) {
|
if (timeo > 0) {
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.gcube.portlets.admin.accountingmanager.server.util.TaskRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.util.TaskWrapper;
|
import org.gcube.portlets.admin.accountingmanager.server.util.TaskWrapper;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.Constants;
|
import org.gcube.portlets.admin.accountingmanager.shared.Constants;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
|
@ -107,9 +108,23 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
||||||
try {
|
try {
|
||||||
ServiceCredentials serviceCredentials = SessionUtil
|
ServiceCredentials serviceCredentials = SessionUtil
|
||||||
.getServiceCredentials(this.getThreadLocalRequest());
|
.getServiceCredentials(this.getThreadLocalRequest());
|
||||||
|
logger.debug("getEnableTabs()");
|
||||||
|
|
||||||
|
boolean isRootScope=false;
|
||||||
|
if (Constants.DEBUG_MODE) {
|
||||||
|
isRootScope=true;
|
||||||
|
} else {
|
||||||
|
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
||||||
|
isRootScope = groupManagement.isRootVO(groupManagement
|
||||||
|
.getGroupIdFromInfrastructureScope(serviceCredentials
|
||||||
|
.getScope()));
|
||||||
|
}
|
||||||
|
logger.debug("RootScope: " + isRootScope);
|
||||||
|
|
||||||
|
|
||||||
EnableTabs enableTabs = BuildEnableTabs.build(serviceCredentials
|
EnableTabs enableTabs = BuildEnableTabs.build(serviceCredentials
|
||||||
.getScope());
|
.getScope(), isRootScope);
|
||||||
|
logger.debug("EnableTabs: " + enableTabs);
|
||||||
return enableTabs;
|
return enableTabs;
|
||||||
|
|
||||||
} catch (ServiceException e) {
|
} catch (ServiceException e) {
|
||||||
|
@ -125,8 +140,7 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
||||||
@Override
|
@Override
|
||||||
public Long getClientMonitorTimeout() throws ServiceException {
|
public Long getClientMonitorTimeout() throws ServiceException {
|
||||||
try {
|
try {
|
||||||
SessionUtil
|
SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||||||
.getServiceCredentials(this.getThreadLocalRequest());
|
|
||||||
|
|
||||||
ServletContext sc = getServletContext();
|
ServletContext sc = getServletContext();
|
||||||
Long timeout = (Long) sc
|
Long timeout = (Long) sc
|
||||||
|
@ -141,13 +155,12 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
||||||
throw e;
|
throw e;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
logger.error("getClientMonitorTimeout(): " + e.getLocalizedMessage(), e);
|
logger.error(
|
||||||
|
"getClientMonitorTimeout(): " + e.getLocalizedMessage(), e);
|
||||||
throw new ServiceException(e.getLocalizedMessage());
|
throw new ServiceException(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
@ -384,6 +397,39 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Spaces getSpaces() throws ServiceException {
|
||||||
|
try {
|
||||||
|
HttpServletRequest httpRequest = this.getThreadLocalRequest();
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
ServiceCredentials serviceCredentials = SessionUtil
|
||||||
|
.getServiceCredentials(httpRequest);
|
||||||
|
|
||||||
|
AccountingCallerInterface accountingCaller;
|
||||||
|
if (Constants.DEBUG_MODE) {
|
||||||
|
accountingCaller = new AccountingCallerTester();
|
||||||
|
} else {
|
||||||
|
accountingCaller = new AccountingCaller();
|
||||||
|
}
|
||||||
|
Spaces categories = accountingCaller.getSpaces();
|
||||||
|
|
||||||
|
return categories;
|
||||||
|
|
||||||
|
} catch (ServiceException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw e;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.error("getCategories(): " + e.getLocalizedMessage(), e);
|
||||||
|
throw new ServiceException(e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
@ -424,16 +470,16 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
||||||
if (Constants.DEBUG_MODE) {
|
if (Constants.DEBUG_MODE) {
|
||||||
logger.debug("RootScope: " + true);
|
logger.debug("RootScope: " + true);
|
||||||
return true;
|
return true;
|
||||||
|
} else {
|
||||||
|
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
||||||
|
Boolean isRoot = groupManagement.isRootVO(groupManagement
|
||||||
|
.getGroupIdFromInfrastructureScope(serviceCredentials
|
||||||
|
.getScope()));
|
||||||
|
|
||||||
|
logger.debug("RootScope: " + isRoot);
|
||||||
|
return isRoot;
|
||||||
}
|
}
|
||||||
|
|
||||||
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
|
||||||
Boolean isRoot = groupManagement.isRootVO(groupManagement
|
|
||||||
.getGroupIdFromInfrastructureScope(serviceCredentials
|
|
||||||
.getScope()));
|
|
||||||
|
|
||||||
logger.debug("RootScope: " + isRoot);
|
|
||||||
return isRoot;
|
|
||||||
|
|
||||||
} catch (ServiceException e) {
|
} catch (ServiceException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw e;
|
throw e;
|
||||||
|
|
|
@ -6,19 +6,24 @@ import org.gcube.portlets.admin.accountingmanager.server.amservice.command.Accou
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandContext;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandContext;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandGetFilterKeys;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandGetFilterKeys;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandGetFilterValues;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandGetFilterValues;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandGetSpaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandTop;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.command.AccountingCommandTop;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Job;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Job;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Portlet;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Portlet;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Service;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Service;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Space;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Storage;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Storage;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Task;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuery4Task;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryBasic;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryBasic;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryBuilder;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryBuilder;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryContext;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryContext;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryDirector;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryDirector;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuerySpaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryTop;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQueryTop;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
||||||
|
@ -57,6 +62,14 @@ public class AccountingCaller implements AccountingCallerInterface {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Spaces getSpaces() throws ServiceException {
|
||||||
|
AccountingCommandGetSpaces accountingCommand = new AccountingCommandGetSpaces();
|
||||||
|
return accountingCommand.execute();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public SeriesResponse getSeries(AccountingType accountingType,
|
public SeriesResponse getSeries(AccountingType accountingType,
|
||||||
SeriesRequest seriesRequest) throws ServiceException {
|
SeriesRequest seriesRequest) throws ServiceException {
|
||||||
try {
|
try {
|
||||||
|
@ -94,6 +107,11 @@ public class AccountingCaller implements AccountingCallerInterface {
|
||||||
AccountingCommandContext accountingCommandContext = new AccountingCommandContext(
|
AccountingCommandContext accountingCommandContext = new AccountingCommandContext(
|
||||||
accountingQueryContext, accountingType);
|
accountingQueryContext, accountingType);
|
||||||
return accountingCommandContext.execute();
|
return accountingCommandContext.execute();
|
||||||
|
case Spaces:
|
||||||
|
AccountingQuerySpaces accountingQuerySpace = (AccountingQuerySpaces) query;
|
||||||
|
AccountingCommandSpaces accountingCommandSpace = new AccountingCommandSpaces(
|
||||||
|
accountingQuerySpace, accountingType);
|
||||||
|
return accountingCommandSpace.execute();
|
||||||
default:
|
default:
|
||||||
throw new ServiceException(
|
throw new ServiceException(
|
||||||
"Error in invocation: Operation not supported");
|
"Error in invocation: Operation not supported");
|
||||||
|
@ -130,6 +148,8 @@ public class AccountingCaller implements AccountingCallerInterface {
|
||||||
return new AccountingQuery4Storage(seriesRequest);
|
return new AccountingQuery4Storage(seriesRequest);
|
||||||
case TASK:
|
case TASK:
|
||||||
return new AccountingQuery4Task(seriesRequest);
|
return new AccountingQuery4Task(seriesRequest);
|
||||||
|
case SPACE:
|
||||||
|
return new AccountingQuery4Space(seriesRequest);
|
||||||
default:
|
default:
|
||||||
throw new ServiceException("Error request type is unknow!");
|
throw new ServiceException("Error request type is unknow!");
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
||||||
|
@ -22,11 +23,11 @@ public interface AccountingCallerInterface {
|
||||||
throws ServiceException;
|
throws ServiceException;
|
||||||
|
|
||||||
public FilterValuesResponse getFilterValues(
|
public FilterValuesResponse getFilterValues(
|
||||||
FilterValuesRequest filterValuesRequest)
|
FilterValuesRequest filterValuesRequest) throws ServiceException;
|
||||||
throws ServiceException;
|
|
||||||
|
public Spaces getSpaces() throws ServiceException;
|
||||||
|
|
||||||
public SeriesResponse getSeries(AccountingType accountingType,
|
public SeriesResponse getSeries(AccountingType accountingType,
|
||||||
SeriesRequest seriesRequest)
|
SeriesRequest seriesRequest) throws ServiceException;
|
||||||
throws ServiceException;
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -12,6 +12,7 @@ import java.util.List;
|
||||||
import org.gcube.accounting.analytics.TemporalConstraint;
|
import org.gcube.accounting.analytics.TemporalConstraint;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterTop;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterTop;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Context;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
||||||
|
@ -21,6 +22,7 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesReques
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesJob;
|
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.SeriesResponse;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesService;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesSpace;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesStorage;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobBasic;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobBasic;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobContext;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.job.SeriesJobContext;
|
||||||
|
@ -36,6 +38,10 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.S
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceDataTop;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceDataTop;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceDefinition;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceDefinition;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceTop;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.service.SeriesServiceTop;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceDataSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceDefinition;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageBasic;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageBasic;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageContext;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageContext;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageData;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageData;
|
||||||
|
@ -99,7 +105,7 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
||||||
try {
|
try {
|
||||||
logger.debug("getFilterValue(): [FilterValueRequest="
|
logger.debug("getFilterValue(): [FilterValueRequest="
|
||||||
+ filterValuesRequest + "]");
|
+ filterValuesRequest + "]");
|
||||||
FilterValuesResponse filterValuesResponse=null;
|
FilterValuesResponse filterValuesResponse = null;
|
||||||
if (filterValuesRequest == null
|
if (filterValuesRequest == null
|
||||||
|| filterValuesRequest.getAccountingType() == null
|
|| filterValuesRequest.getAccountingType() == null
|
||||||
|| filterValuesRequest.getFilterKey() == null) {
|
|| filterValuesRequest.getFilterKey() == null) {
|
||||||
|
@ -116,15 +122,11 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
||||||
|
|
||||||
switch (filterValuesRequest.getAccountingType()) {
|
switch (filterValuesRequest.getAccountingType()) {
|
||||||
case JOB:
|
case JOB:
|
||||||
values = Arrays.asList(vals);
|
|
||||||
case PORTLET:
|
case PORTLET:
|
||||||
values = Arrays.asList(vals);
|
|
||||||
case SERVICE:
|
case SERVICE:
|
||||||
values = Arrays.asList(vals);
|
|
||||||
case STORAGE:
|
case STORAGE:
|
||||||
values = Arrays.asList(vals);
|
|
||||||
case TASK:
|
case TASK:
|
||||||
values = Arrays.asList(vals);
|
case SPACE:
|
||||||
default:
|
default:
|
||||||
values = Arrays.asList(vals);
|
values = Arrays.asList(vals);
|
||||||
}
|
}
|
||||||
|
@ -134,8 +136,7 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filterValuesResponse = new FilterValuesResponse(
|
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||||
filterValues);
|
|
||||||
return filterValuesResponse;
|
return filterValuesResponse;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
logger.error("Error in getFilterValues(): "
|
logger.error("Error in getFilterValues(): "
|
||||||
|
@ -435,6 +436,81 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
||||||
seriesResponse = new SeriesService(serieServiceDefinition);
|
seriesResponse = new SeriesService(serieServiceDefinition);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case SPACE:
|
||||||
|
SeriesSpaceDefinition serieSpaceDefinition = null;
|
||||||
|
if (seriesRequest.getAccountingFilterDefinition()
|
||||||
|
.getChartType() != null) {
|
||||||
|
ArrayList<SeriesSpaceData> seriesSpaceData = new ArrayList<>();
|
||||||
|
switch (seriesRequest.getAccountingPeriod().getPeriod()) {
|
||||||
|
case DAILY:
|
||||||
|
case HOURLY:
|
||||||
|
case MINUTELY:
|
||||||
|
for (int i = 0; i < 30; i++) {
|
||||||
|
SeriesSpaceData data = new SeriesSpaceData(
|
||||||
|
new Date(), new Double(
|
||||||
|
10000 * Math.random()).longValue());
|
||||||
|
seriesSpaceData.add(data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MONTHLY:
|
||||||
|
while (startCalendar.compareTo(endCalendar) <= 0) {
|
||||||
|
SeriesSpaceData data = new SeriesSpaceData(
|
||||||
|
startCalendar.getTime(), new Double(
|
||||||
|
10000 * Math.random()).longValue());
|
||||||
|
seriesSpaceData.add(data);
|
||||||
|
startCalendar.add(Calendar.MONTH, 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case YEARLY:
|
||||||
|
while (startCalendar.compareTo(endCalendar) <= 0) {
|
||||||
|
SeriesSpaceData data = new SeriesSpaceData(
|
||||||
|
startCalendar.getTime(), new Double(
|
||||||
|
10000 * Math.random()).longValue());
|
||||||
|
seriesSpaceData.add(data);
|
||||||
|
startCalendar.add(Calendar.YEAR, 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (seriesRequest.getAccountingFilterDefinition()
|
||||||
|
.getChartType()) {
|
||||||
|
case Basic:
|
||||||
|
case Top:
|
||||||
|
case Context:
|
||||||
|
break;
|
||||||
|
case Spaces:
|
||||||
|
// AccountingFilterContext accountingFilterContext =
|
||||||
|
// (AccountingFilterContext) seriesRequest
|
||||||
|
// .getAccountingFilterDefinition();
|
||||||
|
ArrayList<SeriesSpaceDataSpaces> seriesSpaceDataSpacesList = new ArrayList<>();
|
||||||
|
ArrayList<String> spacesList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 1; i < 3; i++) {
|
||||||
|
String space = new String("Space" + i);
|
||||||
|
spacesList.add(space);
|
||||||
|
SeriesSpaceDataSpaces seriesSpaceDataSpaces = new SeriesSpaceDataSpaces(
|
||||||
|
space, seriesSpaceData);
|
||||||
|
seriesSpaceDataSpacesList
|
||||||
|
.add(seriesSpaceDataSpaces);
|
||||||
|
}
|
||||||
|
|
||||||
|
Spaces spaces=new Spaces(spacesList);
|
||||||
|
serieSpaceDefinition = new SeriesSpaceSpaces(
|
||||||
|
spaces, seriesSpaceDataSpacesList);
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
seriesResponse = new SeriesSpace(serieSpaceDefinition);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case STORAGE:
|
case STORAGE:
|
||||||
SeriesStorageDefinition serieStorageDefinition = null;
|
SeriesStorageDefinition serieStorageDefinition = null;
|
||||||
if (seriesRequest.getAccountingFilterDefinition()
|
if (seriesRequest.getAccountingFilterDefinition()
|
||||||
|
@ -549,4 +625,13 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Spaces getSpaces() throws ServiceException {
|
||||||
|
ArrayList<String> categoriesList = new ArrayList<>();
|
||||||
|
categoriesList.add("Space1");
|
||||||
|
categoriesList.add("Space2");
|
||||||
|
Spaces categories = new Spaces(categoriesList);
|
||||||
|
return categories;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.util.SortedSet;
|
||||||
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
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.FilterKey;
|
||||||
|
@ -15,20 +16,21 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Giancarlo Panichi
|
* @author Giancarlo Panichi email: <a
|
||||||
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayList<FilterKey>> {
|
public class AccountingCommandGetFilterKeys implements
|
||||||
private static final Logger logger = LoggerFactory.getLogger(AccountingCommandGetFilterKeys.class);
|
AccountingCommand<ArrayList<FilterKey>> {
|
||||||
|
private static final Logger logger = LoggerFactory
|
||||||
|
.getLogger(AccountingCommandGetFilterKeys.class);
|
||||||
|
|
||||||
private AccountingType accountingType;
|
private AccountingType accountingType;
|
||||||
|
|
||||||
public AccountingCommandGetFilterKeys(AccountingType accountingType){
|
public AccountingCommandGetFilterKeys(AccountingType accountingType) {
|
||||||
this.accountingType=accountingType;
|
this.accountingType = accountingType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<FilterKey> execute() throws ServiceException {
|
public ArrayList<FilterKey> execute() throws ServiceException {
|
||||||
try {
|
try {
|
||||||
|
@ -40,29 +42,34 @@ public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayLi
|
||||||
ArrayList<FilterKey> filterKeys = new ArrayList<FilterKey>();
|
ArrayList<FilterKey> filterKeys = new ArrayList<FilterKey>();
|
||||||
SortedSet<String> keys;
|
SortedSet<String> keys;
|
||||||
|
|
||||||
|
|
||||||
switch (accountingType) {
|
switch (accountingType) {
|
||||||
case JOB:
|
case JOB:
|
||||||
keys = AccountingPersistenceQuery.getQuerableKeys(AggregatedJobUsageRecord.class);
|
keys = AccountingPersistenceQuery
|
||||||
|
.getQuerableKeys(AggregatedJobUsageRecord.class);
|
||||||
break;
|
break;
|
||||||
case PORTLET:
|
case PORTLET:
|
||||||
// keys=rrq.getKeys(AggregatedPortletUsageRecord.class);
|
// keys=rrq.getKeys(AggregatedPortletUsageRecord.class);
|
||||||
return filterKeys;
|
return filterKeys;
|
||||||
case SERVICE:
|
case SERVICE:
|
||||||
keys = AccountingPersistenceQuery.getQuerableKeys(AggregatedServiceUsageRecord.class);
|
keys = AccountingPersistenceQuery
|
||||||
|
.getQuerableKeys(AggregatedServiceUsageRecord.class);
|
||||||
break;
|
break;
|
||||||
case STORAGE:
|
case STORAGE:
|
||||||
keys =AccountingPersistenceQuery.getQuerableKeys(AggregatedStorageUsageRecord.class);
|
keys = AccountingPersistenceQuery
|
||||||
|
.getQuerableKeys(AggregatedStorageUsageRecord.class);
|
||||||
break;
|
break;
|
||||||
case TASK:
|
case TASK:
|
||||||
// keys=rrq.getKeys(AggregatedTaskUsageRecord.class);
|
// keys=rrq.getKeys(AggregatedTaskUsageRecord.class);
|
||||||
return filterKeys;
|
return filterKeys;
|
||||||
|
case SPACE:
|
||||||
|
keys = AccountingPersistenceQuery
|
||||||
|
.getQuerableKeys(AggregatedStorageStatusRecord.class);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return filterKeys;
|
return filterKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.debug("AccountingPersistenceQuery.getQuerableKeys: " + keys);
|
||||||
logger.debug("AccountingPersistenceQuery.getQuerableKeys: "+keys);
|
|
||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
if (key != null && !key.isEmpty()) {
|
if (key != null && !key.isEmpty()) {
|
||||||
filterKeys.add(new FilterKey(key));
|
filterKeys.add(new FilterKey(key));
|
||||||
|
@ -71,7 +78,8 @@ public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayLi
|
||||||
logger.debug("List FilterKeys:" + filterKeys);
|
logger.debug("List FilterKeys:" + filterKeys);
|
||||||
return filterKeys;
|
return filterKeys;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
logger.error("Error in AccountingCommandGetFilterKeys(): " + e.getLocalizedMessage());
|
logger.error("Error in AccountingCommandGetFilterKeys(): "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("No keys available!");
|
throw new ServiceException("No keys available!");
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap;
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
||||||
|
@ -125,6 +126,11 @@ public class AccountingCommandGetFilterValues implements
|
||||||
// .getFilterKey().getKey());
|
// .getFilterKey().getKey());
|
||||||
filterValuesResponse = new FilterValuesResponse(filterValues);
|
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||||
return filterValuesResponse;
|
return filterValuesResponse;
|
||||||
|
case SPACE:
|
||||||
|
values = apq.getFilterValues(
|
||||||
|
AggregatedStorageStatusRecord.class, tc, filters,
|
||||||
|
filterValuesRequest.getFilterKey().getKey());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
filterValuesResponse = new FilterValuesResponse(filterValues);
|
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||||
return filterValuesResponse;
|
return filterValuesResponse;
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.command;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.SortedSet;
|
||||||
|
|
||||||
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingCommandGetSpaces implements
|
||||||
|
AccountingCommand<Spaces> {
|
||||||
|
private static final Logger logger = LoggerFactory
|
||||||
|
.getLogger(AccountingCommandGetSpaces.class);
|
||||||
|
|
||||||
|
public AccountingCommandGetSpaces() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Spaces execute() throws ServiceException {
|
||||||
|
try {
|
||||||
|
logger.debug("getSpaces()");
|
||||||
|
SortedSet<String> keys = null;
|
||||||
|
AccountingPersistenceQuery apq = AccountingPersistenceQueryFactory
|
||||||
|
.getInstance();
|
||||||
|
|
||||||
|
keys = apq.getSpaceProvidersIds();
|
||||||
|
|
||||||
|
logger.debug("AccountingPersistenceQuery.getSpaces: " + keys);
|
||||||
|
if (keys == null || keys.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<String> spaceList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String key : keys) {
|
||||||
|
if (key != null && !key.isEmpty()) {
|
||||||
|
spaceList.add(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Spaces categories = new Spaces(spaceList);
|
||||||
|
|
||||||
|
logger.debug("Spaces:" + categories);
|
||||||
|
|
||||||
|
return categories;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Error in AccountingCommandGetSpaces(): "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException("No spaces available!");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.command;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.SortedMap;
|
||||||
|
|
||||||
|
import org.gcube.accounting.analytics.Filter;
|
||||||
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.query.AccountingQuerySpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.response.SeriesResponse4SpaceSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.response.SeriesResponseBuilder;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.response.SeriesResponseDirector;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingCommandSpaces implements
|
||||||
|
AccountingCommand<SeriesResponse> {
|
||||||
|
private static final Logger logger = LoggerFactory
|
||||||
|
.getLogger(AccountingCommandSpaces.class);
|
||||||
|
|
||||||
|
private AccountingQuerySpaces accountingQuerySpaces;
|
||||||
|
private AccountingType accountingType;
|
||||||
|
|
||||||
|
public AccountingCommandSpaces(
|
||||||
|
AccountingQuerySpaces accountingQuerySpaces,
|
||||||
|
AccountingType accountingType) {
|
||||||
|
this.accountingQuerySpaces = accountingQuerySpaces;
|
||||||
|
this.accountingType = accountingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SeriesResponse execute() throws ServiceException {
|
||||||
|
try {
|
||||||
|
AccountingPersistenceQuery apq = AccountingPersistenceQueryFactory
|
||||||
|
.getInstance();
|
||||||
|
|
||||||
|
logger.debug("Query Spaces: " + accountingQuerySpaces.getSpaces());
|
||||||
|
|
||||||
|
SortedMap<Filter, SortedMap<Calendar, Long>> spaceSM;
|
||||||
|
|
||||||
|
Spaces spaces = accountingQuerySpaces.getSpaces();
|
||||||
|
|
||||||
|
if (spaces == null) {
|
||||||
|
throw new ServiceException(
|
||||||
|
"Error retrieving Spaces param: null!");
|
||||||
|
}
|
||||||
|
|
||||||
|
spaceSM = apq.getSpaceTimeSeries(accountingQuerySpaces.getType(),
|
||||||
|
accountingQuerySpaces.getTemporalConstraint(),
|
||||||
|
accountingQuerySpaces.getFilters(), spaces.getSpacesList());
|
||||||
|
|
||||||
|
if (spaceSM == null) {
|
||||||
|
throw new ServiceException(
|
||||||
|
"Error retrieving info for space: sorted map is null!");
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("SpaceSM: " + spaceSM);
|
||||||
|
|
||||||
|
SeriesResponseBuilder seriesResponseBuilder = getSeriesResponseBuilder(
|
||||||
|
accountingType, spaces, spaceSM);
|
||||||
|
|
||||||
|
SeriesResponseDirector seriesResponseDirector = new SeriesResponseDirector();
|
||||||
|
seriesResponseDirector
|
||||||
|
.setSeriesResponseBuilder(seriesResponseBuilder);
|
||||||
|
seriesResponseDirector.constructSeriesResponse();
|
||||||
|
SeriesResponse seriesResponse = seriesResponseDirector
|
||||||
|
.getSeriesResponse();
|
||||||
|
|
||||||
|
if (seriesResponse == null) {
|
||||||
|
throw new ServiceException("Error creating series response!");
|
||||||
|
}
|
||||||
|
logger.debug("SeriesResponse Created: " + seriesResponse);
|
||||||
|
return seriesResponse;
|
||||||
|
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Error in AccountingCommandSpace(): "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException("No data available!");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SeriesResponseBuilder getSeriesResponseBuilder(
|
||||||
|
AccountingType accountingType, Spaces spaces,
|
||||||
|
SortedMap<Filter, SortedMap<Calendar, Long>> spaceSM)
|
||||||
|
throws ServiceException {
|
||||||
|
if (accountingType == null) {
|
||||||
|
throw new ServiceException("Error accounting type is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (accountingType) {
|
||||||
|
case SPACE:
|
||||||
|
return new SeriesResponse4SpaceSpaces(spaces, spaceSM);
|
||||||
|
default:
|
||||||
|
throw new ServiceException("Error request type is unknow!");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,106 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.query;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
import org.gcube.accounting.analytics.Filter;
|
||||||
|
import org.gcube.accounting.analytics.TemporalConstraint;
|
||||||
|
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilter;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilterSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accounting Query 4 Space
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingQuery4Space extends AccountingQueryBuilder {
|
||||||
|
protected static Logger logger = LoggerFactory
|
||||||
|
.getLogger(AccountingQuery4Space.class);
|
||||||
|
private SeriesRequest seriesRequest;
|
||||||
|
|
||||||
|
public AccountingQuery4Space(SeriesRequest seriesRequest) {
|
||||||
|
this.seriesRequest = seriesRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildOpEx() throws ServiceException {
|
||||||
|
|
||||||
|
Calendar startCalendar = GregorianCalendar
|
||||||
|
.getInstance(TemporalConstraint.DEFAULT_TIME_ZONE);
|
||||||
|
try {
|
||||||
|
startCalendar.setTime(sdf.parse(seriesRequest.getAccountingPeriod()
|
||||||
|
.getStartDate()));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException("Start Date not valid!");
|
||||||
|
}
|
||||||
|
|
||||||
|
Calendar endCalendar = GregorianCalendar
|
||||||
|
.getInstance(TemporalConstraint.DEFAULT_TIME_ZONE);
|
||||||
|
try {
|
||||||
|
endCalendar.setTime(sdf.parse(seriesRequest.getAccountingPeriod()
|
||||||
|
.getEndDate()));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException("End Date not valid!");
|
||||||
|
}
|
||||||
|
|
||||||
|
endCalendar.set(GregorianCalendar.HOUR_OF_DAY, 23);
|
||||||
|
endCalendar.set(GregorianCalendar.MINUTE, 59);
|
||||||
|
endCalendar.set(GregorianCalendar.SECOND, 59);
|
||||||
|
endCalendar.set(GregorianCalendar.MILLISECOND, 999);
|
||||||
|
|
||||||
|
TemporalConstraint temporalConstraint = new TemporalConstraint(
|
||||||
|
startCalendar.getTimeInMillis(), endCalendar.getTimeInMillis(),
|
||||||
|
PeriodModeMap.getMode(seriesRequest.getAccountingPeriod()
|
||||||
|
.getPeriod()));
|
||||||
|
|
||||||
|
ArrayList<Filter> filters = null;
|
||||||
|
ArrayList<AccountingFilter> accountingFilters = null;
|
||||||
|
AccountingQuery invocation = null;
|
||||||
|
|
||||||
|
if (seriesRequest != null
|
||||||
|
&& seriesRequest.getAccountingFilterDefinition() != null) {
|
||||||
|
if (seriesRequest.getAccountingFilterDefinition() instanceof AccountingFilterSpaces) {
|
||||||
|
AccountingFilterSpaces accountingFilterSpace = (AccountingFilterSpaces) seriesRequest
|
||||||
|
.getAccountingFilterDefinition();
|
||||||
|
accountingFilters = accountingFilterSpace.getFilters();
|
||||||
|
filters = new ArrayList<Filter>();
|
||||||
|
if (accountingFilters != null) {
|
||||||
|
for (AccountingFilter accountigFilters : accountingFilters) {
|
||||||
|
Filter filter = new Filter(accountigFilters
|
||||||
|
.getFilterKey().getKey(),
|
||||||
|
accountigFilters.getFilterValue());
|
||||||
|
filters.add(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
invocation = new AccountingQuerySpaces(
|
||||||
|
AggregatedStorageStatusRecord.class,
|
||||||
|
accountingFilterSpace.getSpaces(),
|
||||||
|
temporalConstraint, filters);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
logger.error("Invalid Request: " + seriesRequest);
|
||||||
|
throw new ServiceException("Invalid Request!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
logger.error("Invalid Request: " + seriesRequest);
|
||||||
|
throw new ServiceException("Invalid Request!");
|
||||||
|
}
|
||||||
|
|
||||||
|
accountingQuerySpec.setOp(invocation);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.query;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.gcube.accounting.analytics.Filter;
|
||||||
|
import org.gcube.accounting.analytics.TemporalConstraint;
|
||||||
|
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.ChartType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingQuerySpaces extends AccountingQuery {
|
||||||
|
private Class<? extends AggregatedUsageRecord<?, ?>> type;
|
||||||
|
private Spaces spaces;
|
||||||
|
private TemporalConstraint temporalConstraint;
|
||||||
|
private ArrayList<Filter> filters;
|
||||||
|
|
||||||
|
public AccountingQuerySpaces(
|
||||||
|
Class<? extends AggregatedUsageRecord<?, ?>> type, Spaces spaces,
|
||||||
|
TemporalConstraint temporalConstraint, ArrayList<Filter> filters) {
|
||||||
|
super();
|
||||||
|
chartType = ChartType.Spaces;
|
||||||
|
this.type = type;
|
||||||
|
this.temporalConstraint = temporalConstraint;
|
||||||
|
this.filters = filters;
|
||||||
|
this.spaces = spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Class<? extends AggregatedUsageRecord<?, ?>> getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(Class<? extends AggregatedUsageRecord<?, ?>> type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TemporalConstraint getTemporalConstraint() {
|
||||||
|
return temporalConstraint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemporalConstraint(TemporalConstraint temporalConstraint) {
|
||||||
|
this.temporalConstraint = temporalConstraint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Filter> getFilters() {
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFilters(ArrayList<Filter> filters) {
|
||||||
|
this.filters = filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spaces getSpaces() {
|
||||||
|
return spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpaces(Spaces spaces) {
|
||||||
|
this.spaces = spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "AccountingQuerySpaces [type=" + type + ", spaces=" + spaces
|
||||||
|
+ ", temporalConstraint=" + temporalConstraint + ", filters="
|
||||||
|
+ filters + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.response;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.SortedMap;
|
||||||
|
|
||||||
|
import org.gcube.accounting.analytics.Filter;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesSpace;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceData;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceDataSpaces;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.ServiceException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Categories Series Response 4 Space
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesResponse4SpaceSpaces extends SeriesResponseBuilder {
|
||||||
|
protected static Logger logger = LoggerFactory
|
||||||
|
.getLogger(SeriesResponse4SpaceSpaces.class);
|
||||||
|
private Spaces spaces;
|
||||||
|
private SortedMap<Filter, SortedMap<Calendar, Long>> spaceSM;
|
||||||
|
|
||||||
|
public SeriesResponse4SpaceSpaces(Spaces spaces,
|
||||||
|
SortedMap<Filter, SortedMap<Calendar, Long>> spaceSM) {
|
||||||
|
this.spaces = spaces;
|
||||||
|
this.spaceSM = spaceSM;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildSeriesResponse() throws ServiceException {
|
||||||
|
try {
|
||||||
|
if (spaceSM == null || spaceSM.isEmpty()) {
|
||||||
|
logger.error("Error creating series for space accounting: No data available!");
|
||||||
|
throw new ServiceException("No data available!");
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<SeriesSpaceDataSpaces> seriesSpaceDataContextList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Filter spaceValue : spaceSM.keySet()) {
|
||||||
|
|
||||||
|
ArrayList<SeriesSpaceData> series = new ArrayList<>();
|
||||||
|
SortedMap<Calendar, Long> infos = spaceSM.get(spaceValue);
|
||||||
|
for (Calendar calendar : infos.keySet()) {
|
||||||
|
Long value = infos.get(calendar);
|
||||||
|
|
||||||
|
series.add(new SeriesSpaceData(calendar.getTime(), value));
|
||||||
|
|
||||||
|
}
|
||||||
|
SeriesSpaceDataSpaces seriesSpaceDataContext = new SeriesSpaceDataSpaces(
|
||||||
|
spaceValue.getValue(), series);
|
||||||
|
seriesSpaceDataContextList.add(seriesSpaceDataContext);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SeriesSpaceSpaces seriesSpaceContext = new SeriesSpaceSpaces(
|
||||||
|
spaces, seriesSpaceDataContextList);
|
||||||
|
SeriesSpace seriesSpace = new SeriesSpace(seriesSpaceContext);
|
||||||
|
|
||||||
|
seriesResponseSpec.setSr(seriesSpace);
|
||||||
|
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Error creating series for space accounting categories chart: "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException(
|
||||||
|
"Error creating series for space accounting categories chart: "
|
||||||
|
+ e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,24 +21,30 @@ public class BuildEnableTabs {
|
||||||
private static Logger logger = LoggerFactory
|
private static Logger logger = LoggerFactory
|
||||||
.getLogger(BuildEnableTabs.class);
|
.getLogger(BuildEnableTabs.class);
|
||||||
|
|
||||||
public static EnableTabs build(String scope) throws ServiceException {
|
public static EnableTabs build(String scope, boolean isRootScope)
|
||||||
|
throws ServiceException {
|
||||||
ArrayList<EnableTab> enableTabList = new ArrayList<>();
|
ArrayList<EnableTab> enableTabList = new ArrayList<>();
|
||||||
|
|
||||||
if (Constants.DEBUG_MODE) {
|
if (Constants.DEBUG_MODE) {
|
||||||
EnableTab enableTabData = new EnableTab(
|
EnableTab enableTabDataSpace = new EnableTab(AccountingType.SPACE,
|
||||||
|
null);
|
||||||
|
enableTabList.add(enableTabDataSpace);
|
||||||
|
EnableTab enableTabDataService = new EnableTab(
|
||||||
AccountingType.SERVICE, null);
|
AccountingType.SERVICE, null);
|
||||||
enableTabList.add(enableTabData);
|
enableTabList.add(enableTabDataService);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
EnableTabsJAXB enableTabsJAXB=null;
|
EnableTabsJAXB enableTabsJAXB = null;
|
||||||
try {
|
try {
|
||||||
enableTabsJAXB= InformationSystemUtils
|
enableTabsJAXB = InformationSystemUtils
|
||||||
.retrieveEnableTab(scope);
|
.retrieveEnableTab(scope);
|
||||||
} catch(ServiceException e){
|
} catch (ServiceException e) {
|
||||||
logger.info(e.getLocalizedMessage());
|
logger.info(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("Enable Tabs: " + enableTabsJAXB);
|
logger.debug("Enable Tabs: " + enableTabsJAXB);
|
||||||
if (enableTabsJAXB != null && enableTabsJAXB.getEnableTabs() != null
|
if (enableTabsJAXB != null
|
||||||
|
&& enableTabsJAXB.getEnableTabs() != null
|
||||||
&& !enableTabsJAXB.getEnableTabs().isEmpty()) {
|
&& !enableTabsJAXB.getEnableTabs().isEmpty()) {
|
||||||
AccountingType type;
|
AccountingType type;
|
||||||
for (EnableTabJAXB enableTab : enableTabsJAXB.getEnableTabs()) {
|
for (EnableTabJAXB enableTab : enableTabsJAXB.getEnableTabs()) {
|
||||||
|
@ -49,29 +55,43 @@ public class BuildEnableTabs {
|
||||||
&& !enableTab.getRoles().isEmpty()) {
|
&& !enableTab.getRoles().isEmpty()) {
|
||||||
ArrayList<String> enableRoles = new ArrayList<>();
|
ArrayList<String> enableRoles = new ArrayList<>();
|
||||||
enableRoles.addAll(enableTab.getRoles());
|
enableRoles.addAll(enableTab.getRoles());
|
||||||
enableTabList.add(new EnableTab(type,
|
enableTabList.add(new EnableTab(type, enableRoles));
|
||||||
enableRoles));
|
|
||||||
} else {
|
} else {
|
||||||
enableTabList
|
enableTabList.add(new EnableTab(type, null));
|
||||||
.add(new EnableTab(type, null));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.info("AccountingManager use default configuration for scope: "+scope);
|
logger.info("AccountingManager use default configuration for scope: "
|
||||||
|
+ scope);
|
||||||
EnableTab enableTabDataService = new EnableTab(
|
EnableTab enableTabDataService = new EnableTab(
|
||||||
AccountingType.SERVICE, null);
|
AccountingType.SERVICE, null);
|
||||||
enableTabList.add(enableTabDataService);
|
enableTabList.add(enableTabDataService);
|
||||||
EnableTab enableTabDataStorage = new EnableTab(
|
EnableTab enableTabDataStorage = new EnableTab(
|
||||||
AccountingType.STORAGE, null);
|
AccountingType.STORAGE, null);
|
||||||
enableTabList.add(enableTabDataStorage);
|
enableTabList.add(enableTabDataStorage);
|
||||||
EnableTab enableTabDataJob = new EnableTab(
|
EnableTab enableTabDataJob = new EnableTab(AccountingType.JOB,
|
||||||
AccountingType.JOB, null);
|
null);
|
||||||
enableTabList.add(enableTabDataJob);
|
enableTabList.add(enableTabDataJob);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isRootScope) {
|
||||||
|
boolean spaceTabPresent = false;
|
||||||
|
for (EnableTab enableTab : enableTabList) {
|
||||||
|
if (enableTab.getAccountingType().compareTo(
|
||||||
|
AccountingType.SPACE) == 0) {
|
||||||
|
spaceTabPresent = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!spaceTabPresent) {
|
||||||
|
EnableTab enableTabDataSpace = new EnableTab(
|
||||||
|
AccountingType.SPACE, null);
|
||||||
|
enableTabList.add(enableTabDataSpace);
|
||||||
|
}
|
||||||
|
}
|
||||||
EnableTabs enableTabs = new EnableTabs(enableTabList);
|
EnableTabs enableTabs = new EnableTabs(enableTabList);
|
||||||
logger.debug("EnableTabsData: " + enableTabs);
|
logger.debug("EnableTabsData: " + enableTabs);
|
||||||
return enableTabs;
|
return enableTabs;
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingFilterSpaces extends AccountingFilterDefinition
|
||||||
|
implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -6805006183397381154L;
|
||||||
|
private Spaces spaces;
|
||||||
|
private ArrayList<AccountingFilter> filters;
|
||||||
|
|
||||||
|
public AccountingFilterSpaces() {
|
||||||
|
super();
|
||||||
|
this.chartType = ChartType.Spaces;
|
||||||
|
spaces = null;
|
||||||
|
filters = null;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param spaces
|
||||||
|
*/
|
||||||
|
public AccountingFilterSpaces(Spaces spaces) {
|
||||||
|
super();
|
||||||
|
chartType = ChartType.Spaces;
|
||||||
|
this.spaces = spaces;
|
||||||
|
this.filters = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param spaces
|
||||||
|
* @param filters
|
||||||
|
*/
|
||||||
|
public AccountingFilterSpaces(Spaces spaces,
|
||||||
|
ArrayList<AccountingFilter> filters) {
|
||||||
|
super();
|
||||||
|
chartType = ChartType.Spaces;
|
||||||
|
this.spaces = spaces;
|
||||||
|
this.filters = filters;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spaces getSpaces() {
|
||||||
|
return spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpaces(Spaces spaces) {
|
||||||
|
this.spaces = spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<AccountingFilter> getFilters() {
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFilters(ArrayList<AccountingFilter> filters) {
|
||||||
|
this.filters = filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "AccountingFilterSpaces [spaces=" + spaces + ", filters="
|
||||||
|
+ filters + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -14,7 +14,8 @@ public enum AccountingType {
|
||||||
SERVICE,
|
SERVICE,
|
||||||
PORTLET,
|
PORTLET,
|
||||||
TASK,
|
TASK,
|
||||||
JOB;
|
JOB,
|
||||||
|
SPACE;
|
||||||
|
|
||||||
public static AccountingType getTypeFromString(String value){
|
public static AccountingType getTypeFromString(String value){
|
||||||
for(AccountingType a:values()){
|
for(AccountingType a:values()){
|
||||||
|
|
|
@ -14,7 +14,7 @@ import java.util.List;
|
||||||
|
|
||||||
public enum ChartType {
|
public enum ChartType {
|
||||||
|
|
||||||
Basic("Basic"),Top("Top"), Context("Context");
|
Basic("Basic"),Top("Top"), Context("Context"), Spaces("Spaces");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Genres implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1704075020370137961L;
|
||||||
|
private ArrayList<String> genresList;
|
||||||
|
|
||||||
|
public Genres() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Genres(ArrayList<String> genresList) {
|
||||||
|
super();
|
||||||
|
this.genresList = genresList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getGenresList() {
|
||||||
|
return genresList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGenresList(ArrayList<String> genresList) {
|
||||||
|
this.genresList = genresList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Genres [genresList=" + genresList + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GenresData implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 719740085818609829L;
|
||||||
|
private String genre;
|
||||||
|
|
||||||
|
public GenresData() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenresData(String genre) {
|
||||||
|
super();
|
||||||
|
this.genre = genre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGenre() {
|
||||||
|
return genre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGenre(String genre) {
|
||||||
|
this.genre = genre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return genre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLabel(String genre) {
|
||||||
|
this.genre = genre;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "GenresData [genre=" + genre + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Spaces implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1704075020370137961L;
|
||||||
|
private ArrayList<String> spacesList;
|
||||||
|
|
||||||
|
public Spaces() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spaces(ArrayList<String> spacesList) {
|
||||||
|
super();
|
||||||
|
this.spacesList = spacesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getSpacesList() {
|
||||||
|
return spacesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpacesList(ArrayList<String> spacesList) {
|
||||||
|
this.spacesList = spacesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Spaces [spacesList=" + spacesList + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SpacesData implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 719740085818609829L;
|
||||||
|
private String space;
|
||||||
|
|
||||||
|
public SpacesData() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpacesData(String space) {
|
||||||
|
super();
|
||||||
|
this.space = space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSpace() {
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpace(String space) {
|
||||||
|
this.space = space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLabel(String space) {
|
||||||
|
this.space = space;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SpacesData [space=" + space + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data.response;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.response.space.SeriesSpaceDefinition;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesSpace extends SeriesResponse {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1311805875898959881L;
|
||||||
|
private SeriesSpaceDefinition serieSpaceDefinition;
|
||||||
|
|
||||||
|
public SeriesSpace() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SeriesSpace(SeriesSpaceDefinition serieSpaceDefinition) {
|
||||||
|
super();
|
||||||
|
this.serieSpaceDefinition = serieSpaceDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SeriesSpaceDefinition getSerieSpaceDefinition() {
|
||||||
|
return serieSpaceDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSerieSpaceDefinition(
|
||||||
|
SeriesSpaceDefinition serieSpaceDefinition) {
|
||||||
|
this.serieSpaceDefinition = serieSpaceDefinition;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SeriesSpace [serieSpaceDefinition=" + serieSpaceDefinition
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data.response.space;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author giancarlo email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesSpaceData implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -3946372711632911008L;
|
||||||
|
private Date date;
|
||||||
|
private Long dataVolume;
|
||||||
|
|
||||||
|
public SeriesSpaceData() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public SeriesSpaceData(Date date, Long dataVolume) {
|
||||||
|
super();
|
||||||
|
this.date = date;
|
||||||
|
this.dataVolume = dataVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Date getDate() {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDate(Date date) {
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDataVolume() {
|
||||||
|
return dataVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDataVolume(Long dataVolume) {
|
||||||
|
this.dataVolume = dataVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SeriesSpaceData [date=" + date + ", dataVolume=" + dataVolume
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data.response.space;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesSpaceDataSpaces implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1601335458514606805L;
|
||||||
|
private String space;
|
||||||
|
private ArrayList<SeriesSpaceData> series;
|
||||||
|
|
||||||
|
public SeriesSpaceDataSpaces() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param space
|
||||||
|
* @param series
|
||||||
|
*/
|
||||||
|
public SeriesSpaceDataSpaces(String space, ArrayList<SeriesSpaceData> series) {
|
||||||
|
super();
|
||||||
|
this.space = space;
|
||||||
|
this.series = series;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSpace() {
|
||||||
|
return space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpace(String space) {
|
||||||
|
this.space = space;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<SeriesSpaceData> getSeries() {
|
||||||
|
return series;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeries(ArrayList<SeriesSpaceData> series) {
|
||||||
|
this.series = series;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SeriesSpaceDataSpaces [space=" + space + ", series=" + series
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data.response.space;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.ChartType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesSpaceDefinition implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1371973741194014153L;
|
||||||
|
protected ChartType chartType;
|
||||||
|
|
||||||
|
public SeriesSpaceDefinition() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ChartType getChartType() {
|
||||||
|
return chartType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SeriesSpaceDefinition [chartType=" + chartType + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.shared.data.response.space;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.ChartType;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Giancarlo Panichi email: <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class SeriesSpaceSpaces extends SeriesSpaceDefinition {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1704880534497695545L;
|
||||||
|
private Spaces spaces;
|
||||||
|
private ArrayList<SeriesSpaceDataSpaces> seriesSpaceDataCategoriesList;
|
||||||
|
|
||||||
|
public SeriesSpaceSpaces() {
|
||||||
|
super();
|
||||||
|
this.chartType = ChartType.Spaces;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SeriesSpaceSpaces(Spaces spaces,
|
||||||
|
ArrayList<SeriesSpaceDataSpaces> seriesSpaceDataCategoriesList) {
|
||||||
|
super();
|
||||||
|
this.chartType = ChartType.Spaces;
|
||||||
|
this.spaces = spaces;
|
||||||
|
this.seriesSpaceDataCategoriesList = seriesSpaceDataCategoriesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Spaces getSpaces() {
|
||||||
|
return spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpaces(Spaces spaces) {
|
||||||
|
this.spaces = spaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<SeriesSpaceDataSpaces> getSeriesSpaceDataCategoriesList() {
|
||||||
|
return seriesSpaceDataCategoriesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeriesSpaceDataCategoriesList(
|
||||||
|
ArrayList<SeriesSpaceDataSpaces> seriesSpaceDataCategoriesList) {
|
||||||
|
this.seriesSpaceDataCategoriesList = seriesSpaceDataCategoriesList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SeriesSpaceSpaces [spaces=" + spaces
|
||||||
|
+ ", seriesSpaceDataCategoriesList="
|
||||||
|
+ seriesSpaceDataCategoriesList + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -49,10 +49,11 @@
|
||||||
name="locale" values="es" /> <set-property name="locale" value="en, it, es"
|
name="locale" values="es" /> <set-property name="locale" value="en, it, es"
|
||||||
/> <set-property-fallback name="locale" value="en" /> -->
|
/> <set-property-fallback name="locale" value="en" /> -->
|
||||||
|
|
||||||
<!-- <set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
|
<!--
|
||||||
|
<set-property name="log_ConsoleLogger" value="ENABLED" /> <set-property
|
||||||
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
|
name="log_DivLogger" value="ENABLED" /> <set-property name="log_GWTLogger"
|
||||||
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
|
value="ENABLED" /> <set-property name="log_SystemLogger" value="ENABLED"
|
||||||
/> -->
|
/> -->
|
||||||
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="ENABLED"
|
<!-- Not in GWT 2.6 <set-property name="log_FirebugLogger" value="ENABLED"
|
||||||
/> -->
|
/> -->
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 928 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
|
@ -8,5 +8,6 @@
|
||||||
<layout-cacheable>false</layout-cacheable>
|
<layout-cacheable>false</layout-cacheable>
|
||||||
<instanceable>false</instanceable>
|
<instanceable>false</instanceable>
|
||||||
<ajaxable>false</ajaxable>
|
<ajaxable>false</ajaxable>
|
||||||
|
<css-class-wrapper>AccountingManagerCSS</css-class-wrapper>
|
||||||
</portlet>
|
</portlet>
|
||||||
</liferay-portlet-app>
|
</liferay-portlet-app>
|
||||||
|
|