package org.ovirt.engine.ui.webadmin.uicommon; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.ui.frontend.FrontendFailureEventArgs; import org.ovirt.engine.ui.frontend.Message; import org.ovirt.engine.ui.webadmin.system.ErrorPopupManager; import com.google.inject.Inject; public class FrontendFailureEventListener implements IEventListener { private final ErrorPopupManager errorPopupManager; @Inject public FrontendFailureEventListener(ErrorPopupManager errorPopupManager) { this.errorPopupManager = errorPopupManager; } @Override public void eventRaised(Event ev, Object sender, EventArgs args) { FrontendFailureEventArgs failureArgs = (FrontendFailureEventArgs) args; if (failureArgs.getMessage() != null) { errorPopupManager.show(getDescription2MsgMap(Arrays.asList(failureArgs.getMessage()))); } else if (failureArgs.getMessages() != null) { errorPopupManager.show(getDescription2MsgMap(failureArgs.getMessages())); } } private Map<String, Set<String>> getDescription2MsgMap(List<Message> msgList) { Map<String, Set<String>> desc2Msgs = new HashMap<String, Set<String>>(); for (Message msg : msgList) { String desc = msg.getDescription(); if (desc == null) { desc = ""; } desc = desc.trim(); Set<String> msgs = desc2Msgs.get(desc); if (msgs == null) { msgs = new HashSet<String>(); desc2Msgs.put(desc, msgs); } msgs.add(msg.getText()); } return desc2Msgs; } }