package org.ovirt.engine.ui.uicommon.models; import java.util.Collections; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.action.*; import org.ovirt.engine.ui.frontend.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicommon.dataprovider.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.ui.uicommon.validation.*; import org.ovirt.engine.core.common.users.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.ui.uicommon.models.common.*; import org.ovirt.engine.ui.uicommon.*; @SuppressWarnings("unused") public class LoginModel extends Model implements ITaskTarget { public static final String BeginLoginStage = "BeginTest"; public static final String EndLoginStage = "EndTest"; public static EventDefinition LoggedInEventDefinition; private Event privateLoggedInEvent; public Event getLoggedInEvent() { return privateLoggedInEvent; } private void setLoggedInEvent(Event value) { privateLoggedInEvent = value; } public static EventDefinition LoginFailedEventDefinition; private Event privateLoginFailedEvent; public Event getLoginFailedEvent() { return privateLoginFailedEvent; } private void setLoginFailedEvent(Event value) { privateLoginFailedEvent = value; } private UICommand privateLoginCommand; public UICommand getLoginCommand() { return privateLoginCommand; } public void setLoginCommand(UICommand value) { privateLoginCommand = value; } private UICommand privateAboutCommand; public UICommand getAboutCommand() { return privateAboutCommand; } private void setAboutCommand(UICommand value) { privateAboutCommand = value; } private Model window; public Model getWindow() { return window; } public void setWindow(Model value) { if (window != value) { window = value; OnPropertyChanged(new PropertyChangedEventArgs("Window")); } } private ListModel privateDomain; public ListModel getDomain() { return privateDomain; } private void setDomain(ListModel value) { privateDomain = value; } private EntityModel privateUserName; public EntityModel getUserName() { return privateUserName; } private void setUserName(EntityModel value) { privateUserName = value; } private EntityModel privatePassword; public EntityModel getPassword() { return privatePassword; } private void setPassword(EntityModel value) { privatePassword = value; } private boolean isConnecting; public boolean getIsConnecting() { return isConnecting; } public void setIsConnecting(boolean value) { if (isConnecting != value) { isConnecting = value; OnPropertyChanged(new PropertyChangedEventArgs("IsConnecting")); } } static { LoggedInEventDefinition = new EventDefinition("LoggedIn", LoginModel.class); LoginFailedEventDefinition = new EventDefinition("LoginFailed", LoginModel.class); } public LoginModel() { setLoggedInEvent(new Event(LoggedInEventDefinition)); setLoginFailedEvent(new Event(LoginFailedEventDefinition)); UICommand tempVar = new UICommand("Login", this); tempVar.setIsExecutionAllowed(false); setLoginCommand(tempVar); UICommand tempVar2 = new UICommand("About", this); tempVar2.setIsExecutionAllowed(false); setAboutCommand(tempVar2); setDomain(new ListModel()); getDomain().setIsChangable(false); setUserName(new EntityModel()); getUserName().setIsChangable(false); getUserName().getEntityChangedEvent().addListener(this); setPassword(new EntityModel()); getPassword().setIsChangable(false); setIsConnecting(true); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setHandleFailure(true); _asyncQuery.setModel(this); _asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue) { setIsConnecting(false); LoginModel loginModel = (LoginModel)model; if(ReturnValue == null) { loginModel.setMessage("Could not connect to oVirt Engine Service, please try to refresh the page. If the problem persists contact your System Administrator."); return; } AsyncQuery _asyncQuery1 = new AsyncQuery(); _asyncQuery1.setModel(loginModel); _asyncQuery1.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model1, Object ReturnValue1) { LoginModel loginModel1 = (LoginModel)model1; loginModel1.getLoginCommand().setIsExecutionAllowed(true); loginModel1.getAboutCommand().setIsExecutionAllowed(true); loginModel1.getUserName().setIsChangable(true); loginModel1.getPassword().setIsChangable(true); loginModel1.getDomain().setIsChangable(true); java.util.List<String> domains = (java.util.List<String>)ReturnValue1; loginModel1.getDomain().setItems(domains); loginModel1.getDomain().setSelectedItem(Linq.FirstOrDefault(domains)); }}; AsyncDataProvider.GetDomainListViaPublic(_asyncQuery1, false); }}; AsyncDataProvider.IsBackendAvailable(_asyncQuery); } @Override public void eventRaised(Event ev, Object sender, EventArgs args) { super.eventRaised(ev, sender, args); if (ev.equals(EntityModel.EntityChangedEventDefinition) && sender == getUserName()) { UserName_EntityChanged(); } } private void UserName_EntityChanged() { getDomain().setIsChangable(GetDomainAvailability()); } private boolean GetDomainAvailability() { //Check whether the user name contains domain part. boolean hasDomain = GetUserNameParts((String)getUserName().getEntity())[1] != null; return !hasDomain; } private String[] GetUserNameParts(String value) { if (!StringHelper.isNullOrEmpty(value)) { int index = value.indexOf('@'); //Always return array of two elements representing user name and domain.) return new String[] { index > -1 ? value.substring(0, index) : value, index > -1 ? value.substring(index + 1) : null }; } return new String[] { "", null }; } public void Login() { if (!Validate()) { return; } getUserName().setIsChangable(false); getPassword().setIsChangable(false); getDomain().setIsChangable(false); getLoginCommand().setIsExecutionAllowed(false); //Clear config cache on login (to make sure we don't use old config in a new session) DataProvider.ClearConfigCache(); String fullUserName = (String)getUserName().getEntity(); String[] parts = GetUserNameParts(fullUserName); Task.Create(this, new java.util.ArrayList<Object>(java.util.Arrays.asList(new Object[] { BeginLoginStage, fullUserName, getPassword().getEntity(), parts[1] }))).Run(); } protected boolean Validate() { getUserName().ValidateEntity(new IValidation[] { new NotEmptyValidation() }); getPassword().ValidateEntity(new IValidation[] { new NotEmptyValidation() }); getDomain().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() }); return getUserName().getIsValid() && getPassword().getIsValid() && getDomain().getIsValid(); } @Override public void ExecuteCommand(UICommand command) { super.ExecuteCommand(command); if (command == getLoginCommand()) { Login(); } else if (command == getAboutCommand()) { About(); } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { Cancel(); } } public void About() { AboutModel model = new AboutModel(); setWindow(model); model.setTitle("About oVirt Engine"); model.setHashName("about_rhev_manager"); model.setShowOnlyVersion(true); UICommand tempVar = new UICommand("Cancel", this); tempVar.setTitle("Close"); tempVar.setIsDefault(true); tempVar.setIsCancel(true); model.getCommands().add(tempVar); } public void Cancel() { setWindow(null); } public void run(TaskContext context) { java.util.ArrayList<Object> state = (java.util.ArrayList<Object>)context.getState(); String stage = (String)state.get(0); //C# TO JAVA CONVERTER NOTE: The following 'switch' operated on a string member and was converted to Java 'if-else' logic: // switch (stage) //ORIGINAL LINE: case BeginLoginStage: if (StringHelper.stringsEqual(stage, BeginLoginStage)) { String fullUserName = (String)state.get(1); String password = (String)state.get(2); String domain = (String)state.get(3); VdcUser user = Frontend.Login(fullUserName, password, StringHelper.isNullOrEmpty(domain) ? (String)getDomain().getSelectedItem() : domain); context.InvokeUIThread(this, new java.util.ArrayList<Object>(java.util.Arrays.asList(new Object[] { EndLoginStage, user }))); } //ORIGINAL LINE: case EndLoginStage: else if (StringHelper.stringsEqual(stage, EndLoginStage)) { VdcUser user = (VdcUser)state.get(1); if (user == null) { getPassword().setEntity(""); getLoginFailedEvent().raise(this, EventArgs.Empty); } else { getLoggedInEvent().raise(this, EventArgs.Empty); } } getUserName().setIsChangable(true); getPassword().setIsChangable(true); getDomain().setIsChangable(GetDomainAvailability()); getLoginCommand().setIsExecutionAllowed(true); } }