/*
* 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.workspace;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.teiid.designer.metamodels.transformation.FragmentMappingRoot;
import org.teiid.designer.metamodels.transformation.SqlTransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.TransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.TreeMappingRoot;
/**
* A ModelTransformations represents the set of transformations available in the model.
* One {@link ModelResource} has a single ModelTransformations object.
*
* @since 8.0
*/
public interface ModelTransformations extends ModelWorkspaceItem {
/**
* Create a new SQL transformation and add it to this resource.
* @param target the "target" for the transformation; may not be null
* @return the new SqlTransformationMappingRoot object
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
SqlTransformationMappingRoot createNewSqlTransformation( EObject target ) throws ModelWorkspaceException;
/**
* Create a new fragment transformation and add it to this resource.
* @param target the "target" for the transformation; may not be null
* @return the new FragmentMappingRoot object
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
FragmentMappingRoot createNewFragmentMapping( EObject target ) throws ModelWorkspaceException;
/**
* Create a new tree mapping transformation and add it to this resource.
* @param target the "target" for the transformation; may not be null
* @return the new TreeMappingRoot object
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
TreeMappingRoot createNewTreeMapping( EObject target ) throws ModelWorkspaceException;
/**
* Create a new transformation and add it to this resource.
* @param target the "target" for the transformation; may not be null
* @return the new TransformationMappingRoot object
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
TransformationMappingRoot addNewTransformation( EObject target, TransformationMappingRoot newMapping) throws ModelWorkspaceException;
/**
* Get the transformation objects associated with the supplied target model object.
* TransformationMappingRoots are created using the {@link #createNewTransformation(EObject)} method.
* @param target the target object; may be null, meaning find all transformations that have no target
* @return the {@link TransformationMappingRoot} instances that are associated with the target object;
* never null, but possibly empty
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
List getTransformations( EObject target ) throws ModelWorkspaceException;
/**
* Get all the transformation objects known by this resource.
* TransformationMappingRoots are created using the {@link #createNewTransformation(EObject)} method.
* @return the {@link TransformationMappingRoot} instances for this resource; never null, but possibly empty
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
List getTransformations() throws ModelWorkspaceException;
/**
* Remove the specified transformation from this resource. This method works for persistent or transient
* transformations; persistent transformations can always just be removed from the
* @param transformation the transformation; may not be null
* @return true if the transformation was deleted from this resource, or false if it was not
* @throws ModelWorkspaceException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
boolean delete( TransformationMappingRoot transformation ) throws ModelWorkspaceException;
}