/**
* <copyright> Copyright (c) 2008-2009 Jonas Helming, Maximilian Koegel. All rights reserved. This program and the
* accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this
* distribution, and is available at http://www.eclipse.org/legal/epl-v10.html </copyright>
*/
package org.eclipse.emf.emfstore.client.ui.views.users;
import org.eclipse.emf.emfstore.client.model.ServerInfo;
import org.eclipse.emf.emfstore.client.model.Usersession;
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
import org.eclipse.emf.emfstore.client.model.connectionmanager.AbstractSessionProvider;
import org.eclipse.emf.emfstore.client.ui.dialogs.login.LoginDialogController;
import org.eclipse.emf.emfstore.client.ui.dialogs.login.ServerInfoSelectionDialog;
import org.eclipse.emf.emfstore.server.exceptions.AccessControlException;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.widgets.Display;
/**
* @author boehlke
*
*/
public class AdminUiSessionProvider extends AbstractSessionProvider {
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.client.model.connectionmanager.AbstractSessionProvider#provideUsersession(org.eclipse.emf.emfstore.client.model.ServerInfo)
*/
@Override
public Usersession provideUsersession(ServerInfo serverInfo) throws EmfStoreException {
if (serverInfo == null) {
// try to retrieve a server info by showing a server info selection dialog
ServerInfoSelectionDialog dialog = new ServerInfoSelectionDialog(Display.getCurrent().getActiveShell(),
WorkspaceManager.getInstance().getCurrentWorkspace().getServerInfos());
if (dialog.open() == Dialog.OK) {
serverInfo = dialog.getResult();
}
}
if (serverInfo == null) {
throw new AccessControlException("Couldn't determine which server to connect.");
}
if (serverInfo.getLastUsersession() != null && serverInfo.getLastUsersession().isLoggedIn()) {
return serverInfo.getLastUsersession();
}
return new LoginDialogController().login(serverInfo);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.emfstore.client.model.connectionmanager.AbstractSessionProvider#login(org.eclipse.emf.emfstore.client.model.Usersession)
*/
@Override
public void login(Usersession usersession) throws EmfStoreException {
if (usersession != null) {
new LoginDialogController().login(usersession);
}
}
}