From 42bf14730ea3447319aff536c51e9bdd9edda85c Mon Sep 17 00:00:00 2001 From: "giancarlo.panichi" Date: Fri, 31 Jul 2015 16:27:02 +0000 Subject: [PATCH] 69: Create new Accounting Portlet Task-Url: https://support.d4science.org/issues/69 Updated Filters git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/accounting-manager@117629 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 3 + pom.xml | 18 +- .../client/AccountingManager.java | 6 +- .../client/AccountingManagerController.java | 68 ++++- .../client/filters/AccountingPeriodPanel.java | 105 ++++--- .../client/filters/ActiveFiltersPanel.java | 256 +++++++++--------- .../client/filters/FiltersPanel.java | 4 +- .../AccountingFilterProperties.java | 2 +- .../resource/AccountingManagerResources.java | 9 +- .../accounting-chart-variable-axis_16.png | Bin 615 -> 0 bytes .../client/resource/accounting-filter_24.png | Bin 0 -> 818 bytes .../client/resource/accounting-filter_32.png | Bin 0 -> 1097 bytes .../client/state/AccountingStateData.java | 27 +- .../server/AccountingManagerServiceImpl.java | 2 +- .../server/amservice/AccountingCaller.java | 2 +- .../amservice/query/AccountingQuery.java | 51 ++-- .../amservice/query/AccountingQuery4Job.java | 4 +- .../query/AccountingQuery4Portlet.java | 4 +- .../query/AccountingQuery4Service.java | 23 +- .../query/AccountingQuery4Storage.java | 21 +- .../amservice/query/AccountingQuery4Task.java | 4 +- .../shared/data/AccountingFilter.java | 20 +- .../shared/data/FilterKey.java | 18 +- .../shared/data/query/SeriesRequest.java | 12 +- .../accountingmanager/accountingman.gwt.xml | 18 +- .../accounting-chart-variable-axis_16.png | Bin 615 -> 0 bytes .../client/resource/accounting-filter_24.png | Bin 0 -> 818 bytes .../client/resource/accounting-filter_32.png | Bin 0 -> 1097 bytes 28 files changed, 400 insertions(+), 277 deletions(-) delete mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-filter_24.png create mode 100644 src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-filter_32.png delete mode 100644 src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png create mode 100644 src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-filter_24.png create mode 100644 src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-filter_32.png diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 798b382..a7a8724 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,6 +4,9 @@ + + uses + diff --git a/pom.xml b/pom.xml index 1943f1b..d77fbcb 100644 --- a/pom.xml +++ b/pom.xml @@ -207,10 +207,20 @@ session-checker [0.2.0-SNAPSHOT,1.0.0-SNAPSHOT) - - - - + + + + org.gcube.core + common-encryption + provided + + + + + org.gcube.accounting + accounting-lib + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManager.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManager.java index 6b19968..97397df 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManager.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManager.java @@ -95,15 +95,15 @@ public class AccountingManager implements EntryPoint { //Filters FiltersPanel filtersPanel=new FiltersPanel(eventBus); - BorderLayoutData westData = new BorderLayoutData(310); + BorderLayoutData westData = new BorderLayoutData(410); westData.setCollapsible(false); westData.setSplit(false); westData.setFloatable(false); westData.setCollapseMini(false); westData.setMargins(new Margins(2, 7, 2, 7)); westData.setCollapseHidden(true); - westData.setMaxSize(310); - westData.setMinSize(310); + westData.setMaxSize(410); + westData.setMinSize(410); mainPanelLayout.setWestWidget(filtersPanel, westData); filtersPanel.expand(); filtersPanel.enable(); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java index a49bfb3..44f5aa2 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/AccountingManagerController.java @@ -1,5 +1,6 @@ package org.gcube.portlets.admin.accountingmanager.client; +import java.util.ArrayList; import java.util.Date; import org.gcube.portlets.admin.accountingmanager.client.event.AccountingMenuEvent; @@ -19,6 +20,7 @@ import org.gcube.portlets.admin.accountingmanager.shared.Constants; 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.FilterKey; 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.AccountingManagerSessionExpiredException; @@ -56,7 +58,7 @@ public class AccountingManagerController { accountingType = AccountingType.STORAGE; accountingState = new AccountingState(); AccountingStateData accountingStateData = new AccountingStateData( - accountingType, null, null); + accountingType, null, null,null); accountingState.setState(accountingType, accountingStateData); init(); } @@ -230,7 +232,7 @@ public class AccountingManagerController { public void showDefault(){ createDefaultChart(AccountingType.STORAGE); } - + private void createDefaultChart(AccountingType accountingType) { accountingMonitor = new AccountingMonitor(); @@ -242,25 +244,60 @@ public class AccountingManagerController { this.accountingType = accountingType; AccountingStateData accountingStateData = new AccountingStateData( - accountingType, seriesRequest, null); + accountingType, seriesRequest, null,null); accountingState.setState(accountingType, accountingStateData); - - callDefaultSeriesRequest(accountingStateData); + retrieveFilterKey(); + } - private void callDefaultSeriesRequest(final AccountingStateData accountingStateData) { + private void retrieveFilterKey() { + + AccountingManagerServiceAsync.INSTANCE.getFilterKeys(accountingType, + new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof AccountingManagerSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + Log.error("Error retrieving filter keys for "+accountingType+":" + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error retrieving filter keys", + caught.getLocalizedMessage()); + } + + } + + @Override + public void onSuccess(ArrayList result) { + Log.debug("FilterKeys: " + result); + AccountingStateData accountingStateData=accountingState.getState(accountingType); + accountingStateData.setAvailableFilterKeys(result); + accountingState.setState(accountingType, + accountingStateData); + callDefaultSeriesRequest(); + } + }); + + } + + + + private void callDefaultSeriesRequest() { AccountingManagerServiceAsync.INSTANCE.getSeries( - accountingStateData.getAccountingType(), - accountingStateData.getSeriesRequest(), + accountingType, + accountingState.getState(accountingType).getSeriesRequest(), new AsyncCallback() { @Override public void onSuccess(SeriesResponse seriesResponse) { Log.debug("SeriesResponse: " + seriesResponse); + AccountingStateData accountingStateData=accountingState.getState(accountingType); accountingStateData.setSeriesResponse(seriesResponse); accountingState.setState(accountingType, accountingStateData); @@ -278,10 +315,11 @@ public class AccountingManagerController { SessionExpiredType.EXPIREDONSERVER)); } else { Log.error("Error:" + caught.getLocalizedMessage()); + caught.printStackTrace(); UtilsGXT3.alert("Error", caught.getLocalizedMessage()); StateChangeEvent stateChangeEvent = new StateChangeEvent( - StateChangeType.Restore, accountingStateData); + StateChangeType.Restore, accountingState.getState(accountingType)); eventBus.fireEvent(stateChangeEvent); } @@ -307,7 +345,7 @@ public class AccountingManagerController { accountingMonitor = new AccountingMonitor(); accountingStateData.setSeriesRequest(seriesRequest); accountingState.setState(accountingType, accountingStateData); - callSeriesRequest(accountingStateData); + callSeriesRequest(); } @@ -318,16 +356,16 @@ public class AccountingManagerController { } - private void callSeriesRequest(final AccountingStateData accountingStateData) { - + private void callSeriesRequest() { AccountingManagerServiceAsync.INSTANCE.getSeries( - accountingStateData.getAccountingType(), - accountingStateData.getSeriesRequest(), + accountingType, + accountingState.getState(accountingType).getSeriesRequest(), new AsyncCallback() { @Override public void onSuccess(SeriesResponse seriesResponse) { Log.debug("SeriesResponse: " + seriesResponse); + AccountingStateData accountingStateData=accountingState.getState(accountingType); accountingStateData.setSeriesResponse(seriesResponse); accountingState.setState(accountingType, accountingStateData); @@ -347,7 +385,7 @@ public class AccountingManagerController { Log.error("Error:" + caught.getLocalizedMessage()); UtilsGXT3.alert("Error", caught.getLocalizedMessage()); - + caught.printStackTrace(); } } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/AccountingPeriodPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/AccountingPeriodPanel.java index 3934964..aa0a030 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/AccountingPeriodPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/AccountingPeriodPanel.java @@ -32,7 +32,6 @@ import com.sencha.gxt.widget.core.client.form.FieldLabel; import com.sencha.gxt.widget.core.client.form.FieldSet; import com.sencha.gxt.widget.core.client.form.validator.EmptyValidator; import com.sencha.gxt.widget.core.client.form.validator.MaxDateValidator; -import com.sencha.gxt.widget.core.client.info.Info; /** * @@ -63,51 +62,7 @@ public class AccountingPeriodPanel extends SimpleContainer { } private void create() { - startDate = new DateField(); - startDate.addValidator(new MaxDateValidator(new Date())); - startDate.addValidator(new EmptyValidator()); - startDate.addParseErrorHandler(new ParseErrorEvent.ParseErrorHandler() { - - @Override - public void onParseError(ParseErrorEvent event) { - Info.display("Parse Error", event.getErrorValue() - + " could not be parsed as a date"); - - } - }); - startDate.addValueChangeHandler(new ValueChangeHandler() { - @Override - public void onValueChange(ValueChangeEvent event) { - String v = event.getValue() == null ? "Nothing" - : DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT) - .format(event.getValue()); - Info.display("Start Date Selected", v); - } - }); - - FieldLabel startDateLabel = new FieldLabel(startDate, "Start Date"); - - endDate = new DateField(); - endDate.addValidator(new EmptyValidator()); - endDate.addParseErrorHandler(new ParseErrorEvent.ParseErrorHandler() { - @Override - public void onParseError(ParseErrorEvent event) { - Info.display("Parse Error", event.getErrorValue() - + " could not be parsed as a date"); - } - }); - endDate.addValueChangeHandler(new ValueChangeHandler() { - @Override - public void onValueChange(ValueChangeEvent event) { - String v = event.getValue() == null ? "Nothing" - : DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT) - .format(event.getValue()); - Info.display("End Date Selected", v); - } - }); - - FieldLabel endDateLabel = new FieldLabel(endDate, "End Date"); - + // Aggreagation Mode AccountingPeriodModePropertiesCombo props = GWT .create(AccountingPeriodModePropertiesCombo.class); @@ -128,12 +83,59 @@ public class AccountingPeriodPanel extends SimpleContainer { FieldLabel periodModeLabel = new FieldLabel(comboPeriodMode, "Aggregation"); + + // + startDate = new DateField(); + startDate.addValidator(new MaxDateValidator(new Date())); + startDate.addValidator(new EmptyValidator()); + startDate.addParseErrorHandler(new ParseErrorEvent.ParseErrorHandler() { + @Override + public void onParseError(ParseErrorEvent event) { + Log.debug("Parse Error", event.getErrorValue() + + " could not be parsed as a date"); + + } + }); + startDate.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + String v = event.getValue() == null ? "Nothing" + : DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT) + .format(event.getValue()); + Log.debug("Start Date Selected "+ v); + } + }); + + FieldLabel startDateLabel = new FieldLabel(startDate, "Start Date"); + + endDate = new DateField(); + endDate.addValidator(new EmptyValidator()); + endDate.addParseErrorHandler(new ParseErrorEvent.ParseErrorHandler() { + @Override + public void onParseError(ParseErrorEvent event) { + Log.debug("Parse Error", event.getErrorValue() + + " could not be parsed as a date"); + } + }); + endDate.addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + String v = event.getValue() == null ? "Nothing" + : DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT) + .format(event.getValue()); + Log.debug("End Date Selected "+ v); + } + }); + + FieldLabel endDateLabel = new FieldLabel(endDate, "End Date"); + + VerticalLayoutContainer vlc = new VerticalLayoutContainer(); + vlc.add(periodModeLabel, new VerticalLayoutData(1, -1, new Margins(0))); vlc.add(startDateLabel, new VerticalLayoutData(1, -1, new Margins(0))); vlc.add(endDateLabel, new VerticalLayoutData(1, -1, new Margins(0))); - vlc.add(periodModeLabel, new VerticalLayoutData(1, -1, new Margins(0))); - + FieldSet fieldSet = new FieldSet(); fieldSet.setHeadingHtml("Temporal Constraint"); fieldSet.setCollapsible(false); @@ -163,13 +165,6 @@ public class AccountingPeriodPanel extends SimpleContainer { .addSelectionHandler(new SelectionHandler() { public void onSelection( SelectionEvent event) { - Info.display( - "Aggregation", - "You selected " - + (event.getSelectedItem() == null ? "nothing" - : labelProvider.getLabel(event - .getSelectedItem()) - + "!")); Log.debug("ComboPeriodMode selected: " + event.getSelectedItem()); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java index 85f7b9b..c5f75cc 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/ActiveFiltersPanel.java @@ -3,17 +3,13 @@ package org.gcube.portlets.admin.accountingmanager.client.filters; import java.util.ArrayList; import java.util.List; -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.properties.AccountingFilterProperties; -import org.gcube.portlets.admin.accountingmanager.client.rpc.AccountingManagerServiceAsync; +import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources; import org.gcube.portlets.admin.accountingmanager.client.state.AccountingStateData; -import org.gcube.portlets.admin.accountingmanager.client.type.SessionExpiredType; import org.gcube.portlets.admin.accountingmanager.client.utils.UtilsGXT3; import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilter; -import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingType; import org.gcube.portlets.admin.accountingmanager.shared.data.FilterKey; -import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerSessionExpiredException; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.cell.client.AbstractCell; @@ -22,7 +18,6 @@ import com.google.gwt.editor.client.Editor.Path; import com.google.gwt.event.shared.EventBus; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign; import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.core.client.Style.SelectionMode; @@ -39,6 +34,7 @@ import com.sencha.gxt.dnd.core.client.GridDragSource; import com.sencha.gxt.dnd.core.client.GridDropTarget; import com.sencha.gxt.widget.core.client.button.ButtonBar; 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; @@ -75,9 +71,11 @@ public class ActiveFiltersPanel extends SimpleContainer { private Grid grid; private ListStore store; private boolean addStatus; - private List filterKeys; private AccountingStateData accountingStateData; private ListStore storeComboFilterKey; + private GridRowEditing editing; + private TextButton addButton; + private int seq; public interface FilterKeyPropertiesCombo extends PropertyAccess { @@ -87,13 +85,11 @@ public class ActiveFiltersPanel extends SimpleContainer { LabelProvider key(); } - - + interface FilterKeyTemplates extends XTemplates { @XTemplate("{value}") SafeHtml format(String value); } - public ActiveFiltersPanel(EventBus eventBus) { super(); @@ -115,22 +111,22 @@ public class ActiveFiltersPanel extends SimpleContainer { .create(AccountingFilterProperties.class); ColumnConfig keyColumn = new ColumnConfig( - props.key(), 130, "Key"); - + props.filterKey(), 130, "Key"); + keyColumn.setMenuDisabled(true); keyColumn.setCell(new AbstractCell() { @Override - public void render(Context context, FilterKey value, SafeHtmlBuilder sb) { + public void render(Context context, FilterKey value, + SafeHtmlBuilder sb) { FilterKeyTemplates filterKeyTemplates = GWT .create(FilterKeyTemplates.class); sb.append(filterKeyTemplates.format(value.getKey())); } }); - - + ColumnConfig valueColumn = new ColumnConfig( props.value(), 130, "Value"); - + valueColumn.setMenuDisabled(true); ArrayList> l = new ArrayList>(); l.add(keyColumn); l.add(valueColumn); @@ -152,7 +148,7 @@ public class ActiveFiltersPanel extends SimpleContainer { grid.setColumnReordering(false); grid.getView().setAutoExpandColumn(valueColumn); grid.getView().setSortingEnabled(false); - + GridDragSource ds = new GridDragSource( grid); ds.addDragStartHandler(new DndDragStartHandler() { @@ -187,53 +183,22 @@ public class ActiveFiltersPanel extends SimpleContainer { final TextField valueField = new TextField(); valueField.addValidator(new EmptyValidator()); - final GridRowEditing editing = new GridRowEditing( - grid); + editing = new GridRowEditing(grid); editing.addEditor(keyColumn, comboFilterKey); editing.addEditor(valueColumn, valueField); - - final TextButton addButton = new TextButton("Add Filter"); - // addButton.setIcon(ResourceBundle.INSTANCE.columnAdd24()); + + + addButton = new TextButton("Add Filter"); + addButton.setIcon(AccountingManagerResources.INSTANCE.accountingFilter24()); addButton.setIconAlign(IconAlign.RIGHT); addButton.setToolTip("Add Filter"); addButton.addSelectHandler(new SelectHandler() { @Override public void onSelect(SelectEvent event) { - List filtersSet=store.getAll(); - FilterKey fk=null; - - if(filterKeys==null|| filterKeys.size()<0){ - - } else { - for(FilterKey availableFilterKey:filterKeys){ - boolean isSet=false; - for(AccountingFilter filterSet:filtersSet){ - if(availableFilterKey.getKey().compareTo(filterSet.getFilterKey().getKey())==0){ - isSet=true; - break; - } - } - if(!isSet){ - fk=availableFilterKey; - break; - } - } - - } - - AccountingFilter newAccountingFilter = new AccountingFilter( - fk, ""); - - editing.cancelEditing(); - addStatus = true; - editing.getCancelButton().setVisible(false); - store.add(newAccountingFilter); - - int row = store.indexOf(newAccountingFilter); - editing.startEditing(new GridCell(row, 0)); - + addNewFilter(event); } + }); TextButton deleteBtn = new TextButton("Delete"); @@ -262,8 +227,8 @@ public class ActiveFiltersPanel extends SimpleContainer { @Override public void onBeforeStartEdit( BeforeStartEditEvent event) { - addButton.setEnabled(false); - // setEnableNextButton(false); + editingBeforeStart(event); + } }); @@ -273,7 +238,6 @@ public class ActiveFiltersPanel extends SimpleContainer { public void onCancelEdit(CancelEditEvent event) { store.rejectChanges(); addButton.setEnabled(true); - // setEnableNextButton(true); } @@ -284,44 +248,15 @@ public class ActiveFiltersPanel extends SimpleContainer { @Override public void onCompleteEdit(CompleteEditEvent event) { try { - - String value = valueField.getCurrentValue(); - Log.debug("Current Value: " + value); - - boolean exist = false; - GridCell cell = event.getEditCell(); - int rowIndex = cell.getRow(); - AccountingFilter newFilter = store.get(rowIndex); - - Log.debug("Store: " + store.getAll().toString()); - for (AccountingFilter filter : store.getAll()) { - if (newFilter.getId().compareTo(filter.getId()) != 0) { - exist = true; - break; - } - + if (addStatus) { + addStatus = false; } - - Log.debug("Exist: " + exist); - if (exist) { - Log.debug("AddStatus: " + addStatus); - if (addStatus) { - addStatus = false; - store.remove(rowIndex); - store.commitChanges(); - } else { - store.rejectChanges(); - } - UtilsGXT3 - .alert("Attention", - "This label is already present, please choose another(case insensitive)!"); - } else { - store.commitChanges(); - } - + store.commitChanges(); + + + editing.getCancelButton().setVisible(true); addButton.setEnabled(true); - // setEnableNextButton(true); } catch (Throwable e) { Log.error("Error in RuleOnTableNewDefinitionCard: " @@ -333,7 +268,7 @@ public class ActiveFiltersPanel extends SimpleContainer { // ToolBar toolBar = new ToolBar(); - toolBar.add(addButton); + toolBar.add(addButton, new BoxLayoutData(new Margins(0))); VerticalLayoutContainer vlc = new VerticalLayoutContainer(); vlc.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0))); @@ -381,40 +316,52 @@ public class ActiveFiltersPanel extends SimpleContainer { private void onRestoreStateChange(StateChangeEvent event) { if (event.getAccountingStateData() != null) { - accountingStateData=event.getAccountingStateData(); - retrieveFilterKey(event.getAccountingStateData().getAccountingType()); - + accountingStateData = event.getAccountingStateData(); + changeActiveFilters(); + } else { - accountingStateData=null; + accountingStateData = null; + seq=0; } + Log.debug("Set seq to: "+seq); forceLayout(); } - + private void changeActiveFilters() { storeComboFilterKey.clear(); - storeComboFilterKey.addAll(filterKeys); + storeComboFilterKey + .addAll(accountingStateData.getAvailableFilterKeys()); storeComboFilterKey.commitChanges(); - - if (accountingStateData.getSeriesRequest() != null) { - List filters = accountingStateData.getSeriesRequest().getFilters(); + + if (accountingStateData.getSeriesRequest() != null + && accountingStateData.getSeriesRequest().getFilters() != null) { + List filters = accountingStateData + .getSeriesRequest().getFilters(); store.clear(); store.addAll(filters); + seq=0; + for(AccountingFilter filter:filters){ + if(filter.getId()>seq){ + seq=filter.getId(); + }; + } store.commitChanges(); } else { store.clear(); store.commitChanges(); + seq=0; } - - forceLayout(); + + } - public List getActiveFilters() { + public ArrayList getActiveFilters() { try { if (store == null || store.size() <= 0) { return null; } else { - return store.getAll(); + return new ArrayList(store.getAll()); } } catch (Throwable e) { @@ -425,32 +372,83 @@ public class ActiveFiltersPanel extends SimpleContainer { } } - private void retrieveFilterKey(AccountingType accountingType) { + private void addNewFilter(SelectEvent event) { + List filtersSet = store.getAll(); + FilterKey fk = null; - AccountingManagerServiceAsync.INSTANCE.getFilterKeys(accountingType, - new AsyncCallback>() { + if (accountingStateData == null + || accountingStateData.getAvailableFilterKeys() == null + || accountingStateData.getAvailableFilterKeys().size() < 0) { + UtilsGXT3.info("No key available", "No key available"); - @Override - public void onFailure(Throwable caught) { - if (caught instanceof AccountingManagerSessionExpiredException) { - eventBus.fireEvent(new SessionExpiredEvent( - SessionExpiredType.EXPIREDONSERVER)); - } else { - Log.error("Error retrieving filter keys:" - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error retrieving filter keys", - caught.getLocalizedMessage()); - } + } else { + List remainingFilterKeys = new ArrayList( + accountingStateData.getAvailableFilterKeys()); + List removableFilterKeys = new ArrayList(); - } + for (AccountingFilter filterSet : filtersSet) { + removableFilterKeys.add(filterSet.getFilterKey()); + } - @Override - public void onSuccess(ArrayList result) { - Log.debug("FilterKeys: " + result); - filterKeys = result; - changeActiveFilters(); - } - }); + remainingFilterKeys.removeAll(removableFilterKeys); + + if (remainingFilterKeys.size() > 0) { + fk = remainingFilterKeys.get(0); + seq++; + AccountingFilter newAccountingFilter = new AccountingFilter(seq,fk, + ""); + Log.debug("newAccountingFilter: "+newAccountingFilter); + editing.cancelEditing(); + addStatus = true; + editing.getCancelButton().setVisible(false); + store.add(newAccountingFilter); + int row = store.indexOf(newAccountingFilter); + + storeComboFilterKey.clear(); + storeComboFilterKey.addAll(remainingFilterKeys); + storeComboFilterKey.commitChanges(); + + editing.startEditing(new GridCell(row, 0)); + } else { + UtilsGXT3.info("No key available", "No key available"); + + } + } + } + + private void editingBeforeStart(BeforeStartEditEvent event) { + GridCell cell = event.getEditCell(); + int rowIndex = cell.getRow(); + AccountingFilter editingFilter = store.get(rowIndex); + + List filtersSet = store.getAll(); + + List remainingFilterKeys = null; + if (accountingStateData == null + || accountingStateData.getAvailableFilterKeys() == null) { + remainingFilterKeys = new ArrayList(); + } else { + remainingFilterKeys = new ArrayList( + accountingStateData.getAvailableFilterKeys()); + + } + + List setFilterKeys = new ArrayList(); + + for (AccountingFilter filterSet : filtersSet) { + if (filterSet.getFilterKey().getKey() + .compareTo(editingFilter.getFilterKey().getKey()) != 0) { + setFilterKeys.add(filterSet.getFilterKey()); + } + } + + remainingFilterKeys.removeAll(setFilterKeys); + + storeComboFilterKey.clear(); + storeComboFilterKey.addAll(remainingFilterKeys); + storeComboFilterKey.commitChanges(); + + addButton.setEnabled(false); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/FiltersPanel.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/FiltersPanel.java index 7c83e75..3ff5a54 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/FiltersPanel.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/filters/FiltersPanel.java @@ -1,6 +1,6 @@ package org.gcube.portlets.admin.accountingmanager.client.filters; -import java.util.List; +import java.util.ArrayList; import org.gcube.portlets.admin.accountingmanager.client.event.FiltersChangeEvent; import org.gcube.portlets.admin.accountingmanager.client.resource.AccountingManagerResources; @@ -91,7 +91,7 @@ public class FiltersPanel extends FramedPanel { protected void updateChart() { AccountingPeriod accountingPeriod = accountPeriodPanel .getAccountingPeriod(); - List activeFilters=activeFiltersPanel.getActiveFilters(); + ArrayList activeFilters=activeFiltersPanel.getActiveFilters(); if (accountingPeriod != null) { SeriesRequest seriesRequest = new SeriesRequest(accountingPeriod,activeFilters); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/properties/AccountingFilterProperties.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/properties/AccountingFilterProperties.java index 34f4a60..8863357 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/properties/AccountingFilterProperties.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/properties/AccountingFilterProperties.java @@ -18,7 +18,7 @@ public interface AccountingFilterProperties extends ModelKeyProvider id(); - ValueProvider key(); + ValueProvider filterKey(); ValueProvider value(); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java index e952a91..c9456f4 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/AccountingManagerResources.java @@ -107,13 +107,16 @@ public interface AccountingManagerResources extends ClientBundle { @Source("accounting-reload_48.png") ImageResource accountingReload48(); - @Source("accounting-chart-variable-axis_16.png") - ImageResource accountingChartVariableAxis16(); - @Source("accounting-chart-variable-axis_24.png") ImageResource accountingChartVariableAxis24(); @Source("accounting-chart-variable-axis_32.png") ImageResource accountingChartVariableAxis32(); + @Source("accounting-filter_24.png") + ImageResource accountingFilter24(); + + @Source("accounting-filter_32.png") + ImageResource accountingFilter32(); + } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png deleted file mode 100644 index f6439a8e8cfb3751c765f87d24f4ea57ea870e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmV-t0+{`YP)K0XF+Dj2$)27L-^*;#T&korQ&h zbYOv&KrjTxnX?V!!t7e?Y2M9!@0@$?ySV^JVsl0$ok{v3=}mv|w#l7IifnVX$r(vK zNxnjOeSHl=fAc027RgAuolGYB`1lC(Rj=3e`1mME8jVJhbQ_3R8%x(frPXS2b#=uy z`u#rB>6CW6O{deL*=!=I0$fXqSimVz8IQ+2KR@&E@W6aN{}Na%797>~z{ zMk9a|7XcWKzM;34aP$(2gr_&r9 z9I(H?|0Q7CHpUqC_Vy?iizJgt^7(vlec=FkLYU2FtX3-k;_>*-v;d4TL6~>KWY6N;DwoTZWHPx^#u&r-`8lyzjHjn3B9RD^?trQ>#{H_eUavFD z<+8V4um4)60Iuu$i^Zb1TrRUaqjg>Pzt=h7{051Xd2=}{v~B4Q_ zK~zY`wU*CIKGr9dBmAG0jeIF98(T9zOp_`a_b6B7dbE+Rhxe+MY^`=j6QPwnsT)9rS7 z3R(|Ri{LxqpE)zpb0z&a9x)uifA+% zq-pwK(lkwJG#W%vgzLJ92nA=;0M7=FuImy60lT}qEH5uVC`g*7tgNgMMG-*|;JR+v z{LBDv2P2al zZK~Dk&>+@Ys?{p(cAGE^@qPa;Ilyz#5nIgjoQsPKy4^0FPKU|K$$_>wj>G)?JUcr( ztgfyS1OblY3@=|Dqk*-Sv$HdLy&lKM$0SL@_4PF;Cnv10ud}wcM!jCAQmKrTu`=!e zE0qfMdY#kLQw|OeNRos!O-a)fV+;!m3uDOv3~+Q`rNnVeuh%2XGDHLs!Ev0CvXpRS zfOq#b!936Z(f^TnXMit!KYTI3=W#L>ZTuBS{#?f7RWI9V8meA-;8@a~MVsUY2-KM;FZ@H(_)S0g=7>0aoS{49?f^ zwzwa_lQQ6OJ%}L4GK^k48Co$WF;DmX)QFb4P!aMG;7_2>7{kHA0T&k+D5W|r zVtRXfnV6WsvMhiy@RL&N8-NlKlv0Su4lpMoY;JC{wY7!Tn%97B+bk_Dv9hufI<%{l z`dLJ9n&j)i96%5R#9}dQ+s3wSUJJ2Uj35Yb90#S;oQSL|r8calV621-jWOi&c}k@c z#+Z(YjWLu;CGz<^#+YbIS470MfVaS#aMW=eQmGW4=P@}s*-;v_)=cK}c%DZpmBMkH z==2-ltpoG{iEz}iERxA2*=&}Dg#{ePVQ+8myVIeyW_o&>+1Xh<&m);khD8`60rWY* z$ChoO6!CbRbUJypW2Fvd_Q6u7*+P$)1wJWM8&!FAoIw8XWZ^2V|(5{U$vOonVW%kuIvT5Ia{IyW~rEsrsV(a}*B z7Z=Ipa`gB2lSm{UHTKp~Y2&~)#!#tLI5|1N_k9iz57AmvtyXC?8q{hv_V@Q$U0vnf zyLaSrIl8;MpCt!y+9|3q5}xN_j3EdDj*pM=eV=;0PNUJd6|Z(Zj~Y;WtPWZhIu5Su za(;f!_V)I@VpK}e)zyXTy3ZDB1T_oz((a+6wZ8TC(VYGx?d=-y#R5Kk&&l>$2UHWE ztmg4p<;SB6lr7*G`1(H>@D(_=lu|Wdv)vSQ+-CoaO{G-LYBnSr!0vNjD5dD`?tYCv zVOJ@&AtG22nf$d`508@Dw$0$+ATu*F_`d(rXq1~=D5bC>1mA$qfO)E`>FMcVetw>{ zwKY7?qqn#BRxQK*|Ah7%;B(jywkTnk3K97W_#LnwQp8j$1;F_DIQ{+o_`c8S=_$5t zGcYjl9QiLwsXxL#w52PK7!me}zcrhc2eqJHuT!a1@O_`_>uX}M80mDHbUOWzP?ejW zZ$!yEx|$hdBnSej)oOBebtRQbMe6msXsus literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java index c096d37..571b1b0 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/client/state/AccountingStateData.java @@ -1,8 +1,10 @@ package org.gcube.portlets.admin.accountingmanager.client.state; 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.FilterKey; import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesResponse; @@ -13,22 +15,25 @@ import org.gcube.portlets.admin.accountingmanager.shared.data.response.SeriesRes * */ public class AccountingStateData implements Serializable { - - private static final long serialVersionUID = 4853602427569285252L; + + private static final long serialVersionUID = -2080165745912743812L; private AccountingType accountingType; private SeriesRequest seriesRequest; private SeriesResponse seriesResponse; - + private ArrayList availableFilterKeys; + public AccountingStateData() { super(); } public AccountingStateData(AccountingType accountingType, - SeriesRequest seriesRequest, SeriesResponse seriesResponse) { + SeriesRequest seriesRequest, SeriesResponse seriesResponse, + ArrayList availableFilterKeys) { super(); this.accountingType = accountingType; this.seriesRequest = seriesRequest; this.seriesResponse = seriesResponse; + this.availableFilterKeys = availableFilterKeys; } public AccountingType getAccountingType() { @@ -55,11 +60,23 @@ public class AccountingStateData implements Serializable { this.seriesResponse = seriesResponse; } + public ArrayList getAvailableFilterKeys() { + return availableFilterKeys; + } + + public void setAvailableFilterKeys(ArrayList availableFilterKeys) { + this.availableFilterKeys = availableFilterKeys; + } + @Override public String toString() { return "AccountingStateData [accountingType=" + accountingType + ", seriesRequest=" + seriesRequest + ", seriesResponse=" - + seriesResponse + "]"; + + seriesResponse + ", availableFilterKeys=" + + availableFilterKeys + "]"; } + + + } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java index 24a662b..03b6cf4 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/AccountingManagerServiceImpl.java @@ -115,7 +115,7 @@ public class AccountingManagerServiceImpl extends RemoteServiceServlet return new ArrayList(); case SERVICE: return new ArrayList(Arrays.asList(new FilterKey("consumerId"), - new FilterKey("host"), new FilterKey("scope"), new FilterKey("serviceName"))); + new FilterKey("host"), new FilterKey("scope"), new FilterKey("serviceName"),new FilterKey("serviceClass"))); case STORAGE: return new ArrayList(Arrays.asList(new FilterKey("consumerId"), diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/AccountingCaller.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/AccountingCaller.java index 59a2bec..fbf2e4b 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/AccountingCaller.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/AccountingCaller.java @@ -63,7 +63,7 @@ public class AccountingCaller { List infos = rrq.getInfo(query.getType(), - query.getTemporalConstraint(), null, true); + query.getTemporalConstraint(), query.getFilters(), true); if (infos == null) { throw new AccountingManagerServiceException( "Error retrieving list of info: list is null!"); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery.java index 8d2db7e..97862ea 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery.java @@ -1,59 +1,62 @@ 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.SingleUsageRecord; +import org.gcube.accounting.datamodel.AggregatedUsageRecord; + + /** * - * @author giancarlo - * email: g.panichi@isti.cnr.it + * @author giancarlo email: g.panichi@isti.cnr.it * */ +@SuppressWarnings("rawtypes") public class AccountingQuery { - - private Class type; + private Class type; private TemporalConstraint temporalConstraint; - - - public AccountingQuery(Class type, TemporalConstraint temporalConstraint) { + private ArrayList filters; + + + public AccountingQuery(Class type, + TemporalConstraint temporalConstraint, ArrayList filters) { super(); this.type = type; this.temporalConstraint = temporalConstraint; + this.filters = filters; } - - public Class getType() { + public Class getType() { return type; } - - public void setType(Class type) { + public void setType(Class type) { this.type = type; } - public TemporalConstraint getTemporalConstraint() { return temporalConstraint; } - public void setTemporalConstraint(TemporalConstraint temporalConstraint) { this.temporalConstraint = temporalConstraint; } + public ArrayList getFilters() { + return filters; + } + + public void setFilters(ArrayList filters) { + this.filters = filters; + } @Override public String toString() { return "AccountingQuery [type=" + type + ", temporalConstraint=" - + temporalConstraint + "]"; + + temporalConstraint + ", filters=" + filters + "]"; } - - - - - - - - -} +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Job.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Job.java index ca617fa..fa9cf8f 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Job.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Job.java @@ -1,7 +1,7 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice.query; +import org.gcube.accounting.aggregation.AggregatedJobUsageRecord; import org.gcube.accounting.analytics.TemporalConstraint; -import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord; import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap; import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException; @@ -34,7 +34,7 @@ public class AccountingQuery4Job extends AccountingQueryBuilder { .getPeriod())); AccountingQuery invocation = new AccountingQuery( - JobUsageRecord.class, temporalConstraint); + AggregatedJobUsageRecord.class, temporalConstraint,null); accountingQuerySpec.setOp(invocation); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Portlet.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Portlet.java index df5828e..e58b159 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Portlet.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Portlet.java @@ -1,7 +1,7 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice.query; +import org.gcube.accounting.aggregation.AggregatedPortletUsageRecord; import org.gcube.accounting.analytics.TemporalConstraint; -import org.gcube.accounting.datamodel.usagerecords.PortletUsageRecord; import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap; import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException; @@ -34,7 +34,7 @@ public class AccountingQuery4Portlet extends AccountingQueryBuilder { .getPeriod())); AccountingQuery invocation = new AccountingQuery( - PortletUsageRecord.class, temporalConstraint); + AggregatedPortletUsageRecord.class, temporalConstraint,null); accountingQuerySpec.setOp(invocation); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Service.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Service.java index d819b43..2a795bc 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Service.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Service.java @@ -1,8 +1,12 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice.query; +import java.util.ArrayList; + +import org.gcube.accounting.aggregation.AggregatedServiceUsageRecord; +import org.gcube.accounting.analytics.Filter; import org.gcube.accounting.analytics.TemporalConstraint; -import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; 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.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException; import org.slf4j.Logger; @@ -32,10 +36,23 @@ public class AccountingQuery4Service extends AccountingQueryBuilder { seriesRequest.getAccountingPeriod().getEndDate().getTime(), PeriodModeMap.getMode(seriesRequest.getAccountingPeriod() .getPeriod())); + + ArrayList accountingFilters = seriesRequest + .getFilters(); + + ArrayList filters=null; + if (accountingFilters != null) { + filters = new ArrayList(); + for (AccountingFilter accountigFilters : accountingFilters) { + Filter filter = new Filter(accountigFilters.getFilterKey() + .getKey(), accountigFilters.getValue()); + filters.add(filter); + } + } AccountingQuery invocation = new AccountingQuery( - ServiceUsageRecord.class, temporalConstraint); - + AggregatedServiceUsageRecord.class, temporalConstraint, filters); + accountingQuerySpec.setOp(invocation); } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Storage.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Storage.java index 8bbff0a..d9e6569 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Storage.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Storage.java @@ -1,8 +1,12 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice.query; +import java.util.ArrayList; + +import org.gcube.accounting.aggregation.AggregatedStorageUsageRecord; +import org.gcube.accounting.analytics.Filter; import org.gcube.accounting.analytics.TemporalConstraint; -import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord; 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.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException; import org.slf4j.Logger; @@ -33,8 +37,21 @@ public class AccountingQuery4Storage extends AccountingQueryBuilder { PeriodModeMap.getMode(seriesRequest.getAccountingPeriod() .getPeriod())); + ArrayList accountingFilters = seriesRequest + .getFilters(); + + ArrayList filters=null; + if (accountingFilters != null) { + filters = new ArrayList(); + for (AccountingFilter accountigFilters : accountingFilters) { + Filter filter = new Filter(accountigFilters.getFilterKey() + .getKey(), accountigFilters.getValue()); + filters.add(filter); + } + } + AccountingQuery invocation = new AccountingQuery( - StorageUsageRecord.class, temporalConstraint); + AggregatedStorageUsageRecord.class, temporalConstraint, filters); accountingQuerySpec.setOp(invocation); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Task.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Task.java index a6ee56e..53f8be3 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Task.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/server/amservice/query/AccountingQuery4Task.java @@ -1,7 +1,7 @@ package org.gcube.portlets.admin.accountingmanager.server.amservice.query; +import org.gcube.accounting.aggregation.AggregatedStorageUsageRecord; import org.gcube.accounting.analytics.TemporalConstraint; -import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord; import org.gcube.portlets.admin.accountingmanager.server.amservice.PeriodModeMap; import org.gcube.portlets.admin.accountingmanager.shared.data.query.SeriesRequest; import org.gcube.portlets.admin.accountingmanager.shared.exception.AccountingManagerServiceException; @@ -34,7 +34,7 @@ public class AccountingQuery4Task extends AccountingQueryBuilder { .getPeriod())); AccountingQuery invocation = new AccountingQuery( - StorageUsageRecord.class, temporalConstraint); + AggregatedStorageUsageRecord.class, temporalConstraint,null); accountingQuerySpec.setOp(invocation); diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/AccountingFilter.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/AccountingFilter.java index 9ceb730..4f7eb0b 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/AccountingFilter.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/AccountingFilter.java @@ -11,6 +11,7 @@ import java.io.Serializable; public class AccountingFilter implements Serializable { private static final long serialVersionUID = 7200526591393559078L; + private int id; private FilterKey filterKey; private String value; @@ -18,18 +19,19 @@ public class AccountingFilter implements Serializable { super(); } - public AccountingFilter(FilterKey filterKey, String value) { + public AccountingFilter(int id, FilterKey filterKey, String value) { super(); + this.id=id; this.filterKey = filterKey; this.value = value; } - public String getId() { - if (filterKey != null) { - return filterKey.getId(); - } else { - return null; - } + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; } public FilterKey getFilterKey() { @@ -50,8 +52,8 @@ public class AccountingFilter implements Serializable { @Override public String toString() { - return "AccountingFilter [filterKey=" + filterKey + ", value=" + value - + "]"; + return "AccountingFilter [id=" + id + ", filterKey=" + filterKey + + ", value=" + value + "]"; } } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/FilterKey.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/FilterKey.java index 517f34d..adf18b3 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/FilterKey.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/FilterKey.java @@ -8,7 +8,7 @@ import java.io.Serializable; * email: g.panichi@isti.cnr.it * */ -public class FilterKey implements Serializable { +public class FilterKey implements Serializable, Comparable { private static final long serialVersionUID = 7200526591393559078L; private String key; @@ -35,9 +35,25 @@ public class FilterKey implements Serializable { this.key = key; } + + @Override + public int compareTo(FilterKey filterKey) { + if(filterKey==null && key==null){ + return 0; + } else { + if(filterKey==null && key!=null){ + return 1; + } else { + return key.compareTo(filterKey.getKey()); + } + } + } + + @Override public String toString() { return "FilterKey [key=" + key + "]"; + } diff --git a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/query/SeriesRequest.java b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/query/SeriesRequest.java index d33e77f..82be04a 100644 --- a/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/query/SeriesRequest.java +++ b/src/main/java/org/gcube/portlets/admin/accountingmanager/shared/data/query/SeriesRequest.java @@ -1,7 +1,7 @@ package org.gcube.portlets.admin.accountingmanager.shared.data.query; import java.io.Serializable; -import java.util.List; +import java.util.ArrayList; import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingFilter; import org.gcube.portlets.admin.accountingmanager.shared.data.AccountingPeriod; @@ -16,14 +16,14 @@ public class SeriesRequest implements Serializable { private static final long serialVersionUID = -109538024097615414L; private AccountingPeriod accountingPeriod; - private List filters; + private ArrayList filters; public SeriesRequest() { super(); } public SeriesRequest(AccountingPeriod accountingPeriod, - List filters) { + ArrayList filters) { super(); this.accountingPeriod = accountingPeriod; this.filters = filters; @@ -37,11 +37,11 @@ public class SeriesRequest implements Serializable { this.accountingPeriod = accountingPeriod; } - public List getFilters() { + public ArrayList getFilters() { return filters; } - public void setFilters(List filters) { + public void setFilters(ArrayList filters) { this.filters = filters; } @@ -50,6 +50,8 @@ public class SeriesRequest implements Serializable { return "SeriesRequest [accountingPeriod=" + accountingPeriod + ", filters=" + filters + "]"; } + + diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml b/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml index 7e72977..f3a962c 100644 --- a/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml +++ b/src/main/resources/org/gcube/portlets/admin/accountingmanager/accountingman.gwt.xml @@ -24,8 +24,8 @@ - + @@ -48,18 +48,20 @@ name="locale" values="es" /> --> - + + - + - + diff --git a/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png b/src/main/resources/org/gcube/portlets/admin/accountingmanager/client/resource/accounting-chart-variable-axis_16.png deleted file mode 100644 index f6439a8e8cfb3751c765f87d24f4ea57ea870e82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmV-t0+{`YP)K0XF+Dj2$)27L-^*;#T&korQ&h zbYOv&KrjTxnX?V!!t7e?Y2M9!@0@$?ySV^JVsl0$ok{v3=}mv|w#l7IifnVX$r(vK zNxnjOeSHl=fAc027RgAuolGYB`1lC(Rj=3e`1mME8jVJhbQ_3R8%x(frPXS2b#=uy z`u#rB>6CW6O{deL*=!=I0$fXqSimVz8IQ+2KR@&E@W6aN{}Na%797>~z{ zMk9a|7XcWKzM;34aP$(2gr_&r9 z9I(H?|0Q7CHpUqC_Vy?iizJgt^7(vlec=FkLYU2FtX3-k;_>*-v;d4TL6~>KWY6N;DwoTZWHPx^#u&r-`8lyzjHjn3B9RD^?trQ>#{H_eUavFD z<+8V4um4)60Iuu$i^Zb1TrRUaqjg>Pzt=h7{051Xd2=}{v~B4Q_ zK~zY`wU*CIKGr9dBmAG0jeIF98(T9zOp_`a_b6B7dbE+Rhxe+MY^`=j6QPwnsT)9rS7 z3R(|Ri{LxqpE)zpb0z&a9x)uifA+% zq-pwK(lkwJG#W%vgzLJ92nA=;0M7=FuImy60lT}qEH5uVC`g*7tgNgMMG-*|;JR+v z{LBDv2P2al zZK~Dk&>+@Ys?{p(cAGE^@qPa;Ilyz#5nIgjoQsPKy4^0FPKU|K$$_>wj>G)?JUcr( ztgfyS1OblY3@=|Dqk*-Sv$HdLy&lKM$0SL@_4PF;Cnv10ud}wcM!jCAQmKrTu`=!e zE0qfMdY#kLQw|OeNRos!O-a)fV+;!m3uDOv3~+Q`rNnVeuh%2XGDHLs!Ev0CvXpRS zfOq#b!936Z(f^TnXMit!KYTI3=W#L>ZTuBS{#?f7RWI9V8meA-;8@a~MVsUY2-KM;FZ@H(_)S0g=7>0aoS{49?f^ zwzwa_lQQ6OJ%}L4GK^k48Co$WF;DmX)QFb4P!aMG;7_2>7{kHA0T&k+D5W|r zVtRXfnV6WsvMhiy@RL&N8-NlKlv0Su4lpMoY;JC{wY7!Tn%97B+bk_Dv9hufI<%{l z`dLJ9n&j)i96%5R#9}dQ+s3wSUJJ2Uj35Yb90#S;oQSL|r8calV621-jWOi&c}k@c z#+Z(YjWLu;CGz<^#+YbIS470MfVaS#aMW=eQmGW4=P@}s*-;v_)=cK}c%DZpmBMkH z==2-ltpoG{iEz}iERxA2*=&}Dg#{ePVQ+8myVIeyW_o&>+1Xh<&m);khD8`60rWY* z$ChoO6!CbRbUJypW2Fvd_Q6u7*+P$)1wJWM8&!FAoIw8XWZ^2V|(5{U$vOonVW%kuIvT5Ia{IyW~rEsrsV(a}*B z7Z=Ipa`gB2lSm{UHTKp~Y2&~)#!#tLI5|1N_k9iz57AmvtyXC?8q{hv_V@Q$U0vnf zyLaSrIl8;MpCt!y+9|3q5}xN_j3EdDj*pM=eV=;0PNUJd6|Z(Zj~Y;WtPWZhIu5Su za(;f!_V)I@VpK}e)zyXTy3ZDB1T_oz((a+6wZ8TC(VYGx?d=-y#R5Kk&&l>$2UHWE ztmg4p<;SB6lr7*G`1(H>@D(_=lu|Wdv)vSQ+-CoaO{G-LYBnSr!0vNjD5dD`?tYCv zVOJ@&AtG22nf$d`508@Dw$0$+ATu*F_`d(rXq1~=D5bC>1mA$qfO)E`>FMcVetw>{ zwKY7?qqn#BRxQK*|Ah7%;B(jywkTnk3K97W_#LnwQp8j$1;F_DIQ{+o_`c8S=_$5t zGcYjl9QiLwsXxL#w52PK7!me}zcrhc2eqJHuT!a1@O_`_>uX}M80mDHbUOWzP?ejW zZ$!yEx|$hdBnSej)oOBebtRQbMe6msXsus literal 0 HcmV?d00001