Class ECPProjectManagerImpl
- java.lang.Object
-
- org.eclipse.net4j.util.event.Notifier
-
- org.eclipse.net4j.util.lifecycle.Lifecycle
-
- org.eclipse.emf.ecp.internal.core.util.Registry<ELEMENT,OBSERVER>
-
- org.eclipse.emf.ecp.internal.core.util.ElementRegistry<ELEMENT,OBSERVER>
-
- org.eclipse.emf.ecp.internal.core.util.PropertiesStore<InternalProject,ECPObserver>
-
- org.eclipse.emf.ecp.internal.core.ECPProjectManagerImpl
-
- All Implemented Interfaces:
ECPProjectManager
,ECPObserver
,ECPRepositoriesChangedObserver
,ECPDisposable.DisposeListener
,org.eclipse.net4j.util.event.INotifier
,org.eclipse.net4j.util.event.INotifier.INotifier2
,org.eclipse.net4j.util.lifecycle.IDeactivateable
,org.eclipse.net4j.util.lifecycle.ILifecycle
,org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation
public final class ECPProjectManagerImpl extends PropertiesStore<InternalProject,ECPObserver> implements ECPProjectManager, ECPRepositoriesChangedObserver
This class manages the availableECPProjects
.- Author:
- Eike Stepper, Eugen Neufeld
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.emf.ecp.internal.core.util.PropertiesStore
PropertiesStore.StorableElement
-
-
Constructor Summary
Constructors Constructor Description ECPProjectManagerImpl()
Should not be called directly, use service instead.ECPProjectManagerImpl(java.lang.String sessionId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
changeProject(ECPProject project, boolean opened, boolean store)
This is called by projects to notify observers if a project gets openes or closed.ECPProject
createProject(ECPProject project, java.lang.String name)
Method to construct a new Project based on an existing project as template.ECPProject
createProject(ECPProvider provider, java.lang.String name)
Method to construct an offline Project, this method callsECPProjectManager.createProject(ECPProvider, String, ECPProperties)
with empty properties.ECPProject
createProject(ECPProvider provider, java.lang.String name, ECPProperties properties)
Method to construct an offline Project and notify listeners about this add.ECPProject
createProject(ECPRepository repository, java.lang.String name, ECPProperties properties)
Method to construct an shared Project, e.g.protected void
doActivate()
protected void
doDeactivate()
protected void
elementsChanged(java.util.Collection<InternalProject> oldElements, java.util.Collection<InternalProject> newElements)
InternalProject
getProject(java.lang.Object adaptable)
Retrieves the project the adaptable belongs to if possible.InternalProject
getProject(java.lang.String name)
Searches for a project based on the providedString
.java.util.Collection<ECPProject>
getProjects()
Returns all known projects.protected boolean
isRemoveDisposedElements()
protected InternalProject
loadElement(java.io.ObjectInput in)
Loads an element.void
notifyObjectsChanged(ECPProject project, java.util.Collection<java.lang.Object> objects, boolean structural)
This is called by projects to notify observers about object changes.protected void
notifyObservers(java.util.Collection<InternalProject> oldElements, java.util.Collection<InternalProject> newElements)
Notifies observers that the elements in the registry have changed.void
repositoriesChanged(java.util.Collection<ECPRepository> oldRepositories, java.util.Collection<ECPRepository> newRepositories)
This is called to indicate, that repositories changed.void
setECPObserverBus(ECPObserverBus ecpObserverBus)
Bindes the ECPObserverBus.-
Methods inherited from class org.eclipse.emf.ecp.internal.core.util.PropertiesStore
getFile, getFolder, isLoadableElement, load, setFolder, storeElement
-
Methods inherited from class org.eclipse.emf.ecp.internal.core.util.ElementRegistry
addResolveListener, descriptorChanged, getElementName, removeResolveListener
-
Methods inherited from class org.eclipse.emf.ecp.internal.core.util.Registry
addObserver, changeElements, disposed, doChangeElements, getElement, getElementCount, getElementNames, getElements, hasElement, hasElements, isDisposingElement, removeObserver
-
Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle
activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString
-
Methods inherited from class org.eclipse.net4j.util.event.Notifier
addListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener
-
-
-
-
Constructor Detail
-
ECPProjectManagerImpl
public ECPProjectManagerImpl()
Should not be called directly, use service instead.
-
ECPProjectManagerImpl
public ECPProjectManagerImpl(java.lang.String sessionId)
- Parameters:
sessionId
- Will be appended to the folder name so that there are different folders for each session
-
-
Method Detail
-
setECPObserverBus
public void setECPObserverBus(ECPObserverBus ecpObserverBus)
Bindes the ECPObserverBus.- Parameters:
ecpObserverBus
- the bus
-
createProject
public ECPProject createProject(ECPProvider provider, java.lang.String name) throws ECPProjectWithNameExistsException
Method to construct an offline Project, this method callsECPProjectManager.createProject(ECPProvider, String, ECPProperties)
with empty properties. IfECPProvider.hasCreateProjectWithoutRepositorySupport()
returns false an UnsupportedOperationException is thrown.- Specified by:
createProject
in interfaceECPProjectManager
- Parameters:
provider
- theECPProvider
of this projectname
- the name of the project- Returns:
- created
ECPProject
- Throws:
ECPProjectWithNameExistsException
- when a project with the same name already exists
-
createProject
public ECPProject createProject(ECPProvider provider, java.lang.String name, ECPProperties properties) throws ECPProjectWithNameExistsException
Method to construct an offline Project and notify listeners about this add. IfECPProvider.hasCreateProjectWithoutRepositorySupport()
returns false an UnsupportedOperationException is thrown.- Specified by:
createProject
in interfaceECPProjectManager
- Parameters:
provider
- theECPProvider
of this projectname
- the name of the projectproperties
- the project properties- Returns:
- created
ECPProject
- Throws:
ECPProjectWithNameExistsException
- when a project with the same name already exists
-
createProject
public ECPProject createProject(ECPRepository repository, java.lang.String name, ECPProperties properties) throws ECPProjectWithNameExistsException
Method to construct an shared Project, e.g. during a checkout, and notify listeners about this add.- Specified by:
createProject
in interfaceECPProjectManager
- Parameters:
repository
- theECPRepository
of this projectname
- the name of the projectproperties
- the project properties- Returns:
- created
ECPProject
- Throws:
ECPProjectWithNameExistsException
- when a project with the same name already exists
-
createProject
public ECPProject createProject(ECPProject project, java.lang.String name)
Method to construct a new Project based on an existing project as template. If the template project is shared, so is the created project.- Specified by:
createProject
in interfaceECPProjectManager
- Parameters:
project
- the templateECPProject
name
- the name of the created project- Returns:
- the clone of the
ECPProject
-
getProject
public InternalProject getProject(java.lang.Object adaptable)
Retrieves the project the adaptable belongs to if possible. This method checks whether the adaptable isECPProjectAware
and else uses the AdapterUtil to adapt to a project.- Specified by:
getProject
in interfaceECPProjectManager
- Parameters:
adaptable
- the Object to adapt- Returns:
- the adapted
ECPProject
-
getProject
public InternalProject getProject(java.lang.String name)
Searches for a project based on the providedString
.- Specified by:
getProject
in interfaceECPProjectManager
- Parameters:
name
- of the project to search for- Returns:
- the
ECPProject
-
getProjects
public java.util.Collection<ECPProject> getProjects()
Returns all known projects.- Specified by:
getProjects
in interfaceECPProjectManager
- Returns:
- an array of all known projects
-
changeProject
public void changeProject(ECPProject project, boolean opened, boolean store)
This is called by projects to notify observers if a project gets openes or closed.- Parameters:
project
- the project that called this methodopened
- whether the project is openstore
- whether to store the change
-
notifyObjectsChanged
public void notifyObjectsChanged(ECPProject project, java.util.Collection<java.lang.Object> objects, boolean structural)
This is called by projects to notify observers about object changes. First theIECPProjectObjectsChangedObservers
are notified then theIECPProjectsChangedUIObservers
.- Parameters:
project
- the project that called this methodobjects
- the objects that changedstructural
- whether the changes where structural
-
repositoriesChanged
public void repositoriesChanged(java.util.Collection<ECPRepository> oldRepositories, java.util.Collection<ECPRepository> newRepositories)
This is called to indicate, that repositories changed.- Specified by:
repositoriesChanged
in interfaceECPRepositoriesChangedObserver
- Parameters:
oldRepositories
- repositories before changenewRepositories
- repositories after change
-
elementsChanged
protected void elementsChanged(java.util.Collection<InternalProject> oldElements, java.util.Collection<InternalProject> newElements)
- Overrides:
elementsChanged
in classPropertiesStore<InternalProject,ECPObserver>
-
doActivate
protected void doActivate() throws java.lang.Exception
- Overrides:
doActivate
in classPropertiesStore<InternalProject,ECPObserver>
- Throws:
java.lang.Exception
-
doDeactivate
protected void doDeactivate() throws java.lang.Exception
- Overrides:
doDeactivate
in classorg.eclipse.net4j.util.lifecycle.Lifecycle
- Throws:
java.lang.Exception
-
loadElement
protected InternalProject loadElement(java.io.ObjectInput in) throws java.io.IOException
Description copied from class:PropertiesStore
Loads an element.- Specified by:
loadElement
in classPropertiesStore<InternalProject,ECPObserver>
- Parameters:
in
- anObjectInput
to load the element from- Returns:
- the element
- Throws:
java.io.IOException
- if the element cannot be loaded correctly
-
notifyObservers
protected void notifyObservers(java.util.Collection<InternalProject> oldElements, java.util.Collection<InternalProject> newElements) throws java.lang.Exception
Description copied from class:Registry
Notifies observers that the elements in the registry have changed.- Specified by:
notifyObservers
in classRegistry<InternalProject,ECPObserver>
- Parameters:
oldElements
- The old collection of elementsnewElements
- The new collection of elements- Throws:
java.lang.Exception
-
isRemoveDisposedElements
protected boolean isRemoveDisposedElements()
- Overrides:
isRemoveDisposedElements
in classRegistry<InternalProject,ECPObserver>
- Returns:
- Whether elements should be removed from the registry if they are disposed.
-
-