class ServerManagementBrowserPresenter {

    public void onContainerUpdate( @Observes final ContainerUpdateEvent containerUpdateEvent ) {
        if ( containerUpdateEvent != null &&
                containerUpdateEvent.getContainerRuntimeOperation() != null &&
                containerUpdateEvent.getContainerRuntimeState() != null &&
                containerUpdateEvent.getFailedServerInstances().size() > 0 ) {
            final ClientContainerRuntimeOperation containerRuntimeOperation = ClientContainerRuntimeOperation.convert( containerUpdateEvent.getContainerRuntimeOperation() );

            final String message;
            final NotificationEvent.NotificationType notificationType;

            switch ( containerUpdateEvent.getContainerRuntimeState() ) {
                case OFFLINE:
                    message = view.getErrorMessage( containerRuntimeOperation, containerUpdateEvent.getFailedServerInstances().size() );
                    notificationType = NotificationEvent.NotificationType.ERROR;
                    break;
                case PARTIAL_ONLINE:
                    message = view.getWarnMessage( containerRuntimeOperation, containerUpdateEvent.getFailedServerInstances().size() );
                    notificationType = NotificationEvent.NotificationType.WARNING;
                    break;
                case ONLINE:
                    message = view.getSuccessMessage( containerRuntimeOperation, containerUpdateEvent.getFailedServerInstances().size() );
                    notificationType = NotificationEvent.NotificationType.SUCCESS;
                    break;
                default:
                    message = null;
                    notificationType = null;
                    break;
            }
            if ( message != null ) {
                notification.fire( new NotificationEvent( message, notificationType ) );
            }
        } else {
            logger.warn( "Illegal event argument." );
        }
    }

    @Inject public  ServerManagementBrowserPresenter( final Logger logger,
                                             final View view,
                                             final ServerNavigationPresenter navigationPresenter,
                                             final ServerTemplatePresenter serverTemplatePresenter,
                                             final ServerEmptyPresenter serverEmptyPresenter,
                                             final ServerContainerEmptyPresenter serverContainerEmptyPresenter,
                                             final ContainerPresenter containerPresenter,
                                             final RemotePresenter remotePresenter,
                                             final Caller<SpecManagementService> specManagementService,
                                             final Event<ServerTemplateSelected> serverTemplateSelectedEvent,
                                             final Event<NotificationEvent> notification );

}