package org.ovirt.engine.ui.webadmin.gin; 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.Frontend; import org.ovirt.engine.ui.uicommonweb.Configurator; import org.ovirt.engine.ui.uicommonweb.ILogger; import org.ovirt.engine.ui.uicommonweb.ITypeResolver; import org.ovirt.engine.ui.uicommonweb.models.LoginModel; import org.ovirt.engine.ui.webadmin.auth.CurrentUser; import org.ovirt.engine.ui.webadmin.gin.uicommon.ClusterModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.DataCenterModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.EventModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.HostModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.PoolModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.StorageModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.TemplateModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.UserModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.VirtualMachineModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.VolumeModule; import org.ovirt.engine.ui.webadmin.uicommon.FrontendEventsHandlerImpl; import org.ovirt.engine.ui.webadmin.uicommon.FrontendFailureEventListener; import org.ovirt.engine.ui.webadmin.uicommon.LoggerImpl; import org.ovirt.engine.ui.webadmin.uicommon.UiCommonDefaultTypeResolver; import org.ovirt.engine.ui.webadmin.uicommon.model.AlertFirstRowModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.AlertModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.BookmarkModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.CommonModelManager; import org.ovirt.engine.ui.webadmin.uicommon.model.EventFirstRowModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.EventModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemTreeModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.TagModelProvider; import com.google.gwt.event.shared.EventBus; import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Provides; import com.google.inject.Singleton; /** * GIN module containing UiCommon model and integration bindings. */ public class UiCommonModule extends AbstractGinModule { @Override protected void configure() { bindModels(); bindIntegration(); } void bindModels() { // All model providers are ultimately referenced via ModelBoundTabData // and are therefore created early on, just like eager singletons install(new DataCenterModule()); install(new StorageModule()); install(new ClusterModule()); install(new VirtualMachineModule()); install(new HostModule()); install(new PoolModule()); install(new TemplateModule()); install(new UserModule()); install(new EventModule()); install(new VolumeModule()); // SystemTreeModel bind(SystemTreeModelProvider.class).asEagerSingleton(); // BookmarkListModel bind(BookmarkModelProvider.class).asEagerSingleton(); // TagListModel bind(TagModelProvider.class).asEagerSingleton(); // AlertListModel bind(AlertModelProvider.class).asEagerSingleton(); bind(AlertFirstRowModelProvider.class).asEagerSingleton(); // EventListModel bind(EventModelProvider.class).asEagerSingleton(); bind(EventFirstRowModelProvider.class).asEagerSingleton(); // RoleListModel bind(RoleModelProvider.class).asEagerSingleton(); // RolePermissionListModel bind(RolePermissionModelProvider.class).asEagerSingleton(); // SystemPermissionListModel bind(SystemPermissionModelProvider.class).asEagerSingleton(); } void bindIntegration() { bind(ITypeResolver.class).to(UiCommonDefaultTypeResolver.class).in(Singleton.class); bind(ILogger.class).to(LoggerImpl.class).in(Singleton.class); bind(Configurator.class).in(Singleton.class); bind(FrontendEventsHandlerImpl.class).in(Singleton.class); bind(FrontendFailureEventListener.class).in(Singleton.class); } @Provides @Singleton public LoginModel getLoginModel(final EventBus eventBus, final CurrentUser user) { final LoginModel loginModel = new LoginModel(); loginModel.getLoggedInEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { Frontend.setLoggedInUser(loginModel.getLoggedUser()); CommonModelManager.init(eventBus, user, loginModel); user.onUserLogin(loginModel.getLoggedUser().getUserName()); clearPassword(loginModel); } }); return loginModel; } void clearPassword(LoginModel loginModel) { String password = (String) loginModel.getPassword().getEntity(); if (password != null) { // Replace all password characters with whitespace password = password.replaceAll(".", " "); } loginModel.getPassword().setEntity(password); } }