/*******************************************************************************
* 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:
******************************************************************************/
package org.eclipse.emf.emfstore.client.model;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.emfstore.client.model.controller.callbacks.CommitCallback;
import org.eclipse.emf.emfstore.client.model.controller.callbacks.UpdateCallback;
import org.eclipse.emf.emfstore.client.model.exceptions.MEUrlResolutionException;
import org.eclipse.emf.emfstore.client.model.filetransfer.FileDownloadStatus;
import org.eclipse.emf.emfstore.client.model.filetransfer.FileInformation;
import org.eclipse.emf.emfstore.client.model.impl.OperationManager;
import org.eclipse.emf.emfstore.client.model.observers.ConflictResolver;
import org.eclipse.emf.emfstore.client.properties.PropertyManager;
import org.eclipse.emf.emfstore.common.model.EMFStoreProperty;
import org.eclipse.emf.emfstore.common.model.IdentifiableElement;
import org.eclipse.emf.emfstore.common.model.Project;
import org.eclipse.emf.emfstore.server.exceptions.EmfStoreException;
import org.eclipse.emf.emfstore.server.exceptions.FileTransferException;
import org.eclipse.emf.emfstore.server.model.FileIdentifier;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
import org.eclipse.emf.emfstore.server.model.accesscontrol.OrgUnitProperty;
import org.eclipse.emf.emfstore.server.model.url.ModelElementUrlFragment;
import org.eclipse.emf.emfstore.server.model.versioning.ChangePackage;
import org.eclipse.emf.emfstore.server.model.versioning.HistoryInfo;
import org.eclipse.emf.emfstore.server.model.versioning.HistoryQuery;
import org.eclipse.emf.emfstore.server.model.versioning.LogMessage;
import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.TagVersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.VersionSpec;
import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation;
/**
* <!-- begin-user-doc --> A representation of the model object ' <em><b>Project Container</b></em>'. <!-- end-user-doc
* -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProject <em>Project</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectId <em>Project Id</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectName <em>Project Name</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectDescription <em>Project Description</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getEvents <em>Events</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getUsersession <em>Usersession</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getLastUpdated <em>Last Updated</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getBaseVersion <em>Base Version</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getResourceCount <em>Resource Count</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#isDirty <em>Dirty</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getOldLogMessages <em>Old Log Messages</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getLocalOperations <em>Local Operations</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getNotifications <em>Notifications</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getEventComposite <em>Event Composite</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getNotificationComposite <em>Notification Composite
* </em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getWaitingUploads <em>Waiting Uploads</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProperties <em>Properties</em>}</li>
* <li>{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getChangedSharedProperties <em>Changed Shared
* Properties</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace()
* @model
* @generated
*/
public interface ProjectSpace extends IdentifiableElement {
/**
* Adds a file to this project space. The file will be uploaded to the
* EMFStore upon a commit. As long as the file is not yet committed, it can
* be removed by first retrieving the {@link FileInformation} via {@link #getFileInfo(FileIdentifier)} and then
* remove it via {@link FileInformation#cancelPendingUpload()}.
*
* @param file
* to be added to the project space
* @return The file identifier the file was assigned to. This identifier can be
* used to retrieve the file later on
* @throws FileTransferException
* if any error occurs
*
* @generated NOT
*/
FileIdentifier addFile(File file) throws FileTransferException;
/**
* Adds a list of operations to this project space.
*
* @param operations
* the list of operations to be added
*
* @generated NOT
*/
void addOperations(List<? extends AbstractOperation> operations);
/**
* Adds a tag to the specified version of this project.
*
* @param versionSpec
* the versionSpec
* @param tag
* the tag
* @throws EmfStoreException
* if exception occurs on the server
*
* @generated NOT
*/
void addTag(PrimaryVersionSpec versionSpec, TagVersionSpec tag) throws EmfStoreException;
/**
* Begin a composite operation on the projectSpace.
*
* @return a handle to abort or complete the operation
*
* @generated NOT
*/
CompositeOperationHandle beginCompositeOperation();
/**
* TODO
*
* @param logMessage
* @param callback
* @param monitor
*
* @generated NOT
*/
public PrimaryVersionSpec commit(LogMessage logMessage, CommitCallback callback, IProgressMonitor monitor)
throws EmfStoreException;
/**
* Export all local changes to a file.
*
* @param file
* the file being exported to
* @throws IOException
* if writing to the given file fails
*
* @generated NOT
*/
void exportLocalChanges(File file) throws IOException;
/**
* Export all local changes to a file.
*
* @param file
* the file being exported to
* @param progressMonitor
* the progress monitor that should be used while exporting
* @throws IOException
* if writing to the given file fails
*
* @generated NOT
*/
void exportLocalChanges(File file, IProgressMonitor progressMonitor) throws IOException;
/**
* Export a project to the given file.
*
* @param file
* the file being exported to
* @throws IOException
* if writing to the given file fails
*
* @generated NOT
*/
void exportProject(File file) throws IOException;
/**
* Export a project to the given file.
*
* @param file
* the file being exported to
* @param progressMonitor
* the progress monitor that should be used during the export
* @throws IOException
* if writing to the given file fails
*
* @generated NOT
*/
void exportProject(File file, IProgressMonitor progressMonitor) throws IOException;
/**
* Returns the value of the '<em><b>Base Version</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Base Version</em>' containment reference isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Base Version</em>' containment reference.
* @see #setBaseVersion(PrimaryVersionSpec)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_BaseVersion()
* @model containment="true" resolveProxies="true" required="true"
* @generated
*/
PrimaryVersionSpec getBaseVersion();
/**
* Returns the value of the '<em><b>Changed Shared Properties</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.emfstore.common.model.EMFStoreProperty}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Changed Shared Properties</em>' map isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Changed Shared Properties</em>' reference list.
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_ChangedSharedProperties()
* @model
* @generated
*/
EList<EMFStoreProperty> getChangedSharedProperties();
/**
* Returns the value of the '<em><b>Workspace</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.emfstore.client.model.Workspace#getProjectSpaces <em>Project Spaces</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Workspace</em>' container reference isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Workspace</em>' container reference.
* @see #setWorkspace(Workspace)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_Workspace()
* @see org.eclipse.emf.emfstore.client.model.Workspace#getProjectSpaces
* @model opposite="projectSpaces" transient="false"
* @generated
*/
Workspace getWorkspace();
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getWorkspace <em>Workspace</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Workspace</em>' container reference.
* @see #getWorkspace()
* @generated
*/
void setWorkspace(Workspace value);
/**
* @return a list of the change packages between two PrimarySpecVersions.
* @param sourceVersion
* the source version spec
* @param targetVersion
* the target version spec
* @throws EmfStoreException
* if any error in the EmfStore occurs
* @generated NOT
*/
List<ChangePackage> getChanges(VersionSpec sourceVersion, VersionSpec targetVersion) throws EmfStoreException;
/**
* Gets a file with a specific identifier. If the file is not cached
* locally, it is tried to download the file if a connection to the sever
* exists. If the file cannot be found locally and not on the server (or the
* server isn't reachable), a FileTransferException is thrown. Such an
* exception is also thrown if other errors occur while trying to download
* the file. The method returns not the file itself, because it does not
* block in case of downloading the file. Instead, it returns a status
* object which can be queried for the status of the download. Once the
* download is finished ( status.isFinished() ), the file can be retrieved
* from this status object by calling status.getTransferredFile().
*
* @param fileIdentifier
* file identifier string.
* @return a status object that can be used to retrieve various information
* about the file.
* @throws FileTransferException
* if any error occurs retrieving the files
*
* @generated NOT
*/
FileDownloadStatus getFile(FileIdentifier fileIdentifier) throws FileTransferException;
/**
* Gets the file information for a specific file identifier. This file
* information can be used to access further details of a file (if it
* exists, is cached, is a pending upload). It can also be used to alter the
* file in limited ways (like removing a pending upload). The
* FileInformation class is basically a facade to keep the interface in the
* project space small (only getFileInfo) while still providing a rich
* interface for files.
*
* @param fileIdentifier
* the file identifier for which to get the information
* @return the information for that identifier.
*
* @generated NOT
*/
FileInformation getFileInfo(FileIdentifier fileIdentifier);
/**
* Gets a list of history infos.
*
* @see Workspace
* @return a list of history infos
* @throws EmfStoreException if server throws an exception
* @generated NOT
*/
List<HistoryInfo> getHistoryInfo(HistoryQuery query) throws EmfStoreException;
/**
* Returns the value of the '<em><b>Last Updated</b></em>' attribute. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Last Updated</em>' attribute isn't clear, there really should be more of a description
* here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Last Updated</em>' attribute.
* @see #setLastUpdated(Date)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_LastUpdated()
* @model
* @generated
*/
Date getLastUpdated();
/**
* Gathers all local operations and canonizes them.
*
* @param canonized
* true if the operations should be canonized
* @return the list of operations
*
* @generated NOT
*/
ChangePackage getLocalChangePackage(boolean canonized);
/**
* Returns the value of the '<em><b>Local Operations</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Local Operations</em>' containment reference isn't clear, there really should be more
* of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Local Operations</em>' containment reference.
* @see #setLocalOperations(OperationComposite)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_LocalOperations()
* @model containment="true" resolveProxies="true"
* @generated
*/
OperationComposite getLocalOperations();
/**
* @return modified model elements cache. This is class clients (e.g. dirty
* decorator) can ask to see if a model element has been modified.
*
* @generated NOT
*/
ModifiedModelElementsCache getModifiedModelElementsCache();
/**
* Returns the value of the '<em><b>Old Log Messages</b></em>' attribute
* list. The list contents are of type {@link java.lang.String}. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Old Log Messages</em>' attribute list isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Old Log Messages</em>' attribute list.
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_OldLogMessages()
* @model
* @generated
*/
EList<String> getOldLogMessages();
/**
* Get the {@link OperationManager} for this {@link ProjectSpace}.
*
* @return the operation manager
* @generated NOT
*/
OperationManager getOperationManager();
/**
* Return the list of operations that have already been performed on the
* project space.
*
* @return a list of operations
* @generated NOT
*/
List<AbstractOperation> getOperations();
/**
* Returns the value of the '<em><b>Project</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Project</em>' reference isn't clear, there really should be more of a description
* here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Project</em>' containment reference.
* @see #setProject(Project)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_Project()
* @model containment="true" resolveProxies="true"
* @generated
*/
Project getProject();
/**
* Returns the value of the '<em><b>Project Description</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Project Description</em>' attribute isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Project Description</em>' attribute.
* @see #setProjectDescription(String)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_ProjectDescription()
* @model required="true"
* @generated
*/
String getProjectDescription();
/**
* Returns the value of the '<em><b>Project Id</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Project Id</em>' containment reference isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Project Id</em>' containment reference.
* @see #setProjectId(ProjectId)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_ProjectId()
* @model containment="true" resolveProxies="true" required="true"
* @generated
*/
ProjectId getProjectId();
/**
* Get a project info for the project space.
*
* @return a project info
*
* @generated NOT
*/
ProjectInfo getProjectInfo();
/**
* Returns the value of the '<em><b>Project Name</b></em>' attribute. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Project Name</em>' attribute isn't clear, there really should be more of a description
* here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Project Name</em>' attribute.
* @see #setProjectName(String)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_ProjectName()
* @model required="true"
* @generated
*/
String getProjectName();
/**
* Returns the value of the '<em><b>Properties</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.emfstore.common.model.EMFStoreProperty}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Properties</em>' map isn't clear, there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Properties</em>' containment reference list.
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_Properties()
* @model containment="true" resolveProxies="true"
* @generated
*/
EList<EMFStoreProperty> getProperties();
/**
* Get the {@link PropertyManager} for this {@link ProjectSpace}.
*
* @return the property manager
* @generated NOT
*/
PropertyManager getPropertyManager();
/**
* Returns the value of the '<em><b>Usersession</b></em>' reference. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Usersession</em>' reference isn't clear, there really should be more of a description
* here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Usersession</em>' reference.
* @see #setUsersession(Usersession)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_Usersession()
* @model
* @generated
*/
Usersession getUsersession();
/**
* Returns the value of the '<em><b>Waiting Uploads</b></em>' containment
* reference list. The list contents are of type {@link org.eclipse.emf.emfstore.server.model.FileIdentifier}. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Waiting Uploads</em>' containment reference list isn't clear, there really should be
* more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Waiting Uploads</em>' containment reference
* list.
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_WaitingUploads()
* @model containment="true" resolveProxies="true"
* @generated
*/
EList<FileIdentifier> getWaitingUploads();
/**
* Import changes from a file.
*
* @param fileName
* the file name to import from
* @throws IOException
* if file access fails
* @generated NOT
*/
void importLocalChanges(String fileName) throws IOException;
/**
* Initialize the project space and its resources.
*
* @generated NOT
*/
void init();
/**
* Initialize the resources of the project space.
*
* @param resourceSet
* the resource set the project space should use
* @generated NOT
*/
void initResources(ResourceSet resourceSet);
/**
* Returns the value of the '<em><b>Dirty</b></em>' attribute. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Dirty</em>' attribute isn't clear, there really should be more of a description
* here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Dirty</em>' attribute.
* @see #setDirty(boolean)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_Dirty()
* @model
* @generated
*/
boolean isDirty();
/**
* Shows whether projectSpace is transient.
*
* @return true, if transient.
*
* @generated NOT
*/
boolean isTransient();
/**
* Determines whether the project is up to date, that is, whether the base revision and the head revision are equal.
*
* @return true, if the project is up to date, false otherwise
* @throws EmfStoreException if the head revision can not be resolved
*
* @generated NOT
*/
boolean isUpdated() throws EmfStoreException;
/**
* Will make the projectSpace transient, it will not make its content or
* changes persistent. Can only be called before the resources or the
* project space have been initialized.
*
* @generated NOT
*/
void makeTransient();
/**
* Merge the changes from current base version to given target version with
* the local operations.
*
* @param target
* target version
* @param conflictResolver
* a conflict resolver that will actually perform the conflict
* resolution
* @throws EmfStoreException
* if the conncection to the server fails
*
* @generated NOT
*/
boolean merge(PrimaryVersionSpec target, ConflictResolver conflictResolver) throws EmfStoreException;
/**
* Removes a tag to the specified version of this project.
*
* @param versionSpec
* the versionSpec
* @param tag
* the tag
* @throws EmfStoreException
* if exception occurs on the server
*
* @generated NOT
*/
void removeTag(PrimaryVersionSpec versionSpec, TagVersionSpec tag) throws EmfStoreException;
/**
* Resolve the url to a model element.
*
* @param modelElementUrlFragment
* the url
* @return the model element
* @throws MEUrlResolutionException
* if model element does not exist in project.
* @generated NOT
*/
EObject resolve(ModelElementUrlFragment modelElementUrlFragment) throws MEUrlResolutionException;
/**
* <!-- begin-user-doc --> Resolve a version spec to a primary version spec.
*
* @param versionSpec
* the spec to resolve
* @return the primary version spec <!-- end-user-doc -->
* @throws EmfStoreException
* if resolving fails
* @model
* @generated NOT
*/
PrimaryVersionSpec resolveVersionSpec(VersionSpec versionSpec) throws EmfStoreException;
/**
* Revert all local changes in the project space. Returns the state of the
* project to that of the project space base version.
*
* @generated NOT
*/
void revert();
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getBaseVersion <em>Base Version</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Base Version</em>' containment reference.
* @see #getBaseVersion()
* @generated
*/
void setBaseVersion(PrimaryVersionSpec value);
/**
* Returns the value of the '<em><b>Resource Count</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Resource Count</em>' attribute isn't clear, there really should be more of a
* description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Resource Count</em>' attribute.
* @see #setResourceCount(int)
* @see org.eclipse.emf.emfstore.client.model.ModelPackage#getProjectSpace_ResourceCount()
* @model
* @generated
*/
int getResourceCount();
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getResourceCount <em>Resource Count</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Resource Count</em>' attribute.
* @see #getResourceCount()
* @generated
*/
void setResourceCount(int value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#isDirty <em>Dirty</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Dirty</em>' attribute.
* @see #isDirty()
* @generated
*/
void setDirty(boolean value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getLastUpdated <em>Last Updated</em>}' attribute.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Last Updated</em>' attribute.
* @see #getLastUpdated()
* @generated
*/
void setLastUpdated(Date value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getLocalOperations <em>Local Operations</em>}' containment reference.
* <!-- begin-user-doc
* --> <!-- end-user-doc -->
* @param value the new value of the '<em>Local Operations</em>' containment reference.
* @see #getLocalOperations()
* @generated
*/
void setLocalOperations(OperationComposite value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProject <em>Project</em>}' containment reference.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Project</em>' containment reference.
* @see #getProject()
* @generated
*/
void setProject(Project value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectDescription <em>Project Description</em>}' attribute.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Project Description</em>' attribute.
* @see #getProjectDescription()
* @generated
*/
void setProjectDescription(String value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectId <em>Project Id</em>}' containment reference.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Project Id</em>' containment reference.
* @see #getProjectId()
* @generated
*/
void setProjectId(ProjectId value);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getProjectName <em>Project Name</em>}' attribute.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Project Name</em>' attribute.
* @see #getProjectName()
* @generated
*/
void setProjectName(String value);
/**
* Sets a new OrgUnitProperty for the current user.
*
* @param property
* the new property
* @generated NOT
*/
void setProperty(OrgUnitProperty property);
/**
* Sets the value of the '{@link org.eclipse.emf.emfstore.client.model.ProjectSpace#getUsersession <em>Usersession</em>}' reference.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @param value the new value of the '<em>Usersession</em>' reference.
* @see #getUsersession()
* @generated
*/
void setUsersession(Usersession value);
/**
* Shares this project space.
*
* @throws EmfStoreException
* if an error occurs during the sharing of the project
*/
public void shareProject() throws EmfStoreException;
/**
* Shares this project space.
*
* @param session
* the {@link Usersession} that should be used for sharing the project
* @param monitor
* an instance of an {@link IProgressMonitor}
*
* @throws EmfStoreException
* if an error occurs during the sharing of the project
*/
public void shareProject(Usersession session, IProgressMonitor monitor) throws EmfStoreException;
/**
* Transmit the OrgUnitproperties to the server.
*
* @generated NOT
*/
void transmitProperties();
/**
* Undo the last operation of the projectSpace.
*
* @generated NOT
*/
void undoLastOperation();
/**
* <!-- begin-user-doc --> Update the project to the head version.
*
* @return the new base version
* @throws EmfStoreException
* if update fails <!-- end-user-doc -->
* @model
* @generated NOT
*/
PrimaryVersionSpec update() throws EmfStoreException;
/**
* <!-- begin-user-doc --> Update the project to the given version.
*
* @param version
* the version to update to
* @return the new base version
* @throws EmfStoreException
* if update fails <!-- end-user-doc -->
* @model
* @generated NOT
*/
PrimaryVersionSpec update(VersionSpec version) throws EmfStoreException;
/**
* Update the workspace to the given revision.
*
* @param version
* the {@link VersionSpec} to update to
* @param callback
* the {@link UpdateCallback} that will be called when the update has been performed
* @param progress an {@link IProgressMonitor} instance
* @see UpdateCallback#updateCompleted(ProjectSpace, PrimaryVersionSpec, PrimaryVersionSpec)
* @generated NOT
*/
PrimaryVersionSpec update(VersionSpec version, UpdateCallback callback, IProgressMonitor progress)
throws EmfStoreException;
} // ProjectContainer