blob: d99db5cda509c92dcb1771a94c7f2e5ad43380e0 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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.persistence;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.epf.persistence.refresh.IRefreshListener;
import org.eclipse.epf.services.ILibraryPersister;
import org.eclipse.epf.services.Services;
import org.eclipse.epf.uma.MethodLibrary;
import org.eclipse.epf.uma.ecore.IUmaResourceSet;
import org.eclipse.epf.uma.ecore.util.OppositeFeature;
/**
* A resource set that manages a collection of {@link Resource}
*
* @author Phong Nguyen Le
* @since 1.1
*/
public interface ILibraryResourceSet extends IUmaResourceSet {
/**
* Gets the persistence type this resource set supports
*
* @return the persistence type
* @see Services#getDefaultLibraryPersistenceType()
* @see Services#XMI_PERSISTENCE_TYPE
*/
String getPersistenceType();
/**
* Loads method libraries into this resource set from the given URI.
*
* @param parameters
* @return
*/
void loadMethodLibraries(URI uri, Map<?, ?> parameters)
throws LibraryResourceException;
/**
* Gets the list of method libraries that have been loaded into this
* resource set.
*
* @return
*/
List<MethodLibrary> getMethodLibraries();
/**
* Gets the first loaded method library of this resource set.
*
* @return the method library or <code>null</code> if it is not loaded
* yet.
* @see #loadLibrary(URI, Map)
*/
MethodLibrary getFirstMethodLibrary();
/**
* Gets the object with the specified GUID (Globally Unique Identifier)
*
* @param guid
* @return
*/
EObject getEObject(String guid);
Map<?, ?> getDefaultSaveOptions();
/**
* Loads the given opposite features of all loaded objects in this resource
* set.
*
* @param oppositeFeatures
*/
void loadOppositeFeatures(List<OppositeFeature> oppositeFeatures);
/**
* Loads the given opposite features of those objects in this resource set
* whose GUIDs are specified in <code>GUIDs</code> set.
*
* @param oppositeFeatures
* @param GUIDs
*/
void loadOppositeFeatures(List<OppositeFeature> oppositeFeatures, Set<String> GUIDs);
/**
* Saves this resource set with the given save options.
*
* @param options
* save options
* @throws LibraryResourceException
*/
void save(Map<?, ?> options) throws LibraryResourceException;
/**
* Unloads the given object in this resource set
*
* @param object
* @return boolean <code>true</code> if the given object was unloaded
* successfully
*/
boolean unload(EObject object);
/**
* Unloads the specified resource of this resource set.
*
* @param resource
* @param options
* @return TODO
*/
boolean unload(Resource resource, Map<?, ?> options);
/**
* Reloads the given resources
*
* @param resources
* @return resources that had been reloaded
*/
Collection<Resource> reloadResources(Collection<Resource> resources);
/**
* Reloads the given persisted objects.
*
* @param objects
* @return objects that have been reloaded
*/
Collection<EObject> reloadObjects(Collection<EObject> objects);
/**
* Unloads this resource set. This will unload every resource in this
* resource set and reset the resource set to the state before loading the
* library.
*
*/
void unload();
/**
* Checks if there is any unresolved proxy detected in the library
*
* @return
*/
boolean hasUnresolvedProxy();
/**
* Subscribes the specified listener to listen to refresh events broadcasted
* whenever resources or objects of this resource set is refreshed/reloaded.
*
* @param listener
* @see #reloadResources(Collection)
*/
void addRefreshListener(IRefreshListener listener);
/**
* Unsubscribes the specified listener from listening to refresh events.
*
* @param listener
*/
void removeRefreshListenter(IRefreshListener listener);
ILibraryPersister getPersister();
void checkModify(Resource[] resources, Object context)
throws LibraryResourceException;
IStatus checkModify(Collection<EObject> eObjects, Object context);
Collection<Resource> loadNewResources();
}