/*
* 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.metamodels.transformation.impl;
import java.util.List;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.command.CommandStack;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.impl.EFactoryImpl;
import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
import org.eclipse.emf.mapping.domain.AdapterFactoryMappingDomain;
import org.eclipse.emf.mapping.domain.MappingDomain;
import org.eclipse.emf.mapping.domain.PluginAdapterFactoryMappingDomain;
import org.eclipse.emf.mapping.provider.MappingItemProviderAdapterFactory;
import org.teiid.designer.metamodels.transformation.DataFlowLink;
import org.teiid.designer.metamodels.transformation.DataFlowMappingRoot;
import org.teiid.designer.metamodels.transformation.DataFlowNode;
import org.teiid.designer.metamodels.transformation.DupRemovalNode;
import org.teiid.designer.metamodels.transformation.Expression;
import org.teiid.designer.metamodels.transformation.FilterNode;
import org.teiid.designer.metamodels.transformation.FragmentMappingRoot;
import org.teiid.designer.metamodels.transformation.GroupingNode;
import org.teiid.designer.metamodels.transformation.InputBinding;
import org.teiid.designer.metamodels.transformation.InputParameter;
import org.teiid.designer.metamodels.transformation.InputSet;
import org.teiid.designer.metamodels.transformation.JoinNode;
import org.teiid.designer.metamodels.transformation.JoinType;
import org.teiid.designer.metamodels.transformation.MappingClass;
import org.teiid.designer.metamodels.transformation.MappingClassColumn;
import org.teiid.designer.metamodels.transformation.MappingClassSet;
import org.teiid.designer.metamodels.transformation.MappingClassSetContainer;
import org.teiid.designer.metamodels.transformation.OperationNode;
import org.teiid.designer.metamodels.transformation.OperationNodeGroup;
import org.teiid.designer.metamodels.transformation.ProjectionNode;
import org.teiid.designer.metamodels.transformation.RecursionErrorMode;
import org.teiid.designer.metamodels.transformation.SortDirection;
import org.teiid.designer.metamodels.transformation.SortNode;
import org.teiid.designer.metamodels.transformation.SourceNode;
import org.teiid.designer.metamodels.transformation.SqlAlias;
import org.teiid.designer.metamodels.transformation.SqlNode;
import org.teiid.designer.metamodels.transformation.SqlTransformation;
import org.teiid.designer.metamodels.transformation.SqlTransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.StagingTable;
import org.teiid.designer.metamodels.transformation.TargetNode;
import org.teiid.designer.metamodels.transformation.TransformationContainer;
import org.teiid.designer.metamodels.transformation.TransformationFactory;
import org.teiid.designer.metamodels.transformation.TransformationMapping;
import org.teiid.designer.metamodels.transformation.TransformationPackage;
import org.teiid.designer.metamodels.transformation.TreeMappingRoot;
import org.teiid.designer.metamodels.transformation.UnionNode;
import org.teiid.designer.metamodels.transformation.XQueryTransformation;
import org.teiid.designer.metamodels.transformation.XQueryTransformationMappingRoot;
import org.teiid.designer.metamodels.transformation.provider.TransformationItemProviderAdapterFactory;
/**
* <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
*
* @generated
*
* @since 8.0
*/
public class TransformationFactoryImpl extends EFactoryImpl implements TransformationFactory {
/**
* Creates an instance of the factory. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public TransformationFactoryImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public EObject create( EClass eClass ) {
switch (eClass.getClassifierID()) {
case TransformationPackage.TRANSFORMATION_CONTAINER:
return createTransformationContainer();
case TransformationPackage.SQL_TRANSFORMATION:
return createSqlTransformation();
case TransformationPackage.TRANSFORMATION_MAPPING:
return createTransformationMapping();
case TransformationPackage.SQL_ALIAS:
return createSqlAlias();
case TransformationPackage.SQL_TRANSFORMATION_MAPPING_ROOT:
return createSqlTransformationMappingRoot();
case TransformationPackage.FRAGMENT_MAPPING_ROOT:
return createFragmentMappingRoot();
case TransformationPackage.TREE_MAPPING_ROOT:
return createTreeMappingRoot();
case TransformationPackage.MAPPING_CLASS:
return createMappingClass();
case TransformationPackage.MAPPING_CLASS_COLUMN:
return createMappingClassColumn();
case TransformationPackage.STAGING_TABLE:
return createStagingTable();
case TransformationPackage.MAPPING_CLASS_SET:
return createMappingClassSet();
case TransformationPackage.MAPPING_CLASS_SET_CONTAINER:
return createMappingClassSetContainer();
case TransformationPackage.INPUT_PARAMETER:
return createInputParameter();
case TransformationPackage.INPUT_SET:
return createInputSet();
case TransformationPackage.INPUT_BINDING:
return createInputBinding();
case TransformationPackage.DATA_FLOW_MAPPING_ROOT:
return createDataFlowMappingRoot();
case TransformationPackage.DATA_FLOW_NODE:
return createDataFlowNode();
case TransformationPackage.DATA_FLOW_LINK:
return createDataFlowLink();
case TransformationPackage.EXPRESSION:
return createExpression();
case TransformationPackage.TARGET_NODE:
return createTargetNode();
case TransformationPackage.SOURCE_NODE:
return createSourceNode();
case TransformationPackage.OPERATION_NODE_GROUP:
return createOperationNodeGroup();
case TransformationPackage.OPERATION_NODE:
return createOperationNode();
case TransformationPackage.JOIN_NODE:
return createJoinNode();
case TransformationPackage.UNION_NODE:
return createUnionNode();
case TransformationPackage.PROJECTION_NODE:
return createProjectionNode();
case TransformationPackage.FILTER_NODE:
return createFilterNode();
case TransformationPackage.GROUPING_NODE:
return createGroupingNode();
case TransformationPackage.DUP_REMOVAL_NODE:
return createDupRemovalNode();
case TransformationPackage.SORT_NODE:
return createSortNode();
case TransformationPackage.SQL_NODE:
return createSqlNode();
case TransformationPackage.XQUERY_TRANSFORMATION_MAPPING_ROOT:
return createXQueryTransformationMappingRoot();
case TransformationPackage.XQUERY_TRANSFORMATION:
return createXQueryTransformation();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Object createFromString( EDataType eDataType,
String initialValue ) {
switch (eDataType.getClassifierID()) {
case TransformationPackage.RECURSION_ERROR_MODE: {
RecursionErrorMode result = RecursionErrorMode.get(initialValue);
if (result == null) throw new IllegalArgumentException(
"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return result;
}
case TransformationPackage.JOIN_TYPE: {
JoinType result = JoinType.get(initialValue);
if (result == null) throw new IllegalArgumentException(
"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return result;
}
case TransformationPackage.SORT_DIRECTION: {
SortDirection result = SortDirection.get(initialValue);
if (result == null) throw new IllegalArgumentException(
"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return result;
}
case TransformationPackage.LIST:
return createListFromString(eDataType, initialValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public String convertToString( EDataType eDataType,
Object instanceValue ) {
switch (eDataType.getClassifierID()) {
case TransformationPackage.RECURSION_ERROR_MODE:
return instanceValue == null ? null : instanceValue.toString();
case TransformationPackage.JOIN_TYPE:
return instanceValue == null ? null : instanceValue.toString();
case TransformationPackage.SORT_DIRECTION:
return instanceValue == null ? null : instanceValue.toString();
case TransformationPackage.LIST:
return convertListToString(eDataType, instanceValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public TransformationContainer createTransformationContainer() {
TransformationContainerImpl transformationContainer = new TransformationContainerImpl();
return transformationContainer;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public SqlTransformation createSqlTransformation() {
SqlTransformationImpl sqlTransformation = new SqlTransformationImpl();
return sqlTransformation;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public FragmentMappingRoot createFragmentMappingRoot() {
FragmentMappingRootImpl fragmentMappingRoot = new FragmentMappingRootImpl();
fragmentMappingRoot.setDomain(createDefaultMappingDomain());
return fragmentMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public FragmentMappingRoot createFragmentMappingRootGen() { // NO_UCD
FragmentMappingRootImpl fragmentMappingRoot = new FragmentMappingRootImpl();
return fragmentMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public TreeMappingRoot createTreeMappingRoot() {
TreeMappingRootImpl treeMappingRoot = new TreeMappingRootImpl();
treeMappingRoot.setDomain(createDefaultMappingDomain());
return treeMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public TreeMappingRoot createTreeMappingRootGen() { // NO_UCD
TreeMappingRootImpl treeMappingRoot = new TreeMappingRootImpl();
return treeMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public MappingClass createMappingClass() {
MappingClassImpl mappingClass = new MappingClassImpl();
return mappingClass;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public MappingClassColumn createMappingClassColumn() {
MappingClassColumnImpl mappingClassColumn = new MappingClassColumnImpl();
return mappingClassColumn;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public StagingTable createStagingTable() {
StagingTableImpl stagingTable = new StagingTableImpl();
return stagingTable;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public MappingClassSet createMappingClassSet() {
MappingClassSetImpl mappingClassSet = new MappingClassSetImpl();
return mappingClassSet;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public MappingClassSetContainer createMappingClassSetContainer() {
MappingClassSetContainerImpl mappingClassSetContainer = new MappingClassSetContainerImpl();
return mappingClassSetContainer;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public InputParameter createInputParameter() {
InputParameterImpl inputParameter = new InputParameterImpl();
return inputParameter;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public InputSet createInputSet() {
InputSetImpl inputSet = new InputSetImpl();
return inputSet;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public InputBinding createInputBinding() {
InputBindingImpl inputBinding = new InputBindingImpl();
return inputBinding;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public DataFlowMappingRoot createDataFlowMappingRoot() {
DataFlowMappingRootImpl dataFlowMappingRoot = new DataFlowMappingRootImpl();
return dataFlowMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public DataFlowNode createDataFlowNode() {
DataFlowNodeImpl dataFlowNode = new DataFlowNodeImpl();
return dataFlowNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public DataFlowLink createDataFlowLink() {
DataFlowLinkImpl dataFlowLink = new DataFlowLinkImpl();
return dataFlowLink;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Expression createExpression() {
ExpressionImpl expression = new ExpressionImpl();
return expression;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public TargetNode createTargetNode() {
TargetNodeImpl targetNode = new TargetNodeImpl();
return targetNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public SourceNode createSourceNode() {
SourceNodeImpl sourceNode = new SourceNodeImpl();
return sourceNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public OperationNodeGroup createOperationNodeGroup() {
OperationNodeGroupImpl operationNodeGroup = new OperationNodeGroupImpl();
return operationNodeGroup;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public OperationNode createOperationNode() {
OperationNodeImpl operationNode = new OperationNodeImpl();
return operationNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public JoinNode createJoinNode() {
JoinNodeImpl joinNode = new JoinNodeImpl();
return joinNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public UnionNode createUnionNode() {
UnionNodeImpl unionNode = new UnionNodeImpl();
return unionNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public ProjectionNode createProjectionNode() {
ProjectionNodeImpl projectionNode = new ProjectionNodeImpl();
return projectionNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public FilterNode createFilterNode() {
FilterNodeImpl filterNode = new FilterNodeImpl();
return filterNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public GroupingNode createGroupingNode() {
GroupingNodeImpl groupingNode = new GroupingNodeImpl();
return groupingNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public DupRemovalNode createDupRemovalNode() {
DupRemovalNodeImpl dupRemovalNode = new DupRemovalNodeImpl();
return dupRemovalNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public SortNode createSortNode() {
SortNodeImpl sortNode = new SortNodeImpl();
return sortNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public SqlNode createSqlNode() {
SqlNodeImpl sqlNode = new SqlNodeImpl();
return sqlNode;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public XQueryTransformationMappingRoot createXQueryTransformationMappingRoot() {
XQueryTransformationMappingRootImpl xQueryTransformationMappingRoot = new XQueryTransformationMappingRootImpl();
return xQueryTransformationMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public XQueryTransformation createXQueryTransformation() {
XQueryTransformationImpl xQueryTransformation = new XQueryTransformationImpl();
return xQueryTransformation;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public List createListFromString( EDataType eDataType,
String initialValue ) {
return (List)super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public String convertListToString( EDataType eDataType,
Object instanceValue ) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public TransformationMapping createTransformationMapping() {
TransformationMappingImpl transformationMapping = new TransformationMappingImpl();
return transformationMapping;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public SqlAlias createSqlAlias() {
SqlAliasImpl sqlAlias = new SqlAliasImpl();
return sqlAlias;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
@Override
public SqlTransformationMappingRoot createSqlTransformationMappingRoot() {
SqlTransformationMappingRootImpl sqlTransformationMappingRoot = new SqlTransformationMappingRootImpl();
sqlTransformationMappingRoot.setDomain(createDefaultMappingDomain());
return sqlTransformationMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public SqlTransformationMappingRoot createSqlTransformationMappingRootGen() { // NO_UCD
SqlTransformationMappingRootImpl sqlTransformationMappingRoot = new SqlTransformationMappingRootImpl();
return sqlTransformationMappingRoot;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public TransformationPackage getTransformationPackage() {
return (TransformationPackage)getEPackage();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @deprecated
* @generated
*/
@Deprecated
public static TransformationPackage getPackage() { // NO_UCD
return TransformationPackage.eINSTANCE;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
protected MappingDomain createDefaultMappingDomain() {
// BML 5/9/07 - We were newing up Two of these darned things, the second one is for a "test case???"
// So let's just new ONE up here and use for the ComposedAdapterFactory AND the MappingDomain
TransformationItemProviderAdapterFactory tFactory = new TransformationItemProviderAdapterFactory();
AdapterFactory mappingAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
new ResourceItemProviderAdapterFactory(), new MappingItemProviderAdapterFactory(), tFactory});
// Create the command stack
CommandStack commandStack = new BasicCommandStack();
// This is a test case for cross domain code.
// It creates two instances of the factory.
AdapterFactoryMappingDomain mappingDomain = new PluginAdapterFactoryMappingDomain(mappingAdapterFactory, tFactory,
new EcoreItemProviderAdapterFactory(),
commandStack, null);
// enable all flags
mappingDomain.setMappingEnablementFlags(MappingDomain.ENABLE_ALL);
return mappingDomain;
}
} // TransformationFactoryImpl