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"?>
|
||||
<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>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</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>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
|
@ -45,5 +45,5 @@
|
|||
</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-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>
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
<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"
|
||||
date="2017-02-28">
|
||||
<Change>Fixed download in case of multitab on different scopes</Change>
|
||||
|
|
2
pom.xml
|
@ -13,7 +13,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.gcube.portlets.admin</groupId>
|
||||
<artifactId>accounting-manager</artifactId>
|
||||
<version>1.6.0-SNAPSHOT</version>
|
||||
<version>1.7.0-SNAPSHOT</version>
|
||||
<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.shared.Constants;
|
||||
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.AccountingPeriodMode;
|
||||
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.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.response.SeriesResponse;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
||||
|
@ -189,7 +191,9 @@ public class AccountingManagerController {
|
|||
} else {
|
||||
this.enableTabs = enableTabs;
|
||||
EnableTabsEvent event = new EnableTabsEvent(enableTabs);
|
||||
Log.debug("Fire: " + event);
|
||||
eventBus.fireEvent(event);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -300,6 +304,7 @@ public class AccountingManagerController {
|
|||
case STORAGE:
|
||||
case TASK:
|
||||
case JOB:
|
||||
case SPACE:
|
||||
Log.debug("AccountingType: " + event.getAccountingType());
|
||||
accountingStateData = accountingState.getState(event
|
||||
.getAccountingType());
|
||||
|
@ -322,29 +327,17 @@ public class AccountingManagerController {
|
|||
if (enableTabs != null && enableTabs.getTabs() != null
|
||||
&& enableTabs.getTabs().size() > 0
|
||||
&& enableTabs.getTabs().get(0) != null) {
|
||||
Log.debug("Create DefaultChart");
|
||||
createDefaultChart(enableTabs.getTabs().get(0).getAccountingType());
|
||||
}
|
||||
}
|
||||
|
||||
private void createDefaultChart(AccountingType accountingType) {
|
||||
accountingMonitor = new AccountingMonitor();
|
||||
Date now = new Date();
|
||||
DateTimeFormat dtf = DateTimeFormat
|
||||
.getFormat(PredefinedFormat.YEAR_MONTH_DAY);
|
||||
String currentDate = dtf.format(now);
|
||||
Date date = dtf.parse(currentDate);
|
||||
Date lastMonth = new Date(date.getTime());
|
||||
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;
|
||||
|
||||
AccountingClientStateData accountingStateData = new AccountingClientStateData(
|
||||
accountingType, seriesRequest, null, null, null, rootScope);
|
||||
accountingType, rootScope);
|
||||
accountingState.setState(accountingType, accountingStateData);
|
||||
|
||||
retrieveFilterKey();
|
||||
|
@ -415,12 +408,90 @@ public class AccountingManagerController {
|
|||
accountingStateData.setAvailableContext(result);
|
||||
accountingState.setState(accountingType,
|
||||
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() {
|
||||
|
||||
AccountingManagerServiceAsync.INSTANCE.getSeriesInCache(accountingType,
|
||||
|
@ -461,13 +532,12 @@ public class AccountingManagerController {
|
|||
caught.getLocalizedMessage());
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Restore, accountingState.getState(accountingType));
|
||||
StateChangeType.Restore, accountingState
|
||||
.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
|
||||
}
|
||||
|
@ -493,10 +563,8 @@ public class AccountingManagerController {
|
|||
+ operationId);
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Restore, accountingState
|
||||
|
@ -520,10 +588,8 @@ public class AccountingManagerController {
|
|||
caught.getLocalizedMessage());
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Restore, accountingState
|
||||
|
@ -612,10 +678,8 @@ public class AccountingManagerController {
|
|||
UtilsGXT3.alert("Error Time Out", "Time Out");
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Restore,
|
||||
|
@ -698,13 +762,12 @@ public class AccountingManagerController {
|
|||
caught.printStackTrace();
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Update, accountingState.getState(accountingType));
|
||||
StateChangeType.Update, accountingState
|
||||
.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
}
|
||||
|
||||
|
@ -729,13 +792,12 @@ public class AccountingManagerController {
|
|||
+ operationId);
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Update, accountingState.getState(accountingType));
|
||||
StateChangeType.Update, accountingState
|
||||
.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
} else {
|
||||
operationMonitor(operationId);
|
||||
|
@ -755,13 +817,12 @@ public class AccountingManagerController {
|
|||
caught.printStackTrace();
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Update, accountingState.getState(accountingType));
|
||||
StateChangeType.Update, accountingState
|
||||
.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
}
|
||||
|
||||
|
@ -826,7 +887,9 @@ public class AccountingManagerController {
|
|||
accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Update, accountingState.getState(accountingType));
|
||||
StateChangeType.Update,
|
||||
accountingState
|
||||
.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
}
|
||||
|
||||
|
@ -842,13 +905,12 @@ public class AccountingManagerController {
|
|||
UtilsGXT3.alert("Error Time Out", "Time Out");
|
||||
AccountingClientStateData accountingStateData = accountingState
|
||||
.getState(accountingType);
|
||||
accountingStateData
|
||||
.setSeriesResponse(null);
|
||||
accountingState.setState(
|
||||
accountingType,
|
||||
accountingStateData.setSeriesResponse(null);
|
||||
accountingState.setState(accountingType,
|
||||
accountingStateData);
|
||||
StateChangeEvent stateChangeEvent = new StateChangeEvent(
|
||||
StateChangeType.Update, accountingState.getState(accountingType));
|
||||
StateChangeType.Update,
|
||||
accountingState.getState(accountingType));
|
||||
eventBus.fireEvent(stateChangeEvent);
|
||||
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.monitor.AccountingMonitor;
|
||||
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.rpc.AccountingManagerServiceAsync;
|
||||
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.AccountingFilterContext;
|
||||
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.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.FilterValue;
|
||||
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.GenresData;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.Spaces;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.exception.SessionExpiredException;
|
||||
|
||||
import com.allen_sauer.gwt.log.client.Log;
|
||||
|
@ -105,9 +107,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
private EventBus eventBus;
|
||||
private Grid<AccountingFilter> gridFilter;
|
||||
private ListStore<AccountingFilter> storeFilter;
|
||||
private Grid<ContextData> gridContext;
|
||||
private ListStore<ContextData> storeContext;
|
||||
private CheckBoxSelectionModel<ContextData> smContext;
|
||||
private Grid<GenresData> gridGenres;
|
||||
private ListStore<GenresData> storeGenres;
|
||||
private CheckBoxSelectionModel<GenresData> smGenres;
|
||||
private ColumnConfig<GenresData, String> labelGenresCol;
|
||||
private boolean addStatus;
|
||||
private AccountingClientStateData accountingStateData;
|
||||
private ListStore<FilterKey> storeComboFilterKey;
|
||||
|
@ -117,6 +120,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
private GridRowEditing<AccountingFilter> editing;
|
||||
private TextButton addButton;
|
||||
private int seq;
|
||||
private FieldLabel comboChartTypeLabel;
|
||||
private ListStore<ChartType> storeComboChartType;
|
||||
private ComboBox<ChartType> comboChartType;
|
||||
private ListStore<FilterKey> storeComboTopFilterKey;
|
||||
|
@ -415,7 +419,6 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
}
|
||||
|
||||
});
|
||||
storeComboChartType.addAll(ChartType.asList());
|
||||
|
||||
LabelProvider<ChartType> comboChartTypeLabelProvider = new LabelProvider<ChartType>() {
|
||||
|
||||
|
@ -428,16 +431,16 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
};
|
||||
|
||||
// /Grid Context
|
||||
ContextDataProperties propsContextData = GWT
|
||||
.create(ContextDataProperties.class);
|
||||
GenresDataProperties propsGenresData = GWT
|
||||
.create(GenresDataProperties.class);
|
||||
|
||||
IdentityValueProvider<ContextData> identity = new IdentityValueProvider<ContextData>();
|
||||
smContext = new CheckBoxSelectionModel<ContextData>(identity);
|
||||
IdentityValueProvider<GenresData> identity = new IdentityValueProvider<GenresData>();
|
||||
smGenres = new CheckBoxSelectionModel<GenresData>(identity);
|
||||
|
||||
ColumnConfig<ContextData, String> labelCol = new ColumnConfig<ContextData, String>(
|
||||
propsContextData.label(), 356, "Scope");
|
||||
labelGenresCol = new ColumnConfig<GenresData, String>(
|
||||
propsGenresData.label(), 356, "Genres");
|
||||
|
||||
labelCol.setCell(new AbstractCell<String>() {
|
||||
labelGenresCol.setCell(new AbstractCell<String>() {
|
||||
|
||||
@Override
|
||||
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, ?>>();
|
||||
lContext.add(smContext.getColumn());
|
||||
lContext.add(labelCol);
|
||||
ColumnModel<ContextData> cmContextData = new ColumnModel<ContextData>(
|
||||
lContext);
|
||||
List<ColumnConfig<GenresData, ?>> lGenres = new ArrayList<ColumnConfig<GenresData, ?>>();
|
||||
lGenres.add(smGenres.getColumn());
|
||||
lGenres.add(labelGenresCol);
|
||||
ColumnModel<GenresData> cmGenresData = new ColumnModel<GenresData>(
|
||||
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);
|
||||
gridContext.setHeight("130px");
|
||||
gridContext.setSelectionModel(smContext);
|
||||
gridContext.getView().setStripeRows(true);
|
||||
gridContext.getView().setColumnLines(true);
|
||||
gridContext.getView().setAutoFill(true);
|
||||
gridContext.setBorders(true);
|
||||
gridContext.setColumnReordering(false);
|
||||
gridContext.getView().setAutoExpandColumn(labelCol);
|
||||
gridContext.getView().setSortingEnabled(true);
|
||||
gridGenres.setHeight("130px");
|
||||
gridGenres.setSelectionModel(smGenres);
|
||||
gridGenres.getView().setStripeRows(true);
|
||||
gridGenres.getView().setColumnLines(true);
|
||||
gridGenres.getView().setAutoFill(true);
|
||||
gridGenres.setBorders(true);
|
||||
gridGenres.setColumnReordering(false);
|
||||
gridGenres.getView().setAutoExpandColumn(labelGenresCol);
|
||||
gridGenres.getView().setSortingEnabled(true);
|
||||
|
||||
// /
|
||||
|
||||
|
@ -486,7 +489,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
comboChartType.setTriggerAction(TriggerAction.ALL);
|
||||
addHandlersForComboChartType(comboChartTypeLabelProvider);
|
||||
|
||||
FieldLabel comboChartTypeLabel = new FieldLabel(comboChartType, "Chart");
|
||||
comboChartTypeLabel = new FieldLabel(comboChartType, "Chart");
|
||||
|
||||
// FileterKeyCombo for Top Chart
|
||||
storeComboTopFilterKey = new ListStore<FilterKey>(
|
||||
|
@ -582,7 +585,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
|
||||
vlc.add(comboChartTypeLabel, new VerticalLayoutData(1, -1, new Margins(
|
||||
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(comboTopFilterKeyLabel, new VerticalLayoutData(1, -1,
|
||||
new Margins(0)));
|
||||
|
@ -598,7 +601,8 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
fieldSet.add(vlc);
|
||||
|
||||
add(fieldSet, new MarginData(0));
|
||||
gridContext.setVisible(false);
|
||||
comboChartTypeLabel.setVisible(false);
|
||||
gridGenres.setVisible(false);
|
||||
noContextLabel.setVisible(false);
|
||||
comboTopFilterKeyLabel.setVisible(false);
|
||||
showOthersLabel.setVisible(false);
|
||||
|
@ -648,8 +652,48 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
}
|
||||
|
||||
private void onRestoreStateChange(StateChangeEvent event) {
|
||||
Log.debug("onRestoreStateChange: " + event);
|
||||
if (event.getAccountingStateData() != null) {
|
||||
|
||||
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();
|
||||
|
||||
} else {
|
||||
|
@ -683,6 +727,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
case Context:
|
||||
changeActiveFiltersForContext();
|
||||
break;
|
||||
case Spaces:
|
||||
changeActiveFiltersForSpaces();
|
||||
break;
|
||||
|
||||
default:
|
||||
changeActiveFiltersForBasic();
|
||||
break;
|
||||
|
@ -748,7 +796,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
|
||||
}
|
||||
comboChartType.setValue(ChartType.Basic);
|
||||
gridContext.setVisible(false);
|
||||
gridGenres.setVisible(false);
|
||||
comboTopFilterKey.reset();
|
||||
comboTopFilterKeyLabel.setVisible(false);
|
||||
showOthersToggle.reset();
|
||||
|
@ -815,7 +863,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
}
|
||||
|
||||
comboChartType.setValue(ChartType.Top);
|
||||
gridContext.setVisible(false);
|
||||
gridGenres.setVisible(false);
|
||||
comboTopFilterKeyLabel.setVisible(true);
|
||||
showOthersLabel.setVisible(true);
|
||||
noContextToggle.reset();
|
||||
|
@ -825,7 +873,6 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
forceLayout();
|
||||
}
|
||||
|
||||
// TODO
|
||||
private void changeActiveFiltersForContext() {
|
||||
if (accountingStateData.getSeriesRequest() != null
|
||||
&& accountingStateData.getSeriesRequest()
|
||||
|
@ -845,42 +892,41 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
.isEmpty()) {
|
||||
ArrayList<String> contexts = accountingStateData
|
||||
.getAvailableContext().getContexts();
|
||||
ArrayList<ContextData> ctx = new ArrayList<ContextData>();
|
||||
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||
for (String context : contexts) {
|
||||
ContextData contextData = new ContextData(context);
|
||||
ctx.add(contextData);
|
||||
GenresData genresData = new GenresData(context);
|
||||
genres.add(genresData);
|
||||
}
|
||||
storeContext.clear();
|
||||
storeContext.addAll(ctx);
|
||||
storeContext.commitChanges();
|
||||
storeGenres.clear();
|
||||
storeGenres.addAll(genres);
|
||||
storeGenres.commitChanges();
|
||||
|
||||
smContext.deselectAll();
|
||||
smGenres.deselectAll();
|
||||
|
||||
if (accountingFilterContext.getContext().getContexts() == null
|
||||
|| accountingFilterContext.getContext()
|
||||
.getContexts().isEmpty()) {
|
||||
} else {
|
||||
ArrayList<ContextData> selected = new ArrayList<>();
|
||||
ArrayList<GenresData> selected = new ArrayList<>();
|
||||
for (String c : accountingFilterContext.getContext()
|
||||
.getContexts()) {
|
||||
for (ContextData contextData : storeContext
|
||||
.getAll()) {
|
||||
if (c.compareTo(contextData.getContextData()) == 0) {
|
||||
selected.add(contextData);
|
||||
for (GenresData genresData : storeGenres.getAll()) {
|
||||
if (c.compareTo(genresData.getGenre()) == 0) {
|
||||
selected.add(genresData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!selected.isEmpty()) {
|
||||
if (selected.size() == storeContext.getAll().size()) {
|
||||
smContext.selectAll();
|
||||
if (selected.size() == storeGenres.getAll().size()) {
|
||||
smGenres.selectAll();
|
||||
} else {
|
||||
smContext.select(selected, false);
|
||||
smGenres.select(selected, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
smContext.refresh();
|
||||
smGenres.refresh();
|
||||
|
||||
} else {
|
||||
repopulatesContexts();
|
||||
|
@ -916,7 +962,9 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
|
||||
}
|
||||
comboChartType.setValue(ChartType.Context);
|
||||
gridContext.setVisible(true);
|
||||
gridGenres.setVisible(true);
|
||||
labelGenresCol.setHeader("Scope");
|
||||
gridGenres.getView().refresh(true);
|
||||
comboTopFilterKey.reset();
|
||||
comboTopFilterKeyLabel.setVisible(false);
|
||||
showOthersToggle.reset();
|
||||
|
@ -943,25 +991,164 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
}
|
||||
|
||||
private void resetContexts() {
|
||||
storeContext.clear();
|
||||
storeContext.commitChanges();
|
||||
smContext.deselectAll();
|
||||
smContext.refresh();
|
||||
storeGenres.clear();
|
||||
storeGenres.commitChanges();
|
||||
smGenres.deselectAll();
|
||||
smGenres.refresh();
|
||||
}
|
||||
|
||||
private void repopulatesContexts() {
|
||||
ArrayList<String> contexts = accountingStateData.getAvailableContext()
|
||||
.getContexts();
|
||||
ArrayList<ContextData> ctx = new ArrayList<ContextData>();
|
||||
ArrayList<GenresData> genres = new ArrayList<GenresData>();
|
||||
for (String context : contexts) {
|
||||
ContextData contextData = new ContextData(context);
|
||||
ctx.add(contextData);
|
||||
GenresData genresData = new GenresData(context);
|
||||
genres.add(genresData);
|
||||
}
|
||||
storeContext.clear();
|
||||
storeContext.addAll(ctx);
|
||||
storeContext.commitChanges();
|
||||
smContext.selectAll();
|
||||
smContext.refresh();
|
||||
storeGenres.clear();
|
||||
storeGenres.addAll(genres);
|
||||
storeGenres.commitChanges();
|
||||
smGenres.selectAll();
|
||||
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() {
|
||||
|
@ -975,7 +1162,8 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
return getActiveFiltersForTop();
|
||||
case Context:
|
||||
return getActiveFiltersForContext();
|
||||
|
||||
case Spaces:
|
||||
return getActiveFiltersForSpaces();
|
||||
default:
|
||||
return null;
|
||||
|
||||
|
@ -1054,11 +1242,10 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
|
||||
private AccountingFilterDefinition getActiveFiltersForContext() {
|
||||
ArrayList<String> contextsSelected = new ArrayList<String>();
|
||||
if (storeContext != null && storeContext.size() > 0
|
||||
&& smContext != null) {
|
||||
List<ContextData> selected = smContext.getSelectedItems();
|
||||
for (ContextData cd : selected) {
|
||||
contextsSelected.add(cd.getContextData());
|
||||
if (storeGenres != null && storeGenres.size() > 0 && smGenres != null) {
|
||||
List<GenresData> selected = smGenres.getSelectedItems();
|
||||
for (GenresData cd : selected) {
|
||||
contextsSelected.add(cd.getGenre());
|
||||
}
|
||||
}
|
||||
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) {
|
||||
List<AccountingFilter> filtersSet = storeFilter.getAll();
|
||||
FilterKey fk = null;
|
||||
|
@ -1275,7 +1488,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
}
|
||||
switch (chartType) {
|
||||
case Basic:
|
||||
gridContext.setVisible(false);
|
||||
gridGenres.setVisible(false);
|
||||
comboTopFilterKey.reset();
|
||||
comboTopFilterKeyLabel.setVisible(false);
|
||||
showOthersToggle.reset();
|
||||
|
@ -1300,7 +1513,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
forceLayout();
|
||||
break;
|
||||
case Top:
|
||||
gridContext.setVisible(false);
|
||||
gridGenres.setVisible(false);
|
||||
comboTopFilterKey.reset();
|
||||
if (accountingStateData != null
|
||||
&& accountingStateData.getAvailableFilterKeys() != null
|
||||
|
@ -1326,7 +1539,30 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
|||
break;
|
||||
case Context:
|
||||
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();
|
||||
comboTopFilterKeyLabel.setVisible(false);
|
||||
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.AccountingChart4Portlet;
|
||||
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.AccountingChart4Task;
|
||||
import org.gcube.portlets.admin.accountingmanager.client.maindata.charts.AccountingChartBuilder;
|
||||
|
@ -100,6 +101,11 @@ public class ChartViewerPanel extends FramedPanel {
|
|||
case TASK:
|
||||
createChart(new AccountingChart4Task(eventBus, event.getAccountingStateData()));
|
||||
break;
|
||||
case SPACE:
|
||||
createChart(new AccountingChart4Space(eventBus, event.getAccountingStateData()));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
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());
|
||||
add(serviceCategory, serviceItemConf);
|
||||
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:
|
||||
TabItemConfig storageItemConf = new TabItemConfig("Storage", false);
|
||||
storageItemConf.setIcon(AccountingManagerResources.INSTANCE
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
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.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>
|
||||
*
|
||||
*/
|
||||
public interface ContextDataProperties extends PropertyAccess<ContextData> {
|
||||
@Path("contextData")
|
||||
ModelKeyProvider<org.gcube.portlets.admin.accountingmanager.shared.data.ContextData> id();
|
||||
public interface GenresDataProperties extends PropertyAccess<GenresData> {
|
||||
@Path("genre")
|
||||
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")
|
||||
ImageResource accountingJob128();
|
||||
|
||||
@Source("accounting-space_128.png")
|
||||
ImageResource accountingSpace128();
|
||||
|
||||
@Source("accounting-manager_48.png")
|
||||
ImageResource accountingManager48();
|
||||
|
||||
|
@ -57,6 +60,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
|||
@Source("accounting-job_48.png")
|
||||
ImageResource accountingJob48();
|
||||
|
||||
@Source("accounting-space_48.png")
|
||||
ImageResource accountingSpace48();
|
||||
|
||||
@Source("accounting-manager_32.png")
|
||||
ImageResource accountingManager32();
|
||||
|
||||
|
@ -75,6 +81,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
|||
@Source("accounting-job_32.png")
|
||||
ImageResource accountingJob32();
|
||||
|
||||
@Source("accounting-space_32.png")
|
||||
ImageResource accountingSpace32();
|
||||
|
||||
@Source("accounting-manager_24.png")
|
||||
ImageResource accountingManager24();
|
||||
|
||||
|
@ -93,6 +102,9 @@ public interface AccountingManagerResources extends ClientBundle {
|
|||
@Source("accounting-job_24.png")
|
||||
ImageResource accountingJob24();
|
||||
|
||||
@Source("accounting-space_24.png")
|
||||
ImageResource accountingSpace24();
|
||||
|
||||
@Source("accounting-reload_24.png")
|
||||
ImageResource accountingReload24();
|
||||
|
||||
|
@ -185,19 +197,19 @@ public interface AccountingManagerResources extends ClientBundle {
|
|||
|
||||
@Source("accounting-file-csv_32.png")
|
||||
ImageResource accountingFileCSV32();
|
||||
|
||||
|
||||
@Source("accounting-file-xml_24.png")
|
||||
ImageResource accountingFileXML24();
|
||||
|
||||
@Source("accounting-file-xml_32.png")
|
||||
ImageResource accountingFileXML32();
|
||||
|
||||
|
||||
@Source("accounting-file-json_24.png")
|
||||
ImageResource accountingFileJSON24();
|
||||
|
||||
@Source("accounting-file-json_32.png")
|
||||
ImageResource accountingFileJSON32();
|
||||
|
||||
|
||||
@Source("accounting-file-png_24.png")
|
||||
ImageResource accountingFilePNG24();
|
||||
|
||||
|
|
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 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.FilterKey;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||
|
@ -33,7 +34,6 @@ public interface AccountingManagerService extends RemoteService {
|
|||
*/
|
||||
public UserInfo hello() throws ServiceException;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
|
@ -41,7 +41,6 @@ public interface AccountingManagerService extends RemoteService {
|
|||
*/
|
||||
public Long getClientMonitorTimeout() throws ServiceException;
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve Accounting Series in Cache
|
||||
*
|
||||
|
@ -55,8 +54,6 @@ public interface AccountingManagerService extends RemoteService {
|
|||
public SeriesResponse getSeriesInCache(AccountingType accountingType,
|
||||
SeriesRequest seriesRequest) throws ServiceException;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve Accounting Series
|
||||
*
|
||||
|
@ -70,17 +67,16 @@ public interface AccountingManagerService extends RemoteService {
|
|||
public String getSeries(AccountingType accountingType,
|
||||
SeriesRequest seriesRequest) throws ServiceException;
|
||||
|
||||
|
||||
/**
|
||||
* Accounting Request Monitor
|
||||
*
|
||||
* @param operationId
|
||||
* @param operationId
|
||||
* @return
|
||||
* @throws ServiceException
|
||||
*/
|
||||
public SeriesResponse operationMonitor(String operationId) throws ServiceException;
|
||||
|
||||
|
||||
public SeriesResponse operationMonitor(String operationId)
|
||||
throws ServiceException;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param accountingType
|
||||
|
@ -103,13 +99,21 @@ public interface AccountingManagerService extends RemoteService {
|
|||
FilterValuesRequest filterValuesRequest) throws ServiceException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Retrieve Context available
|
||||
*
|
||||
* @return
|
||||
* @throws ServiceException
|
||||
*/
|
||||
public Context getContext() throws ServiceException;
|
||||
|
||||
/**
|
||||
* Retrieve spaces available
|
||||
*
|
||||
* @return
|
||||
* @throws ServiceException
|
||||
*/
|
||||
public Spaces getSpaces() throws ServiceException;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param itemDescription
|
||||
|
@ -144,6 +148,4 @@ public interface AccountingManagerService extends RemoteService {
|
|||
*/
|
||||
public Boolean isRootScope() throws ServiceException;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.gcube.portlets.admin.accountingmanager.client.rpc;
|
|||
import java.util.ArrayList;
|
||||
|
||||
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.FilterKey;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||
|
@ -38,12 +39,11 @@ public interface AccountingManagerServiceAsync {
|
|||
|
||||
/**
|
||||
* Retrieve client monitor timeout
|
||||
*
|
||||
*
|
||||
* @param callback
|
||||
*/
|
||||
void getClientMonitorTimeout(AsyncCallback<Long> callback);
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve Accounting Series in Cache
|
||||
*
|
||||
|
@ -67,16 +67,16 @@ public interface AccountingManagerServiceAsync {
|
|||
*/
|
||||
void getSeries(AccountingType accountingType, SeriesRequest seriesRequest,
|
||||
AsyncCallback<String> callback);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Accounting Request Monitor
|
||||
*
|
||||
* @param operationId
|
||||
* @param callback
|
||||
*/
|
||||
void operationMonitor(String operationId, AsyncCallback<SeriesResponse> callback);
|
||||
|
||||
void operationMonitor(String operationId,
|
||||
AsyncCallback<SeriesResponse> callback);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param accountingType
|
||||
|
@ -95,6 +95,12 @@ public interface AccountingManagerServiceAsync {
|
|||
*/
|
||||
void getContext(AsyncCallback<Context> callback);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param callback
|
||||
*/
|
||||
void getSpaces(AsyncCallback<Spaces> callback);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param itemDescription
|
||||
|
@ -118,14 +124,12 @@ public interface AccountingManagerServiceAsync {
|
|||
* return the list of enabled tabs
|
||||
*/
|
||||
void getEnableTabs(AsyncCallback<EnableTabs> callback);
|
||||
|
||||
|
||||
/**
|
||||
* Check if the user is in root scope
|
||||
*
|
||||
* @param callback
|
||||
*/
|
||||
void isRootScope(AsyncCallback<Boolean> callback);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||
import java.util.ArrayList;
|
||||
|
||||
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.FilterKey;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest;
|
||||
|
@ -23,12 +24,30 @@ public class AccountingClientStateData implements Serializable {
|
|||
private SeriesResponse seriesResponse;
|
||||
private ArrayList<FilterKey> availableFilterKeys;
|
||||
private Context availableContext;
|
||||
private Spaces availableSpaces;
|
||||
private Boolean rootScope;
|
||||
|
||||
public AccountingClientStateData() {
|
||||
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
|
||||
|
@ -41,13 +60,14 @@ public class AccountingClientStateData implements Serializable {
|
|||
public AccountingClientStateData(AccountingType accountingType,
|
||||
SeriesRequest seriesRequest, SeriesResponse seriesResponse,
|
||||
ArrayList<FilterKey> availableFilterKeys, Context availableContext,
|
||||
Boolean rootScope) {
|
||||
Spaces availableSpaces, Boolean rootScope) {
|
||||
super();
|
||||
this.accountingType = accountingType;
|
||||
this.seriesRequest = seriesRequest;
|
||||
this.seriesResponse = seriesResponse;
|
||||
this.availableFilterKeys = availableFilterKeys;
|
||||
this.availableContext = availableContext;
|
||||
this.availableSpaces = availableSpaces;
|
||||
this.rootScope = rootScope;
|
||||
}
|
||||
|
||||
|
@ -99,13 +119,22 @@ public class AccountingClientStateData implements Serializable {
|
|||
this.accountingType = accountingType;
|
||||
}
|
||||
|
||||
public Spaces getAvailableSpaces() {
|
||||
return availableSpaces;
|
||||
}
|
||||
|
||||
public void setAvailableSpaces(Spaces availableSpaces) {
|
||||
this.availableSpaces = availableSpaces;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AccountingClientStateData [accountingType=" + accountingType
|
||||
+ ", seriesRequest=" + seriesRequest + ", seriesResponse="
|
||||
+ seriesResponse + ", availableFilterKeys="
|
||||
+ availableFilterKeys + ", availableContext="
|
||||
+ availableContext + ", rootScope=" + rootScope + "]";
|
||||
+ availableContext + ", availableSpaces=" + availableSpaces
|
||||
+ ", rootScope=" + rootScope + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -29,11 +29,12 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
|||
private TaskRequest taskRequest;
|
||||
private AccountingCache accountingCache;
|
||||
|
||||
public AccountingClientCallable(TaskRequest taskRequest, AccountingCache accountingCache) {
|
||||
public AccountingClientCallable(TaskRequest taskRequest,
|
||||
AccountingCache accountingCache) {
|
||||
super();
|
||||
this.taskRequest = taskRequest;
|
||||
this.accountingCache = accountingCache;
|
||||
logger.debug("AccountingClientCallable: "+taskRequest);
|
||||
logger.debug("AccountingClientCallable: " + taskRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -41,28 +42,30 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
|||
try {
|
||||
|
||||
HttpSession httpSession = taskRequest.getHttpSession();
|
||||
if(httpSession==null){
|
||||
if (httpSession == null) {
|
||||
logger.error("Error retrieving HttpSession in AccountingClientCallable: is null");
|
||||
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;
|
||||
if (Constants.DEBUG_MODE) {
|
||||
accountingCaller = new AccountingCallerTester();
|
||||
} 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();
|
||||
|
||||
}
|
||||
|
||||
SeriesResponse seriesResponse = null;
|
||||
|
||||
try {
|
||||
try {
|
||||
seriesResponse = accountingCaller.getSeries(
|
||||
taskRequest.getAccountingType(),
|
||||
taskRequest.getSeriesRequest());
|
||||
|
@ -96,7 +99,6 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
|||
+ taskRequest.getAccountingType().name()
|
||||
+ "_" + taskRequest.getSeriesRequest().toString());
|
||||
|
||||
|
||||
accountingCache.putSeries(key, seriesResponse);
|
||||
|
||||
AccountingStateData accountingStateData = new AccountingStateData(
|
||||
|
@ -130,6 +132,6 @@ public class AccountingClientCallable implements Callable<TaskStatus> {
|
|||
+ e.getLocalizedMessage(), e);
|
||||
return TaskStatus.ERROR;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -139,17 +139,25 @@ public class AccountingClientDaemon implements Runnable {
|
|||
private void retrieveTimeOut() {
|
||||
long timeo = 0;
|
||||
|
||||
try {
|
||||
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
||||
String scope = groupManagement
|
||||
.getInfrastructureScope(groupManagement.getRootVO()
|
||||
.getGroupId());
|
||||
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 (Constants.DEBUG_MODE) {
|
||||
logger.info("AccountingManager use default configuration for threadpool");
|
||||
timeo = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS;
|
||||
} else {
|
||||
|
||||
try {
|
||||
LiferayGroupManager groupManagement = new LiferayGroupManager();
|
||||
String scope = groupManagement
|
||||
.getInfrastructureScope(groupManagement.getRootVO()
|
||||
.getGroupId());
|
||||
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) {
|
||||
|
|
|
@ -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.shared.Constants;
|
||||
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.FilterKey;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||
|
@ -101,15 +102,29 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public EnableTabs getEnableTabs() throws ServiceException {
|
||||
try {
|
||||
ServiceCredentials serviceCredentials = SessionUtil
|
||||
.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
|
||||
.getScope());
|
||||
.getScope(), isRootScope);
|
||||
logger.debug("EnableTabs: " + enableTabs);
|
||||
return enableTabs;
|
||||
|
||||
} catch (ServiceException e) {
|
||||
|
@ -125,15 +140,14 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
|||
@Override
|
||||
public Long getClientMonitorTimeout() throws ServiceException {
|
||||
try {
|
||||
SessionUtil
|
||||
.getServiceCredentials(this.getThreadLocalRequest());
|
||||
SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||||
|
||||
ServletContext sc = getServletContext();
|
||||
Long timeout = (Long) sc
|
||||
.getAttribute(SessionConstants.ACCOUNTING_CLIENT_MONITOR_TIME_OUT_PERIODMILLIS);
|
||||
logger.debug("Accounting Client Monitor Time Out in milliseconds: "
|
||||
+ timeout);
|
||||
|
||||
|
||||
return timeout;
|
||||
|
||||
} catch (ServiceException e) {
|
||||
|
@ -141,13 +155,12 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
|||
throw e;
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
logger.error("getClientMonitorTimeout(): " + e.getLocalizedMessage(), e);
|
||||
logger.error(
|
||||
"getClientMonitorTimeout(): " + e.getLocalizedMessage(), e);
|
||||
throw new ServiceException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* {@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}
|
||||
|
@ -424,16 +470,16 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet
|
|||
if (Constants.DEBUG_MODE) {
|
||||
logger.debug("RootScope: " + 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) {
|
||||
e.printStackTrace();
|
||||
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.AccountingCommandGetFilterKeys;
|
||||
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.query.AccountingQuery;
|
||||
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.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.AccountingQuery4Task;
|
||||
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.AccountingQueryContext;
|
||||
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.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.FilterValuesRequest;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
||||
|
@ -56,6 +61,14 @@ public class AccountingCaller implements AccountingCallerInterface {
|
|||
return accountingCommand.execute();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public Spaces getSpaces() throws ServiceException {
|
||||
AccountingCommandGetSpaces accountingCommand = new AccountingCommandGetSpaces();
|
||||
return accountingCommand.execute();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public SeriesResponse getSeries(AccountingType accountingType,
|
||||
SeriesRequest seriesRequest) throws ServiceException {
|
||||
|
@ -94,6 +107,11 @@ public class AccountingCaller implements AccountingCallerInterface {
|
|||
AccountingCommandContext accountingCommandContext = new AccountingCommandContext(
|
||||
accountingQueryContext, accountingType);
|
||||
return accountingCommandContext.execute();
|
||||
case Spaces:
|
||||
AccountingQuerySpaces accountingQuerySpace = (AccountingQuerySpaces) query;
|
||||
AccountingCommandSpaces accountingCommandSpace = new AccountingCommandSpaces(
|
||||
accountingQuerySpace, accountingType);
|
||||
return accountingCommandSpace.execute();
|
||||
default:
|
||||
throw new ServiceException(
|
||||
"Error in invocation: Operation not supported");
|
||||
|
@ -130,6 +148,8 @@ public class AccountingCaller implements AccountingCallerInterface {
|
|||
return new AccountingQuery4Storage(seriesRequest);
|
||||
case TASK:
|
||||
return new AccountingQuery4Task(seriesRequest);
|
||||
case SPACE:
|
||||
return new AccountingQuery4Space(seriesRequest);
|
||||
default:
|
||||
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 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.FilterValuesRequest;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesResponse;
|
||||
|
@ -22,11 +23,11 @@ public interface AccountingCallerInterface {
|
|||
throws ServiceException;
|
||||
|
||||
public FilterValuesResponse getFilterValues(
|
||||
FilterValuesRequest filterValuesRequest)
|
||||
throws ServiceException;
|
||||
FilterValuesRequest filterValuesRequest) throws ServiceException;
|
||||
|
||||
public Spaces getSpaces() throws ServiceException;
|
||||
|
||||
public SeriesResponse getSeries(AccountingType accountingType,
|
||||
SeriesRequest seriesRequest)
|
||||
throws ServiceException;
|
||||
SeriesRequest seriesRequest) throws ServiceException;
|
||||
|
||||
}
|
|
@ -12,6 +12,7 @@ import java.util.List;
|
|||
import org.gcube.accounting.analytics.TemporalConstraint;
|
||||
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.Spaces;
|
||||
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.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.SeriesResponse;
|
||||
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.job.SeriesJobBasic;
|
||||
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.SeriesServiceDefinition;
|
||||
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.SeriesStorageContext;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.response.storage.SeriesStorageData;
|
||||
|
@ -72,13 +78,13 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
|||
return new ArrayList<FilterKey>();
|
||||
}
|
||||
ArrayList<FilterKey> filterKeys = new ArrayList<FilterKey>();
|
||||
|
||||
|
||||
FilterKey key = new FilterKey("ConsumerId");
|
||||
filterKeys.add(key);
|
||||
|
||||
|
||||
key = new FilterKey("ClassName");
|
||||
filterKeys.add(key);
|
||||
|
||||
|
||||
for (int i = 0; i < 20; i++) {
|
||||
key = new FilterKey("ServiceName" + i);
|
||||
filterKeys.add(key);
|
||||
|
@ -99,14 +105,14 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
|||
try {
|
||||
logger.debug("getFilterValue(): [FilterValueRequest="
|
||||
+ filterValuesRequest + "]");
|
||||
FilterValuesResponse filterValuesResponse=null;
|
||||
FilterValuesResponse filterValuesResponse = null;
|
||||
if (filterValuesRequest == null
|
||||
|| filterValuesRequest.getAccountingType() == null
|
||||
|| filterValuesRequest.getFilterKey() == null) {
|
||||
filterValuesResponse = new FilterValuesResponse(
|
||||
new ArrayList<FilterValue>());
|
||||
return filterValuesResponse;
|
||||
|
||||
|
||||
}
|
||||
|
||||
ArrayList<FilterValue> filterValues = new ArrayList<FilterValue>();
|
||||
|
@ -116,15 +122,11 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
|||
|
||||
switch (filterValuesRequest.getAccountingType()) {
|
||||
case JOB:
|
||||
values = Arrays.asList(vals);
|
||||
case PORTLET:
|
||||
values = Arrays.asList(vals);
|
||||
case SERVICE:
|
||||
values = Arrays.asList(vals);
|
||||
case STORAGE:
|
||||
values = Arrays.asList(vals);
|
||||
case TASK:
|
||||
values = Arrays.asList(vals);
|
||||
case SPACE:
|
||||
default:
|
||||
values = Arrays.asList(vals);
|
||||
}
|
||||
|
@ -133,9 +135,8 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
|||
filterValues.add(new FilterValue(value));
|
||||
}
|
||||
}
|
||||
|
||||
filterValuesResponse = new FilterValuesResponse(
|
||||
filterValues);
|
||||
|
||||
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||
return filterValuesResponse;
|
||||
} catch (Throwable e) {
|
||||
logger.error("Error in getFilterValues(): "
|
||||
|
@ -435,6 +436,81 @@ public class AccountingCallerTester implements AccountingCallerInterface {
|
|||
seriesResponse = new SeriesService(serieServiceDefinition);
|
||||
|
||||
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:
|
||||
SeriesStorageDefinition serieStorageDefinition = null;
|
||||
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.datamodel.aggregation.AggregatedJobUsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey;
|
||||
|
@ -15,20 +16,21 @@ import org.slf4j.LoggerFactory;
|
|||
|
||||
/**
|
||||
*
|
||||
* @author Giancarlo Panichi
|
||||
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||
* @author Giancarlo Panichi email: <a
|
||||
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||
*
|
||||
*/
|
||||
public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayList<FilterKey>> {
|
||||
private static final Logger logger = LoggerFactory.getLogger(AccountingCommandGetFilterKeys.class);
|
||||
|
||||
public class AccountingCommandGetFilterKeys implements
|
||||
AccountingCommand<ArrayList<FilterKey>> {
|
||||
private static final Logger logger = LoggerFactory
|
||||
.getLogger(AccountingCommandGetFilterKeys.class);
|
||||
|
||||
private AccountingType accountingType;
|
||||
|
||||
public AccountingCommandGetFilterKeys(AccountingType accountingType){
|
||||
this.accountingType=accountingType;
|
||||
|
||||
public AccountingCommandGetFilterKeys(AccountingType accountingType) {
|
||||
this.accountingType = accountingType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ArrayList<FilterKey> execute() throws ServiceException {
|
||||
try {
|
||||
|
@ -40,29 +42,34 @@ public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayLi
|
|||
ArrayList<FilterKey> filterKeys = new ArrayList<FilterKey>();
|
||||
SortedSet<String> keys;
|
||||
|
||||
|
||||
switch (accountingType) {
|
||||
case JOB:
|
||||
keys = AccountingPersistenceQuery.getQuerableKeys(AggregatedJobUsageRecord.class);
|
||||
keys = AccountingPersistenceQuery
|
||||
.getQuerableKeys(AggregatedJobUsageRecord.class);
|
||||
break;
|
||||
case PORTLET:
|
||||
// keys=rrq.getKeys(AggregatedPortletUsageRecord.class);
|
||||
return filterKeys;
|
||||
case SERVICE:
|
||||
keys = AccountingPersistenceQuery.getQuerableKeys(AggregatedServiceUsageRecord.class);
|
||||
keys = AccountingPersistenceQuery
|
||||
.getQuerableKeys(AggregatedServiceUsageRecord.class);
|
||||
break;
|
||||
case STORAGE:
|
||||
keys =AccountingPersistenceQuery.getQuerableKeys(AggregatedStorageUsageRecord.class);
|
||||
keys = AccountingPersistenceQuery
|
||||
.getQuerableKeys(AggregatedStorageUsageRecord.class);
|
||||
break;
|
||||
case TASK:
|
||||
// keys=rrq.getKeys(AggregatedTaskUsageRecord.class);
|
||||
return filterKeys;
|
||||
case SPACE:
|
||||
keys = AccountingPersistenceQuery
|
||||
.getQuerableKeys(AggregatedStorageStatusRecord.class);
|
||||
break;
|
||||
default:
|
||||
return filterKeys;
|
||||
}
|
||||
|
||||
|
||||
logger.debug("AccountingPersistenceQuery.getQuerableKeys: "+keys);
|
||||
|
||||
logger.debug("AccountingPersistenceQuery.getQuerableKeys: " + keys);
|
||||
for (String key : keys) {
|
||||
if (key != null && !key.isEmpty()) {
|
||||
filterKeys.add(new FilterKey(key));
|
||||
|
@ -71,7 +78,8 @@ public class AccountingCommandGetFilterKeys implements AccountingCommand<ArrayLi
|
|||
logger.debug("List FilterKeys:" + filterKeys);
|
||||
return filterKeys;
|
||||
} catch (Throwable e) {
|
||||
logger.error("Error in AccountingCommandGetFilterKeys(): " + e.getLocalizedMessage());
|
||||
logger.error("Error in AccountingCommandGetFilterKeys(): "
|
||||
+ e.getLocalizedMessage());
|
||||
e.printStackTrace();
|
||||
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.datamodel.aggregation.AggregatedJobUsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageStatusRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||
import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap;
|
||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
||||
|
@ -125,6 +126,11 @@ public class AccountingCommandGetFilterValues implements
|
|||
// .getFilterKey().getKey());
|
||||
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||
return filterValuesResponse;
|
||||
case SPACE:
|
||||
values = apq.getFilterValues(
|
||||
AggregatedStorageStatusRecord.class, tc, filters,
|
||||
filterValuesRequest.getFilterKey().getKey());
|
||||
break;
|
||||
default:
|
||||
filterValuesResponse = new FilterValuesResponse(filterValues);
|
||||
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
|
||||
.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<>();
|
||||
|
||||
|
||||
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);
|
||||
enableTabList.add(enableTabData);
|
||||
enableTabList.add(enableTabDataService);
|
||||
|
||||
} else {
|
||||
EnableTabsJAXB enableTabsJAXB=null;
|
||||
EnableTabsJAXB enableTabsJAXB = null;
|
||||
try {
|
||||
enableTabsJAXB= InformationSystemUtils
|
||||
.retrieveEnableTab(scope);
|
||||
} catch(ServiceException e){
|
||||
enableTabsJAXB = InformationSystemUtils
|
||||
.retrieveEnableTab(scope);
|
||||
} catch (ServiceException e) {
|
||||
logger.info(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
|
||||
logger.debug("Enable Tabs: " + enableTabsJAXB);
|
||||
if (enableTabsJAXB != null && enableTabsJAXB.getEnableTabs() != null
|
||||
if (enableTabsJAXB != null
|
||||
&& enableTabsJAXB.getEnableTabs() != null
|
||||
&& !enableTabsJAXB.getEnableTabs().isEmpty()) {
|
||||
AccountingType type;
|
||||
for (EnableTabJAXB enableTab : enableTabsJAXB.getEnableTabs()) {
|
||||
|
@ -49,29 +55,43 @@ public class BuildEnableTabs {
|
|||
&& !enableTab.getRoles().isEmpty()) {
|
||||
ArrayList<String> enableRoles = new ArrayList<>();
|
||||
enableRoles.addAll(enableTab.getRoles());
|
||||
enableTabList.add(new EnableTab(type,
|
||||
enableRoles));
|
||||
enableTabList.add(new EnableTab(type, enableRoles));
|
||||
} else {
|
||||
enableTabList
|
||||
.add(new EnableTab(type, null));
|
||||
enableTabList.add(new EnableTab(type, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logger.info("AccountingManager use default configuration for scope: "+scope);
|
||||
logger.info("AccountingManager use default configuration for scope: "
|
||||
+ scope);
|
||||
EnableTab enableTabDataService = new EnableTab(
|
||||
AccountingType.SERVICE, null);
|
||||
enableTabList.add(enableTabDataService);
|
||||
EnableTab enableTabDataStorage = new EnableTab(
|
||||
AccountingType.STORAGE, null);
|
||||
enableTabList.add(enableTabDataStorage);
|
||||
EnableTab enableTabDataJob = new EnableTab(
|
||||
AccountingType.JOB, null);
|
||||
EnableTab enableTabDataJob = new EnableTab(AccountingType.JOB,
|
||||
null);
|
||||
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);
|
||||
logger.debug("EnableTabsData: " + 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,
|
||||
PORTLET,
|
||||
TASK,
|
||||
JOB;
|
||||
JOB,
|
||||
SPACE;
|
||||
|
||||
public static AccountingType getTypeFromString(String value){
|
||||
for(AccountingType a:values()){
|
||||
|
|
|
@ -14,7 +14,7 @@ import java.util.List;
|
|||
|
||||
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"
|
||||
/> <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"
|
||||
value="ENABLED" /> <set-property name="log_SystemLogger" 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>
|
||||
<instanceable>false</instanceable>
|
||||
<ajaxable>false</ajaxable>
|
||||
<css-class-wrapper>AccountingManagerCSS</css-class-wrapper>
|
||||
</portlet>
|
||||
</liferay-portlet-app>
|
||||
|
|