/**
 */
package org.etsi.mts.tdl.structuredobjectives.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.etsi.mts.tdl.structuredobjectives.*;

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

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass)
	{
		switch (eClass.getClassifierID())
		{
			case StructuredObjectivesPackage.ELEMENT: return createElement();
			case StructuredObjectivesPackage.STRUCTURED_TEST_OBJECTIVE: return createStructuredTestObjective();
			case StructuredObjectivesPackage.INITIAL_CONDITIONS: return createInitialConditions();
			case StructuredObjectivesPackage.EVENT_SEQUENCE: return createEventSequence();
			case StructuredObjectivesPackage.EVENT_OCCURRENCE: return createEventOccurrence();
			case StructuredObjectivesPackage.EXPECTED_BEHAVIOUR: return createExpectedBehaviour();
			case StructuredObjectivesPackage.FINAL_CONDITIONS: return createFinalConditions();
			case StructuredObjectivesPackage.PICS_REFERENCE: return createPICSReference();
			case StructuredObjectivesPackage.PICS: return createPICS();
			case StructuredObjectivesPackage.ENTITY: return createEntity();
			case StructuredObjectivesPackage.EVENT: return createEvent();
			case StructuredObjectivesPackage.EVENT_OCCURRENCE_SPECIFICATION: return createEventOccurrenceSpecification();
			case StructuredObjectivesPackage.ENTITY_REFERENCE: return createEntityReference();
			case StructuredObjectivesPackage.EVENT_REFERENCE: return createEventReference();
			case StructuredObjectivesPackage.EVENT_ARGUMENT: return createEventArgument();
			case StructuredObjectivesPackage.DATA_REFERENCE: return createDataReference();
			case StructuredObjectivesPackage.CONTENT: return createContent();
			case StructuredObjectivesPackage.LITERAL_VALUE: return createLiteralValue();
			case StructuredObjectivesPackage.CONTENT_REFERENCE: return createContentReference();
			case StructuredObjectivesPackage.LITERAL_VALUE_REFERENCE: return createLiteralValueReference();
			case StructuredObjectivesPackage.REPEATED_EVENT_SEQUENCE: return createRepeatedEventSequence();
			case StructuredObjectivesPackage.EVENT_TEMPLATE_OCCURRENCE: return createEventTemplateOccurrence();
			case StructuredObjectivesPackage.EVENT_SPECIFICATION_TEMPLATE: return createEventSpecificationTemplate();
			case StructuredObjectivesPackage.ENTITY_BINDING: return createEntityBinding();
			case StructuredObjectivesPackage.VARIANTS: return createVariants();
			case StructuredObjectivesPackage.TEST_OBJECTIVE_VARIANT: return createTestObjectiveVariant();
			case StructuredObjectivesPackage.VARIANT_BINDING: return createVariantBinding();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Element createElement()
	{
		ElementImpl element = new ElementImpl();
		return element;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public StructuredTestObjective createStructuredTestObjective()
	{
		StructuredTestObjectiveImpl structuredTestObjective = new StructuredTestObjectiveImpl();
		return structuredTestObjective;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public InitialConditions createInitialConditions()
	{
		InitialConditionsImpl initialConditions = new InitialConditionsImpl();
		return initialConditions;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventSequence createEventSequence()
	{
		EventSequenceImpl eventSequence = new EventSequenceImpl();
		return eventSequence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventOccurrence createEventOccurrence()
	{
		EventOccurrenceImpl eventOccurrence = new EventOccurrenceImpl();
		return eventOccurrence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ExpectedBehaviour createExpectedBehaviour()
	{
		ExpectedBehaviourImpl expectedBehaviour = new ExpectedBehaviourImpl();
		return expectedBehaviour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public FinalConditions createFinalConditions()
	{
		FinalConditionsImpl finalConditions = new FinalConditionsImpl();
		return finalConditions;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public PICSReference createPICSReference()
	{
		PICSReferenceImpl picsReference = new PICSReferenceImpl();
		return picsReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public PICS createPICS()
	{
		PICSImpl pics = new PICSImpl();
		return pics;
	}

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

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Event createEvent()
	{
		EventImpl event = new EventImpl();
		return event;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventOccurrenceSpecification createEventOccurrenceSpecification()
	{
		EventOccurrenceSpecificationImpl eventOccurrenceSpecification = new EventOccurrenceSpecificationImpl();
		return eventOccurrenceSpecification;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EntityReference createEntityReference()
	{
		EntityReferenceImpl entityReference = new EntityReferenceImpl();
		return entityReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventReference createEventReference()
	{
		EventReferenceImpl eventReference = new EventReferenceImpl();
		return eventReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventArgument createEventArgument()
	{
		EventArgumentImpl eventArgument = new EventArgumentImpl();
		return eventArgument;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public DataReference createDataReference()
	{
		DataReferenceImpl dataReference = new DataReferenceImpl();
		return dataReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Content createContent()
	{
		ContentImpl content = new ContentImpl();
		return content;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public LiteralValue createLiteralValue()
	{
		LiteralValueImpl literalValue = new LiteralValueImpl();
		return literalValue;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ContentReference createContentReference()
	{
		ContentReferenceImpl contentReference = new ContentReferenceImpl();
		return contentReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public LiteralValueReference createLiteralValueReference()
	{
		LiteralValueReferenceImpl literalValueReference = new LiteralValueReferenceImpl();
		return literalValueReference;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public RepeatedEventSequence createRepeatedEventSequence()
	{
		RepeatedEventSequenceImpl repeatedEventSequence = new RepeatedEventSequenceImpl();
		return repeatedEventSequence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventTemplateOccurrence createEventTemplateOccurrence()
	{
		EventTemplateOccurrenceImpl eventTemplateOccurrence = new EventTemplateOccurrenceImpl();
		return eventTemplateOccurrence;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EventSpecificationTemplate createEventSpecificationTemplate()
	{
		EventSpecificationTemplateImpl eventSpecificationTemplate = new EventSpecificationTemplateImpl();
		return eventSpecificationTemplate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EntityBinding createEntityBinding()
	{
		EntityBindingImpl entityBinding = new EntityBindingImpl();
		return entityBinding;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Variants createVariants()
	{
		VariantsImpl variants = new VariantsImpl();
		return variants;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public TestObjectiveVariant createTestObjectiveVariant()
	{
		TestObjectiveVariantImpl testObjectiveVariant = new TestObjectiveVariantImpl();
		return testObjectiveVariant;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public VariantBinding createVariantBinding()
	{
		VariantBindingImpl variantBinding = new VariantBindingImpl();
		return variantBinding;
	}

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

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

} //StructuredObjectivesFactoryImpl
