/*
* 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.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.ecore.EObject;
import org.teiid.core.designer.ModelerCoreException;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.core.util.ModelResourceContainerFactory;
import org.teiid.designer.metamodels.transformation.FragmentMappingRoot;
import org.teiid.designer.metamodels.transformation.SqlTransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.TransformationContainer;
import org.teiid.designer.metamodels.transformation.TransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.TreeMappingRoot;
/**
* ModelDiagramsImpl
*
* @since 8.0
*/
public class ModelTransformationsImpl extends NonOpenableModelWorkspaceItemImpl implements ModelTransformations {
private static final String CREATE_TRANSFORMATION_ERROR = "ModelTransformationsImpl.createTransformationMessage"; //$NON-NLS-1$
protected static final String DEFAULT_NAME = ModelerCore.Util.getString("ModelTransformationsImpl.defaultName"); //$NON-NLS-1$
/**
* Constructor needed for test cases.
*/
ModelTransformationsImpl() {
super(TRANSFORMATIONS, null, DEFAULT_NAME);
}
/**
* Construct an instance of ModelProjectImpl.
*
* @since 4.0
*/
public ModelTransformationsImpl( final ModelWorkspaceItem parent ) {
super(TRANSFORMATIONS, parent, DEFAULT_NAME);
}
public ModelResource getModelResource() {
return (ModelResource)this.getParent();
}
/**
* @see org.teiid.designer.core.workspace.ModelWorkspaceItem#getResource()
*/
@Override
public IResource getResource() {
return this.getModelResource().getResource();
}
/**
* @see org.teiid.designer.core.workspace.ModelWorkspaceItem#getUnderlyingResource()
*/
@Override
public IResource getUnderlyingResource() {
return getResource();
}
/**
* @see org.teiid.designer.core.workspace.ModelWorkspaceItem#getPath()
*/
@Override
public IPath getPath() {
return this.getModelResource().getPath();
}
/**
* @see org.teiid.designer.core.workspace.ModelWorkspaceItem#hasChildren()
*/
@Override
public boolean hasChildren() {
return false;
}
protected ModelBufferImpl getModelBuffer() throws ModelWorkspaceException {
final ModelResourceImpl modelResourceImpl = (ModelResourceImpl)this.getModelResource();
return (ModelBufferImpl)modelResourceImpl.getBuffer(); // loads if req'd
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#getDiagrams(org.eclipse.emf.ecore.EObject)
*/
@Override
public List getTransformations( final EObject target ) throws ModelWorkspaceException {
return getModelBuffer().getModelContents().getTransformations(target);
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#getDiagrams(org.eclipse.emf.ecore.EObject)
*/
@Override
public List getTransformations() throws ModelWorkspaceException {
return getModelBuffer().getModelContents().getTransformations();
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#createNewDiagram(org.eclipse.emf.ecore.EObject, boolean)
*/
@Override
public SqlTransformationMappingRoot createNewSqlTransformation( final EObject target ) throws ModelWorkspaceException {
return ModelResourceContainerFactory.createNewSqlTransformationMappingRoot(target, getModelResource().getEmfResource());
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#createNewDiagram(org.eclipse.emf.ecore.EObject, boolean)
*/
@Override
public FragmentMappingRoot createNewFragmentMapping( final EObject target ) throws ModelWorkspaceException {
return ModelResourceContainerFactory.createNewFragmentMappingRoot(target, getModelResource().getEmfResource());
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#createNewDiagram(org.eclipse.emf.ecore.EObject, boolean)
*/
@Override
public TreeMappingRoot createNewTreeMapping( final EObject target ) throws ModelWorkspaceException {
return ModelResourceContainerFactory.createNewTreeMappingRoot(target, getModelResource().getEmfResource());
}
/**
* @see org.teiid.designer.core.workspace.ModelResource#createNewDiagram(org.eclipse.emf.ecore.EObject, boolean)
*/
@Override
public TransformationMappingRoot addNewTransformation( final EObject target,
final TransformationMappingRoot newMappingRoot )
throws ModelWorkspaceException {
TransformationContainer tc = ModelResourceContainerFactory.getTransformationContainer(getModelResource().getEmfResource(),
true);
newMappingRoot.setTarget(target);
// Now that we have the root, have to add the value correctly
try {
ModelerCore.getModelEditor().addValue(tc, newMappingRoot, tc.getTransformationMappings());
} catch (ModelerCoreException err) {
ModelerCore.Util.log(IStatus.ERROR, err, ModelerCore.Util.getString(CREATE_TRANSFORMATION_ERROR, target));
}
return newMappingRoot;
}
/**
* @see org.teiid.designer.core.workspace.ModelDiagrams#delete(org.teiid.designer.metamodels.diagram.Diagram)
*/
@Override
public boolean delete( final TransformationMappingRoot transformation ) {
return ModelResourceContainerFactory.deleteTransformation(transformation);
}
/**
* @see org.teiid.designer.core.workspace.ModelWorkspaceItem#getOpenable()
*/
@Override
public Openable getOpenable() {
return getOpenableParent();
}
}