refs 2251: Accounting Manager - Stacked column chart for tops
https://support.d4science.org/issues/2251 Added AccountingPeriod to FilterValueRequet git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/accounting-manager@128727 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
cc14eedb92
commit
c564be1044
|
@ -0,0 +1,64 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriod;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
|
import com.google.gwt.event.shared.HasHandlers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accounting Period Request Event
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingPeriodEvent extends
|
||||||
|
GwtEvent<AccountingPeriodEvent.AccountingPeriodEventHandler> {
|
||||||
|
|
||||||
|
public static Type<AccountingPeriodEventHandler> TYPE = new Type<AccountingPeriodEventHandler>();
|
||||||
|
private AccountingPeriod accountingPeriod;
|
||||||
|
|
||||||
|
public interface AccountingPeriodEventHandler extends EventHandler {
|
||||||
|
void onPeriod(AccountingPeriodEvent event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface HasAccountingPeriodEventHandler extends HasHandlers {
|
||||||
|
public HandlerRegistration addAccountingPeriodEventHandler(
|
||||||
|
AccountingPeriodEventHandler handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AccountingPeriodEvent(AccountingPeriod accountingPeriod) {
|
||||||
|
this.accountingPeriod = accountingPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatch(AccountingPeriodEventHandler handler) {
|
||||||
|
handler.onPeriod(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type<AccountingPeriodEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Type<AccountingPeriodEventHandler> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fire(HasHandlers source, AccountingPeriodEvent event) {
|
||||||
|
source.fireEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AccountingPeriod getAccountingPeriod() {
|
||||||
|
return accountingPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "AccountingPeriodEvent [accountingPeriod=" + accountingPeriod
|
||||||
|
+ "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
package org.gcube.portlets.admin.accountingmanager.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
import com.google.gwt.event.shared.HandlerRegistration;
|
||||||
|
import com.google.gwt.event.shared.HasHandlers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accounting Period Request Event
|
||||||
|
*
|
||||||
|
* @author "Giancarlo Panichi" <a
|
||||||
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AccountingPeriodRequestEvent
|
||||||
|
extends
|
||||||
|
GwtEvent<AccountingPeriodRequestEvent.AccountingPeriodRequestEventHandler> {
|
||||||
|
|
||||||
|
public static Type<AccountingPeriodRequestEventHandler> TYPE = new Type<AccountingPeriodRequestEventHandler>();
|
||||||
|
|
||||||
|
public interface AccountingPeriodRequestEventHandler extends EventHandler {
|
||||||
|
void onRequest(AccountingPeriodRequestEvent event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface HasAccountingPeriodRequestEventHandler extends HasHandlers {
|
||||||
|
public HandlerRegistration addAccountingPeriodRequestEventHandler(
|
||||||
|
AccountingPeriodRequestEventHandler handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AccountingPeriodRequestEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatch(AccountingPeriodRequestEventHandler handler) {
|
||||||
|
handler.onRequest(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type<AccountingPeriodRequestEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Type<AccountingPeriodRequestEventHandler> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fire(HasHandlers source,
|
||||||
|
AccountingPeriodRequestEvent event) {
|
||||||
|
source.fireEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "AccountingPeriodRequestEvent []";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -2,6 +2,8 @@ package org.gcube.portlets.admin.accountingmanager.client.filters;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodEvent;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodRequestEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingPeriodModePropertiesCombo;
|
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingPeriodModePropertiesCombo;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.utils.UtilsGXT3;
|
import org.gcube.portlets.admin.accountingmanager.client.utils.UtilsGXT3;
|
||||||
|
@ -249,6 +251,28 @@ public class AccountingPeriodPanel extends SimpleContainer {
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(AccountingPeriodRequestEvent.TYPE,
|
||||||
|
new AccountingPeriodRequestEvent.AccountingPeriodRequestEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequest(AccountingPeriodRequestEvent event) {
|
||||||
|
Log.debug("Catch Event Accounting Period Request Event");
|
||||||
|
manageAccountingPeriodRequestEvent(event);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void manageAccountingPeriodRequestEvent(
|
||||||
|
AccountingPeriodRequestEvent event) {
|
||||||
|
AccountingPeriod accountingPeriod=getAccountingPeriod();
|
||||||
|
AccountingPeriodEvent accountingPeriodEvent=new AccountingPeriodEvent(accountingPeriod);
|
||||||
|
eventBus.fireEvent(accountingPeriodEvent);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addHandlersForComboPeriodMode(
|
private void addHandlersForComboPeriodMode(
|
||||||
|
|
|
@ -3,6 +3,8 @@ package org.gcube.portlets.admin.accountingmanager.client.filters;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodEvent;
|
||||||
|
import org.gcube.portlets.admin.accountingmanager.client.event.AccountingPeriodRequestEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEvent;
|
import org.gcube.portlets.admin.accountingmanager.client.event.SessionExpiredEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
import org.gcube.portlets.admin.accountingmanager.client.event.StateChangeEvent;
|
||||||
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingFilterProperties;
|
import org.gcube.portlets.admin.accountingmanager.client.properties.AccountingFilterProperties;
|
||||||
|
@ -105,6 +107,9 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
private IntegerSpinnerField topNumber;
|
private IntegerSpinnerField topNumber;
|
||||||
private FieldLabel topNumberLabel;
|
private FieldLabel topNumberLabel;
|
||||||
|
|
||||||
|
private FilterKey filterKey;
|
||||||
|
private boolean cancelValue;
|
||||||
|
|
||||||
public interface FilterKeyPropertiesCombo extends PropertyAccess<FilterKey> {
|
public interface FilterKeyPropertiesCombo extends PropertyAccess<FilterKey> {
|
||||||
|
|
||||||
@Path("id")
|
@Path("id")
|
||||||
|
@ -460,13 +465,25 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStateChange(StateChangeEvent event) {
|
public void onStateChange(StateChangeEvent event) {
|
||||||
Log.debug("Catch Event State Change");
|
Log.debug("Catch State Change Event");
|
||||||
doStateChangeCommand(event);
|
doStateChangeCommand(event);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(AccountingPeriodEvent.TYPE,
|
||||||
|
new AccountingPeriodEvent.AccountingPeriodEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPeriod(AccountingPeriodEvent event) {
|
||||||
|
Log.debug("Catch Accounting Period Event");
|
||||||
|
manageAccountingPeriodEvent(event);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void doStateChangeCommand(StateChangeEvent event) {
|
private void doStateChangeCommand(StateChangeEvent event) {
|
||||||
if (event.getStateChangeType() == null) {
|
if (event.getStateChangeType() == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -739,8 +756,22 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
|
|
||||||
private void retrieveFilterValuesByKey(FilterKey filterKey,
|
private void retrieveFilterValuesByKey(FilterKey filterKey,
|
||||||
final boolean cancelValue) {
|
final boolean cancelValue) {
|
||||||
|
this.filterKey=filterKey;
|
||||||
|
this.cancelValue=cancelValue;
|
||||||
|
AccountingPeriodRequestEvent event=new AccountingPeriodRequestEvent();
|
||||||
|
eventBus.fireEvent(event);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void manageAccountingPeriodEvent(AccountingPeriodEvent event) {
|
||||||
|
if(event==null|| event.getAccountingPeriod()==null){
|
||||||
|
Log.debug("AccountingPeriod not valid");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
FilterValuesRequest requestFilterValue = new FilterValuesRequest(
|
FilterValuesRequest requestFilterValue = new FilterValuesRequest(
|
||||||
filterKey, accountingStateData.getAccountingType());
|
filterKey, accountingStateData.getAccountingType(), event.getAccountingPeriod());
|
||||||
|
|
||||||
AccountingManagerServiceAsync.INSTANCE.getFilterValues(
|
AccountingManagerServiceAsync.INSTANCE.getFilterValues(
|
||||||
requestFilterValue,
|
requestFilterValue,
|
||||||
|
@ -777,6 +808,7 @@ public class ActiveFiltersPanel extends SimpleContainer {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void editingBeforeStart(BeforeStartEditEvent<AccountingFilter> event) {
|
private void editingBeforeStart(BeforeStartEditEvent<AccountingFilter> event) {
|
||||||
GridCell cell = event.getEditCell();
|
GridCell cell = event.getEditCell();
|
||||||
int rowIndex = cell.getRow();
|
int rowIndex = cell.getRow();
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
package org.gcube.portlets.admin.accountingmanager.server.amservice.command;
|
package org.gcube.portlets.admin.accountingmanager.server.amservice.command;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -8,12 +11,12 @@ import java.util.Set;
|
||||||
import org.gcube.accounting.analytics.Filter;
|
import org.gcube.accounting.analytics.Filter;
|
||||||
import org.gcube.accounting.analytics.NumberedFilter;
|
import org.gcube.accounting.analytics.NumberedFilter;
|
||||||
import org.gcube.accounting.analytics.TemporalConstraint;
|
import org.gcube.accounting.analytics.TemporalConstraint;
|
||||||
import org.gcube.accounting.analytics.TemporalConstraint.AggregationMode;
|
|
||||||
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQuery;
|
||||||
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
import org.gcube.accounting.analytics.persistence.AccountingPersistenceQueryFactory;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
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;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValue;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
import org.gcube.portlets.admin.accountingmanager.shared.data.FilterValuesRequest;
|
||||||
import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException;
|
import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException;
|
||||||
|
@ -30,7 +33,7 @@ public class AccountingCommandGetFilterValues implements
|
||||||
AccountingCommand<ArrayList<FilterValue>> {
|
AccountingCommand<ArrayList<FilterValue>> {
|
||||||
private static final Logger logger = LoggerFactory
|
private static final Logger logger = LoggerFactory
|
||||||
.getLogger(AccountingCommandGetFilterValues.class);
|
.getLogger(AccountingCommandGetFilterValues.class);
|
||||||
|
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMMM dd");
|
||||||
private FilterValuesRequest filterValuesRequest;
|
private FilterValuesRequest filterValuesRequest;
|
||||||
|
|
||||||
public AccountingCommandGetFilterValues(
|
public AccountingCommandGetFilterValues(
|
||||||
|
@ -60,14 +63,36 @@ public class AccountingCommandGetFilterValues implements
|
||||||
.getInstance();
|
.getInstance();
|
||||||
|
|
||||||
|
|
||||||
|
Calendar startCalendar = GregorianCalendar
|
||||||
|
.getInstance(TemporalConstraint.DEFAULT_TIME_ZONE);
|
||||||
|
try {
|
||||||
|
startCalendar.setTime(sdf.parse(filterValuesRequest.getAccountingPeriod()
|
||||||
|
.getStartDate()));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new AccountingManagerServiceException("Start Date not valid!");
|
||||||
|
}
|
||||||
|
|
||||||
GregorianCalendar startDate = new GregorianCalendar();
|
Calendar endCalendar = GregorianCalendar
|
||||||
GregorianCalendar endDate = new GregorianCalendar();
|
.getInstance(TemporalConstraint.DEFAULT_TIME_ZONE);
|
||||||
endDate.add(GregorianCalendar.YEAR, -3);
|
try {
|
||||||
|
endCalendar.setTime(sdf.parse(filterValuesRequest.getAccountingPeriod()
|
||||||
|
.getEndDate()));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new AccountingManagerServiceException("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 tc = new TemporalConstraint(
|
TemporalConstraint tc = new TemporalConstraint(
|
||||||
startDate.getTimeInMillis(), endDate.getTimeInMillis(),
|
startCalendar.getTimeInMillis(), endCalendar.getTimeInMillis(),
|
||||||
AggregationMode.YEARLY);
|
PeriodModeMap.getMode(filterValuesRequest.getAccountingPeriod()
|
||||||
|
.getPeriod()));
|
||||||
|
|
||||||
|
|
||||||
List<Filter> filters = new ArrayList<>();
|
List<Filter> filters = new ArrayList<>();
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author giancarlo
|
* @author giancarlo email: <a
|
||||||
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class FilterValuesRequest implements Serializable {
|
public class FilterValuesRequest implements Serializable {
|
||||||
|
@ -13,16 +13,18 @@ public class FilterValuesRequest implements Serializable {
|
||||||
private static final long serialVersionUID = -3544245558153491901L;
|
private static final long serialVersionUID = -3544245558153491901L;
|
||||||
private FilterKey filterKey;
|
private FilterKey filterKey;
|
||||||
private AccountingType accountingType;
|
private AccountingType accountingType;
|
||||||
|
private AccountingPeriod accountingPeriod;
|
||||||
|
|
||||||
public FilterValuesRequest(){
|
public FilterValuesRequest() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterValuesRequest(FilterKey filterKey,
|
public FilterValuesRequest(FilterKey filterKey,
|
||||||
AccountingType accountingType) {
|
AccountingType accountingType, AccountingPeriod accountingPeriod) {
|
||||||
super();
|
super();
|
||||||
this.filterKey = filterKey;
|
this.filterKey = filterKey;
|
||||||
this.accountingType = accountingType;
|
this.accountingType = accountingType;
|
||||||
|
this.accountingPeriod = accountingPeriod;
|
||||||
}
|
}
|
||||||
|
|
||||||
public FilterKey getFilterKey() {
|
public FilterKey getFilterKey() {
|
||||||
|
@ -41,12 +43,19 @@ public class FilterValuesRequest implements Serializable {
|
||||||
this.accountingType = accountingType;
|
this.accountingType = accountingType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AccountingPeriod getAccountingPeriod() {
|
||||||
|
return accountingPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccountingPeriod(AccountingPeriod accountingPeriod) {
|
||||||
|
this.accountingPeriod = accountingPeriod;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "FilterValuesRequest [filterKey=" + filterKey
|
return "FilterValuesRequest [filterKey=" + filterKey
|
||||||
+ ", accountingType=" + accountingType + "]";
|
+ ", accountingType=" + accountingType + ", accountingPeriod="
|
||||||
|
+ accountingPeriod + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue