/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.core.container; import java.util.Map; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.edit.provider.ChangeNotifier; import org.teiid.core.designer.ModelerCoreException; import org.teiid.designer.core.PropertyChangePublisher; import org.teiid.designer.core.metamodel.MetamodelRegistry; import org.teiid.designer.core.transaction.UndoableListener; import org.teiid.designer.core.transaction.UnitOfWorkProvider; import org.teiid.designer.core.types.DatatypeManager; /** * @since 8.0 */ public interface Container extends ResourceSet, PropertyChangePublisher { /** * Property fired to property change listeners when the name of the container is changed */ public static final String CONTAINER_NAME_PROPERTY = "container name property"; //$NON-NLS-1$ /** * The identifiers for all extensions referenced within ModelerCore */ public static class OPTIONS { // Set whether all model changes will be processed through transactions (value type is java.lang.Boolean) public static final String ENABLE_TRANSACTIONS = "org.teiid.designer.core.container.enableTxns"; //$NON-NLS-1$ } //############################################################################################################################ //# Methods # //############################################################################################################################ /** * Obtain the component from which Notifications are fired and which manages * the listeners on the container and the objects managed by the container. * @return the Notification source for this container; never null * @since 3.1 */ ChangeNotifier getChangeNotifier(); /** * Obtain the component that can find objects by primary key. * @return the finder for this container; never null * @since 3.1 */ EObjectFinder getEObjectFinder(); /** * Obtain the component that can find {@link org.eclipse.emf.ecore.resource.Resource} objects in the Container. * @return the resource finder for this container; never null * @since 4.3 */ ResourceFinder getResourceFinder(); /** * Set the component used to find objects by primary key. * @param the finder to use for this container; may not be null * @since 4.3 */ void setEObjectFinder(EObjectFinder finder); /** * Set the component used to find {@link org.eclipse.emf.ecore.resource.Resource} objects in the Container. * @param the resource finder to use for this container; may not be null * @since 4.3 */ void setResourceFinder(ResourceFinder finder); /** * Obtain the name of this container * @since 3.1 */ String getName(); /** * @return object manager */ ObjectManager getObjectManager(); /** * Returns a resource for the URI that either already exists, is new but represents an existing file, * or is new and represents a brand-new file. * @param uri the URI for the resource; may not be null * @return the Resource for the URI; never null, since a Resource (and maybe the underlying file) * is created if one does not exist. * @throws ModelerCoreException if the resource cannot be loaded or created */ Resource getOrCreateResource( final URI uri ) throws ModelerCoreException; /** * Sets the name of the container. This method should generally not be called by clients. * @param name The name for the container * @throws IllegalArgumentException if the name is not valid * @throws IllegalStateException if the container has been started. * @since 3.1 */ void setName(String newName); /** * Shutdown this container, which will no longer be usable once this method is called. * @since 3.1 */ void shutdown() throws ModelerCoreException; /** * Start this container. * @since 3.1 */ void start() throws ModelerCoreException; /** * Returns the EmfTransactionProvider. * @return UnitOfWorkProvider * @since 3.1 */ UnitOfWorkProvider getEmfTransactionProvider(); /** * Returns the MetamodelRegistry. * @return MetamodelRegistry * @since 3.1 */ MetamodelRegistry getMetamodelRegistry(); /** * Returns the resourceSet. * * @return ResourceSet */ ResourceSet getResourceSet(); /** * Sets the MetamodelRegistry. * @param registry The MetamodelRegistry to set * @since 3.1 */ void setMetamodelRegistry(MetamodelRegistry registry); /** * Makes this container aware of the resource descriptor. * @param resourceDescriptor the ResourceDescriptor */ void addResourceDescriptor(ResourceDescriptor resourceDescriptor) throws ModelerCoreException; /** * Add the given listener to the emfTransactionProvider's UndoableListener list * @param listener */ void addUndoableEditListener(UndoableListener listener); /** * Remove the given listener from the emfTransactionProvider's UndoableListener list * @param listener */ void removeUndoableEditListener(UndoableListener listener); /** * Add a ResourceSet to be used for resolution of a resource URI. The * specified ResourceSet will be treated as read-only and will never be * used to load a resource for the URI being checked. * @param resourceSet */ void addExternalResourceSet(ResourceSet resourceSet); /** * Return the array of external {@link org.eclipse.emf.ecore.resource.ResourceSet} * instances registered with this container. */ ResourceSet[] getExternalResourceSets(); /** * Return this container's datatype manager. * @return the datatype manager; never null * @since 4.2 */ DatatypeManager getDatatypeManager(); /** * Return the configuration options associated with this container * @param options * @since 4.3 */ Map getOptions(); /** * Set the configuration options for this container * @param options * @since 4.3 */ void setOptions(Map options); }