Lior Vernia has uploaded a new change for review. Change subject: webadmin: Aggregate error messages in Frontend.runMultipleActions() ......................................................................
webadmin: Aggregate error messages in Frontend.runMultipleActions() Added the ability to aggregate error messages when invoking Frontend.runMultipleActions(). This is useful for cases where batch operations need to be run serially, and even though one failure shouldn't prevent the subsequent operations from executing, errors still need to be aggregated to be shown in one error dialog. Change-Id: I0236b7d9316dff3d9bd22f2127318eefc37bbda1 Bug-Url: https://bugzilla.redhat.com/1039096 Bug-Url: https://bugzilla.redhat.com/1048752 Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/Frontend.java 1 file changed, 48 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/25837/1 diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/Frontend.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/Frontend.java index dceea50..e0ae692 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/Frontend.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/Frontend.java @@ -699,6 +699,19 @@ } /** + * Overloaded method for + * {@link #runMultipleActions(List, List, List, IFrontendActionAsyncCallback, Object, boolean, List)} without error + * message aggregation. + */ + public void runMultipleActions(final List<VdcActionType> actionTypes, + final List<VdcActionParametersBase> parameters, + final List<IFrontendActionAsyncCallback> callbacks, + final IFrontendActionAsyncCallback failureCallback, + final Object state) { + runMultipleActions(actionTypes, parameters, callbacks, failureCallback, state, false, null); + } + + /** * This method allows us to run a transaction like set of actions. If one * fails the rest do not get executed. * @param actionTypes The list of actions to execute. @@ -706,13 +719,34 @@ * @param callbacks The list of callbacks, the number must match the number of actions. * @param failureCallback The callback to call in case of failure. * @param state The state. + * @param aggregateErrors Whether error messages should be aggregated. */ public void runMultipleActions(final List<VdcActionType> actionTypes, final List<VdcActionParametersBase> parameters, final List<IFrontendActionAsyncCallback> callbacks, final IFrontendActionAsyncCallback failureCallback, - final Object state) { + final Object state, + boolean aggregateErrors) { + runMultipleActions(actionTypes, + parameters, + callbacks, + failureCallback, + state, + aggregateErrors, + aggregateErrors ? new ArrayList<String>() : null); + } + + private void runMultipleActions(final List<VdcActionType> actionTypes, + final List<VdcActionParametersBase> parameters, + final List<IFrontendActionAsyncCallback> callbacks, + final IFrontendActionAsyncCallback failureCallback, + final Object state, + final boolean aggregateErrors, + final List<String> errorMessages) { if (actionTypes.isEmpty() || parameters.isEmpty() || callbacks.isEmpty()) { + if (aggregateErrors && errorMessages != null && !errorMessages.isEmpty()) { + failureEventHandler(null, errorMessages); + } return; } @@ -730,12 +764,21 @@ actionTypes.remove(0); parameters.remove(0); callbacks.remove(0); - runMultipleActions(actionTypes, parameters, callbacks, failureCallback, state); + if (aggregateErrors && returnValue != null && !returnValue.getSucceeded()) { + errorMessages.addAll(returnValue.getCanDoActionMessages()); + } + runMultipleActions(actionTypes, + parameters, + callbacks, + failureCallback, + state, + aggregateErrors, + errorMessages); } else { failureCallback.executed(result); } } - }, state, true); + }, state, !aggregateErrors); } /** @@ -924,7 +967,7 @@ callback.executed(f); } - if ((!success) && (getEventsHandler() != null) + if (showErrorDialog && (!success) && (getEventsHandler() != null) && (getEventsHandler().isRaiseErrorModalPanel(actionType, result.getFault()))) { if (result.getCanDoActionMessages().size() <= 1) { String errorMessage = !result.getCanDoAction() || !result.getCanDoActionMessages().isEmpty() @@ -1228,7 +1271,7 @@ * @param description A description of the failure (nullable) * @param errorMessages A list of error messages. */ - private void failureEventHandler(final String description, final ArrayList<String> errorMessages) { + private void failureEventHandler(final String description, final List<String> errorMessages) { ArrayList<Message> messages = new ArrayList<Message>(); for (String errorMessage : errorMessages) { messages.add(new Message(description, errorMessage)); -- To view, visit http://gerrit.ovirt.org/25837 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0236b7d9316dff3d9bd22f2127318eefc37bbda1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
