| /******************************************************************************* |
| * Copyright (c) 2008-2011 Chair for Applied Software Engineering, |
| * Technische Universitaet Muenchen. |
| * 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: |
| * MaximilianKoegel |
| ******************************************************************************/ |
| package org.eclipse.emf.emfstore.internal.server; |
| |
| import java.util.List; |
| |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EPackage; |
| import org.eclipse.emf.emfstore.internal.common.model.EMFStoreProperty; |
| import org.eclipse.emf.emfstore.internal.common.model.Project; |
| import org.eclipse.emf.emfstore.internal.server.exceptions.InvalidVersionSpecException; |
| import org.eclipse.emf.emfstore.internal.server.filetransfer.FileChunk; |
| import org.eclipse.emf.emfstore.internal.server.filetransfer.FileTransferInformation; |
| import org.eclipse.emf.emfstore.internal.server.model.ProjectHistory; |
| import org.eclipse.emf.emfstore.internal.server.model.ProjectId; |
| import org.eclipse.emf.emfstore.internal.server.model.ProjectInfo; |
| import org.eclipse.emf.emfstore.internal.server.model.SessionId; |
| import org.eclipse.emf.emfstore.internal.server.model.accesscontrol.ACOrgUnitId; |
| import org.eclipse.emf.emfstore.internal.server.model.accesscontrol.ACUser; |
| import org.eclipse.emf.emfstore.internal.server.model.accesscontrol.OrgUnitProperty; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.AbstractChangePackage; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.BranchInfo; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.BranchVersionSpec; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.ChangePackageEnvelope; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.HistoryInfo; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.HistoryQuery; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.LogMessage; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.PrimaryVersionSpec; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.TagVersionSpec; |
| import org.eclipse.emf.emfstore.internal.server.model.versioning.VersionSpec; |
| import org.eclipse.emf.emfstore.server.exceptions.ESException; |
| |
| /** |
| * An EMF store is responsible for storing projects, change management on |
| * projects and for persisting projects. |
| * |
| * @author Maximilian Koegel |
| * @generated NOT |
| */ |
| public interface EMFStore extends EMFStoreInterface { |
| |
| /** |
| * Virtual URI for change package de-/serialization. |
| */ |
| URI CHANGEPACKAGE_URI = URI.createURI("emfstoreVirtualChangePackageUri"); //$NON-NLS-1$ |
| |
| /** |
| * Virtual URI for project de-/serialization. |
| */ |
| URI PROJECT_URI = URI.createURI("emfstoreVirtualProjectUri"); //$NON-NLS-1$ |
| |
| /** |
| * Get a list of projects the user of the session id can access. The server |
| * should is determined by the session id. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @return a list of project infos for the projects the user can access |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| List<ProjectInfo> getProjectList(SessionId sessionId) throws ESException; |
| |
| /** |
| * Gets a project in a certain revision from the server. Depending on your |
| * persistence properties, this method can become expensive because it has |
| * to recalculate the requested project state. |
| * |
| * @see ServerConfiguration#PROJECTSTATE_VERSION_PERSISTENCE |
| * @param sessionId |
| * the session id for authentication |
| * @param projectId |
| * the project id of the project to get |
| * @param versionSpec |
| * the version to get |
| * @return a project in the specified revision |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| Project getProject(SessionId sessionId, ProjectId projectId, VersionSpec versionSpec) throws ESException; |
| |
| /** |
| * Create a new version on the server of the given project. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param projectId |
| * the project id |
| * @param baseVersionSpec |
| * the version the project was last synched with the server |
| * @param changePackage |
| * the changes performed on the project since last synch |
| * @param targetBranch |
| * this should be set if a new branch shout be created with this |
| * commit. Otherwise set null |
| * @param sourceVersion |
| * if a branch was merged and the resulting merged changed are |
| * committed this should be set to the incoming branch inorder to |
| * set correct links in the version model. Can be null otherwise |
| * @param logMessage |
| * the log message for the new version |
| * @return the version specifier of the version created on the server |
| * @throws InvalidVersionSpecException |
| * if the base version is not equal to the current head |
| * revision. |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| PrimaryVersionSpec createVersion(SessionId sessionId, ProjectId projectId, PrimaryVersionSpec baseVersionSpec, |
| AbstractChangePackage changePackage, BranchVersionSpec targetBranch, PrimaryVersionSpec sourceVersion, |
| LogMessage logMessage) throws ESException, InvalidVersionSpecException; |
| |
| /** |
| * Submits a single {@link ChangePackageEnvelope} containing a change package fragment that will be aggregated to a |
| * complete {@link org.eclipse.emf.emfstore.internal.server.model.versioning.ChangePackage ChangePackage} once |
| * all fragments are available. |
| * |
| * @param sessionId |
| * the {@link SessionId} for authentication |
| * @param projectId |
| * the {@link ProjectId} |
| * @param envelope |
| * a{@link ChangePackageEnvelope} containing the change package fragment |
| * |
| * @return an ID that is used to identify the set of submitted {@link ChangePackageEnvelope}s |
| * |
| * @throws ESException in case the fragment could not be created |
| */ |
| String uploadChangePackageFragment(SessionId sessionId, ProjectId projectId, ChangePackageEnvelope envelope) |
| throws ESException; |
| |
| /** |
| * Retrieves a change package fragment. |
| * |
| * @param sessionId |
| * the {@link SessionId} for authentication purposes |
| * @param proxyId |
| * the ID of the change package proxy that is used to identify available fragments |
| * @param fragmentIndex |
| * the index of fragment |
| * @return a {@link ChangePackageEnvelope} containing the requested change package fragment |
| * @throws ESException in case the fragment could not be fetched |
| */ |
| ChangePackageEnvelope downloadChangePackageFragment(SessionId sessionId, String proxyId, int fragmentIndex) |
| throws ESException; |
| |
| /** |
| * Resolve a version specified to a primary version specifier. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param versionSpec |
| * the version specifier to resolve |
| * @param projectId |
| * the project id |
| * @return a primary version specifier identifing the same version |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| PrimaryVersionSpec resolveVersionSpec(SessionId sessionId, ProjectId projectId, VersionSpec versionSpec) |
| throws ESException; |
| |
| /** |
| * Get changes from the server. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param projectId |
| * the project id |
| * @param source |
| * the source version specifier |
| * @param target |
| * the target version specifier |
| * @return a list of change packages from source to target representing the |
| * changes that happened between the two versions. |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| List<AbstractChangePackage> getChanges(SessionId sessionId, ProjectId projectId, VersionSpec source, |
| VersionSpec target) |
| throws ESException; |
| |
| /** |
| * Lista all branches of the given project. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param projectId |
| * the project id |
| * @return list of {@link BranchInfo} |
| * @throws ESException |
| * in case of an error |
| */ |
| List<BranchInfo> getBranches(SessionId sessionId, ProjectId projectId) throws ESException; |
| |
| /** |
| * Get history information from the server. The list returned will describe |
| * the versions as request through {@link HistoryQuery}. |
| * |
| * @param sessionId |
| * the session id |
| * @param projectId |
| * the project id |
| * @param historyQuery |
| * the historyQuery |
| * @return list of history information |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| List<HistoryInfo> getHistoryInfo(SessionId sessionId, ProjectId projectId, HistoryQuery<?> historyQuery) |
| throws ESException; |
| |
| /** |
| * Adds a tag to a version of the specified project. |
| * |
| * @param sessionId |
| * the session id |
| * @param projectId |
| * the project id |
| * @param versionSpec |
| * the version versionSpec |
| * @param tag |
| * the tag |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| */ |
| void addTag(SessionId sessionId, ProjectId projectId, PrimaryVersionSpec versionSpec, TagVersionSpec tag) |
| throws ESException; |
| |
| /** |
| * Removes a tag to a version of the specified project. |
| * |
| * @param sessionId |
| * the session id |
| * @param projectId |
| * the project id |
| * @param versionSpec |
| * the version versionSpec |
| * @param tag |
| * the tag to be removed |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| */ |
| void removeTag(SessionId sessionId, ProjectId projectId, PrimaryVersionSpec versionSpec, TagVersionSpec tag) |
| throws ESException; |
| |
| /** |
| * Create a new project on the server. |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param name |
| * the name of the server |
| * @param description |
| * the description |
| * @param logMessage |
| * the logMessage |
| * @return a {@link ProjectInfo} for the new project |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| ProjectInfo createEmptyProject(SessionId sessionId, String name, String description, LogMessage logMessage) |
| throws ESException; |
| |
| /** |
| * Create a new project on the server. This createProject method allows to |
| * create a project on the server with initial projectstate (share project). |
| * |
| * @param sessionId |
| * the session id for authentication |
| * @param name |
| * the name of the server |
| * @param description |
| * the description |
| * @param logMessage |
| * the logMessage |
| * @param project |
| * the initial project state |
| * @return a {@link ProjectInfo} for the new project |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| * @generated NOT |
| */ |
| ProjectInfo createProject(SessionId sessionId, String name, String description, LogMessage logMessage, |
| Project project) throws ESException; |
| |
| /** |
| * Deletes a project on the server. It's possible to delete the project from |
| * the containment tree and if wanted to deleted the related files too. |
| * |
| * @param sessionId |
| * the session id |
| * @param projectId |
| * the project id |
| * @param deleteFiles |
| * if true, the project files will be deleted too |
| * @throws ESException |
| * in case of failure |
| */ |
| void deleteProject(SessionId sessionId, ProjectId projectId, boolean deleteFiles) throws ESException; |
| |
| /** |
| * Resolves a user by id and returns an ACUser with all roles on the server. |
| * Also roles from groups are aggregated and added to the user. To resolve |
| * other user than the requesting user himself, the user has to have admin |
| * access rights. If id is null, the requesting user will be resolved. |
| * |
| * @param sessionId |
| * session id |
| * @param id |
| * user id, can be null, then requesting user gets resolved |
| * @return ACuser with all roles on the server |
| * @throws ESException |
| * if any error in the EmfStore occurs |
| */ |
| ACUser resolveUser(SessionId sessionId, ACOrgUnitId id) throws ESException; |
| |
| /** |
| * Imports a project history to the server. The project history elements |
| * such as version, projecstate etc will be devided in several files on the |
| * server file system. The server will try to use the specified project id, |
| * if it already exists a new id is generated. |
| * |
| * @param sessionId |
| * sessionid |
| * @param projectHistory |
| * project history |
| * @return projectId |
| * @throws ESException |
| * in case of failure |
| */ |
| ProjectId importProjectHistoryToServer(SessionId sessionId, ProjectHistory projectHistory) throws ESException; |
| |
| /** |
| * Exports a given project history from the server. Caution if you try to |
| * export big projects from the server. |
| * |
| * @param sessionId |
| * session id |
| * @param projectId |
| * project id |
| * @return a projecthistory |
| * @throws ESException |
| * in case of failure |
| */ |
| ProjectHistory exportProjectHistoryFromServer(SessionId sessionId, ProjectId projectId) throws ESException; |
| |
| /** |
| * Uploads a file chunk to the server. |
| * |
| * @param sessionId |
| * session id |
| * @param projectId |
| * project id |
| * @param fileChunk |
| * file chunk |
| * @return FileVersion denoting the current file version to be written to |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| */ |
| FileTransferInformation uploadFileChunk(SessionId sessionId, ProjectId projectId, FileChunk fileChunk) |
| throws ESException; |
| |
| /** |
| * Downloads a file chunk from the server. |
| * |
| * @param sessionId |
| * session id |
| * @param projectId |
| * project id |
| * @param fileInformation |
| * file information |
| * @return FileChunk |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| */ |
| FileChunk downloadFileChunk(SessionId sessionId, ProjectId projectId, FileTransferInformation fileInformation) |
| throws ESException; |
| |
| /** |
| * @param sessionId |
| * session id |
| * @param changedProperty |
| * the property that has been changed client-side |
| * @param tmpUser |
| * the respective user |
| * @param projectId |
| * the project id |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| */ |
| void transmitProperty(SessionId sessionId, OrgUnitProperty changedProperty, ACUser tmpUser, ProjectId projectId) |
| throws ESException; |
| |
| /** |
| * Store EMFProperties on the server. |
| * |
| * @param sessionId |
| * sessionId |
| * @param property |
| * list properties which shall be shared on the server. |
| * @param projectId |
| * the project id |
| * @return a list of properties which have not been set on the server due |
| * there were more recent versions of these properties on the server |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| */ |
| List<EMFStoreProperty> setEMFProperties(SessionId sessionId, List<EMFStoreProperty> property, ProjectId projectId) |
| throws ESException; |
| |
| /** |
| * Get stored EMFStoreProperties from the server. |
| * |
| * @param sessionId |
| * sessionId |
| * @param projectId |
| * the projct id |
| * |
| * @return list of EMFStoreProperties |
| * |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| * |
| **/ |
| List<EMFStoreProperty> getEMFProperties(SessionId sessionId, ProjectId projectId) throws ESException; |
| |
| /** |
| * Register a new EPackage. |
| * |
| * @param sessionId |
| * session id |
| * @param pkg |
| * the EPackage to be registered |
| * |
| * @throws ESException |
| * if any error occurs in the EmfStore |
| */ |
| void registerEPackage(SessionId sessionId, EPackage pkg) throws ESException; |
| |
| /** |
| * Returns the version of the EMFStore server. |
| * |
| * @param sessionId |
| * a session ID |
| * |
| * @return the version of the EMFStore server |
| * |
| * @throws ESException |
| * in case of an error |
| */ |
| String getVersion(SessionId sessionId) throws ESException; |
| } |