/**
 * generated by Xtext 2.9.0
 */
package org.xtext.datavault.datavaultDsl.impl;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.xtext.datavault.datavaultDsl.*;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class DatavaultDslFactoryImpl extends EFactoryImpl implements DatavaultDslFactory {
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static DatavaultDslFactory init() {
		try {
			DatavaultDslFactory theDatavaultDslFactory = (DatavaultDslFactory)EPackage.Registry.INSTANCE.getEFactory(DatavaultDslPackage.eNS_URI);
			if (theDatavaultDslFactory != null) {
				return theDatavaultDslFactory;
			}
		}
		catch (Exception exception) {
			EcorePlugin.INSTANCE.log(exception);
		}
		return new DatavaultDslFactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DatavaultDslFactoryImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass) {
		switch (eClass.getClassifierID()) {
			case DatavaultDslPackage.DATA_VAULT: return createDataVault();
			case DatavaultDslPackage.TYPE: return createType();
			case DatavaultDslPackage.DATA_TYPE: return createDataType();
			case DatavaultDslPackage.ENTITY: return createEntity();
			case DatavaultDslPackage.NODE_ENTITY: return createNodeEntity();
			case DatavaultDslPackage.SATELLITE_ENTITY: return createSatelliteEntity();
			case DatavaultDslPackage.CONTEXT_FEATURE: return createContextFeature();
			case DatavaultDslPackage.FEATURE_SURROGATE_KEY: return createFeatureSurrogateKey();
			case DatavaultDslPackage.FEATURE_BUSINESS_KEY: return createFeatureBusinessKey();
			case DatavaultDslPackage.TIMESTAMP: return createTimestamp();
			case DatavaultDslPackage.LINK: return createLink();
			case DatavaultDslPackage.SATELLITE_REFERENCE: return createSatelliteReference();
			case DatavaultDslPackage.SATELLITE: return createSatellite();
			case DatavaultDslPackage.NODE_REFERENCE: return createNodeReference();
			case DatavaultDslPackage.NODE: return createNode();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataVault createDataVault() {
		DataVaultImpl dataVault = new DataVaultImpl();
		return dataVault;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Type createType() {
		TypeImpl type = new TypeImpl();
		return type;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataType createDataType() {
		DataTypeImpl dataType = new DataTypeImpl();
		return dataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Entity createEntity() {
		EntityImpl entity = new EntityImpl();
		return entity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NodeEntity createNodeEntity() {
		NodeEntityImpl nodeEntity = new NodeEntityImpl();
		return nodeEntity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SatelliteEntity createSatelliteEntity() {
		SatelliteEntityImpl satelliteEntity = new SatelliteEntityImpl();
		return satelliteEntity;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ContextFeature createContextFeature() {
		ContextFeatureImpl contextFeature = new ContextFeatureImpl();
		return contextFeature;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public FeatureSurrogateKey createFeatureSurrogateKey() {
		FeatureSurrogateKeyImpl featureSurrogateKey = new FeatureSurrogateKeyImpl();
		return featureSurrogateKey;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public FeatureBusinessKey createFeatureBusinessKey() {
		FeatureBusinessKeyImpl featureBusinessKey = new FeatureBusinessKeyImpl();
		return featureBusinessKey;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Timestamp createTimestamp() {
		TimestampImpl timestamp = new TimestampImpl();
		return timestamp;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Link createLink() {
		LinkImpl link = new LinkImpl();
		return link;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SatelliteReference createSatelliteReference() {
		SatelliteReferenceImpl satelliteReference = new SatelliteReferenceImpl();
		return satelliteReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Satellite createSatellite() {
		SatelliteImpl satellite = new SatelliteImpl();
		return satellite;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NodeReference createNodeReference() {
		NodeReferenceImpl nodeReference = new NodeReferenceImpl();
		return nodeReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Node createNode() {
		NodeImpl node = new NodeImpl();
		return node;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DatavaultDslPackage getDatavaultDslPackage() {
		return (DatavaultDslPackage)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static DatavaultDslPackage getPackage() {
		return DatavaultDslPackage.eINSTANCE;
	}

} //DatavaultDslFactoryImpl
