//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation 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: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.library; import java.util.Collection; import java.util.List; import java.util.Map; import org.eclipse.emf.common.command.CommandStack; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.epf.library.events.ILibraryChangeListener; import org.eclipse.epf.uma.MethodElement; import org.eclipse.epf.uma.MethodLibrary; import org.eclipse.epf.uma.MethodPlugin; import org.eclipse.epf.uma.util.ExtendedOpposite; import org.eclipse.epf.uma.util.ModifiedTypeMeta; import org.eclipse.epf.uma.util.UserDefinedTypeMeta; import org.eclipse.ui.IPropertyListener; /** * The interface for a Library Manager. * * @author Kelvin Low * @since 1.0 */ public interface ILibraryManager { /** * Creates a new method library. * * @param name * a name for the new method library * @param args * method library specific arguments * @return a method library * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public MethodLibrary createMethodLibrary(String name, Map<String, Object> args) throws LibraryServiceException; /** * Opens a method library. * * @param uri * a method library URI * @return a method library * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public MethodLibrary openMethodLibrary(java.net.URI uri) throws LibraryServiceException; /** * Opens a method library. * * @param args * method library specific arguments * @return a method library * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public MethodLibrary openMethodLibrary(Map<String, Object> args) throws LibraryServiceException; /** * Reopens the managed method library. * * @return a method library * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public MethodLibrary reopenMethodLibrary() throws LibraryServiceException; /** * Saves the managed method library. * * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public void saveMethodLibrary() throws LibraryServiceException; /** * Discards all changes made to the managed method library. */ public void discardMethodLibraryChanges(); /** * Closes the managed method library. * * @return a method library * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public void closeMethodLibrary() throws LibraryServiceException; /** * Gets the managed method library. * * @return a method library */ public MethodLibrary getMethodLibrary(); /** * Sets the managed method library. * * @param library * a method library */ public void setMethodLibrary(MethodLibrary library); /** * Gets the URI of the managed method library. * * @return a <code>org.eclipse.emf.common.util.URI</code> */ public java.net.URI getMethodLibraryURI(); /** * Gets the absolute path to the managed method library. For distributed * library, this is the library's workspace path. * * @return an absolute path to the method library */ public String getMethodLibraryLocation(); /** * Gets the adapter factory for the managed method library. * * @return an adapter factory */ public ComposedAdapterFactory getAdapterFactory(); /** * Gets the editing domain for the managed method library. * * @return an editing domain */ public AdapterFactoryEditingDomain getEditingDomain(); /** * Registers an editing domain with the managed method library. * * @param domain * an editing domain */ public void registerEditingDomain(AdapterFactoryEditingDomain domain); public void unregisterEditingDomain(AdapterFactoryEditingDomain domain); /** * Adds a listener to monitor changes to the managed method library. * * @param listener * a library change listener */ public void addListener(ILibraryChangeListener listener); /** * Removes a listener that was added to monitor changes to the managed * method library. * * @param listener * a library change listener */ public void removeListener(ILibraryChangeListener listener); /** * Adds a listener to monitor resource changes in the managed method * library. * * @param listener * a property change listener */ public void addPropertyListener(IPropertyListener listener); /** * Adds a listener to monitor resource changes in the managed method * library. * * @param listener * a property change listener. */ public void removePropertyListener(IPropertyListener listener); /** * Starts listening to command processing on a command stack. * * @param commandStack * a command stack */ public void startListeningTo(CommandStack commandStack); /** * Stops listening to command processing on a command stack. * * @param commandStack * a command stack */ public void stopListeningTo(CommandStack commandStack); /** * Starts listening to change notifications sent from an adapter factory. * * @param adapterFactory * an adapter factory */ public void startListeningTo(ComposedAdapterFactory adapterFactory); /** * Stops listening to change notifications sent from an adapter factory. * * @param adapterFactory * an adapter factory */ public void stopListeningTo(ComposedAdapterFactory adapterFactory); /** * Gets a method element from the managed method library. * * @param guid * the method element's GUID. * * @return a method element of <code>null</code> */ public MethodElement getMethodElement(String guid); /** * Checks whether the managed method library is read only. * * @return <code>true</code> if the method library is read only */ public boolean isMethodLibraryReadOnly(); /** * Checks whether the managed method library content has been modified. * * @return <code>true</code> if the managed method library content has * been modified */ public boolean isMethodLibraryModified(); /** * Checks whether the managed method library has any unresolved proxy. * * @return <code>true</code> if the managed method library has an * unresolved proxy. */ public boolean hasUnresolvedProxy(); /** * Reloads the given resources. * * @param resources * a collection of resources * @return a collection of resources that have reloaded */ public Collection<Resource> reloadResources(Collection<Resource> resources); /** * Gets the options used for saving the managed method library. * * @return a map of method library specific save options */ public Map<String, Object> getSaveOptions(); /** * Adds a new method plug-in to the managed method library. * * @param plugin * a method plug-in * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public void addMethodPlugin(MethodPlugin plugin) throws LibraryServiceException; /** * Disposes all resources allocated by this library manager. */ public void dispose(); /** * Gets the resource manager for the method library. * * @return the resource manager for the method library */ public ILibraryResourceManager getResourceManager(); /** * Backup method library * * @param path * backup foler file path */ public void backupMethodLibrary(String path); /** * Register a loaded method library. * * @param type * the given loaded method library * @param params * method library specific arguments * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public void registerMethodLibrary(MethodLibrary lib, Map<String, Object> params) throws LibraryServiceException; /** * Unregister a registered method library. * * @throw <code>LibraryServiceException</code> if an error occurs while * performing the operation */ public void unRegisterMethodLibrary() throws LibraryServiceException; public Collection<UserDefinedTypeMeta> getUserDefinedTypes(); public void addUserDefineType(UserDefinedTypeMeta meta); public UserDefinedTypeMeta getUserDefineType(String id); public boolean isUserDefinedTypeLoaded(); public void setUserDefinedTypeLoaded(boolean b); public void prepareToLoadUserDefinedTypes(); public Collection<ModifiedTypeMeta> getModifiedTypes(); public void addModifiedType(ModifiedTypeMeta meta); public ModifiedTypeMeta getModifiedType(String id); public List<ExtendedOpposite> getLoadedOpposites(); }