blob: 88147ba05a396ce7392b025806dcb7a40cf42fc5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH and others.
*
* 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
*
* Contributors:
* Otto von Wesendonk, Edgar Mueller - initial API and implementation
* Edgar Mueller - API annotations
******************************************************************************/
package org.eclipse.emf.emfstore.client;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESServerFactoryImpl;
import org.eclipse.emf.emfstore.server.exceptions.ESException;
/**
* Represents an EMFStore server and its API. It gives access to {@link ESRemoteProject} which can be used to operate on
* existing projects.
*
* @author emueller
* @author wesendon
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ESServer {
/**
* Factory for creating ESServer instances.
*/
ESServerFactory FACTORY = ESServerFactoryImpl.INSTANCE;
/**
* Returns the local name of the server.
*
* @return the name of the server
*/
String getName();
/**
* Sets the local name of the server.
*
* @param name the new local name of th server
*/
void setName(String name);
/**
* Returns the port of the server where EMFStore is listening on.
*
* @return the port of the server EMFStore is listing on
*/
int getPort();
/**
* Sets the port of the server where EMFStore is listening on.
*
* @param port
* the port of the server EMFStore is listing on
*/
void setPort(int port);
/**
* Returns the URL of the server.
*
* @return the URL of the server as a string
*/
String getURL();
/**
* Sets the URL of the server.
*
* @param url
* the URL of the server as a string
*/
void setURL(String url);
/**
* Returns the alias for the certificate used by this server.
* Certificates are managed by the
* {@link org.eclipse.emf.emfstore.internal.client.model.connectionmanager.KeyStoreManager}
*
* @return the certificate alias
*/
String getCertificateAlias();
/**
* Sets a new certificate alias.
*
* @param alias the alias of the the certificate to be set
*/
void setCertificateAlias(String alias);
/**
* Returns a list with all remote projects hosted on this server.
*
* @return a list with all remote project
*
* @throws ESException in case an error occurs while retrieving the list of remote projects
*/
List<ESRemoteProject> getRemoteProjects() throws ESException;
/**
* Returns a list with all remote projects hosted on this server.
*
* @param usersession
* the {@link ESUsersession} that should be used to fetch the remote projects.<br/>
* If <code>null</code>, the session manager will try to inject a session.
*
* @return a list with all remote project
*
* @throws ESException in case an error occurs while retrieving the list of remote projects
*/
List<ESRemoteProject> getRemoteProjects(ESUsersession usersession) throws ESException;
/**
* Returns the {@link ESUsersession} which was used on the last call to this server.
*
* @return the lastly used session
*/
ESUsersession getLastUsersession();
/**
* Creates an empty project on the server.
*
* @param projectName
* The name of the project to be created
* @param monitor
* a {@link IProgressMonitor} instance that is used to indicate progress
* about creating the remote project
* @return a {@link ESRemoteProject} object containing information about the
* created project
* @throws ESException
* If an error occurs while creating the remote project
*/
ESRemoteProject createRemoteProject(String projectName, final IProgressMonitor monitor)
throws ESException;
/**
* Creates an empty project on the server.
*
* @param usersession
* the {@link ESUsersession} that should be used to create the
* remote project.<br/>
* If <code>null</code>, the session manager will search for a
* session.
* @param projectName
* the name of the project
* @param monitor
* a monitor to show the progress
* @return a {@link ESRemoteProject} object containing information about the
* created project
* @throws ESException
* If an error occurs while creating the remote project
*/
ESRemoteProject createRemoteProject(ESUsersession usersession, String projectName, IProgressMonitor monitor)
throws ESException;
/**
* Logs into this server, returning a {@link ESUsersession}.
*
* @param name
* the name of the user
* @param password
* the cleartext password of the user
*
* @return a logged in {@link ESUsersession}
* @throws ESException in case an error occurs while creating and logging in the session for the given user
*/
ESUsersession login(String name, String password) throws ESException;
}