/** * <copyright> * </copyright> * * $Id$ */ package net.opengis.gml.impl; import java.math.BigInteger; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; import net.opengis.gml.*; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; 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.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.xml.type.XMLTypeFactory; import org.eclipse.emf.ecore.xml.type.XMLTypePackage; import org.opengis.coverage.grid.GridEnvelope; /** * <!-- begin-user-doc --> * An implementation of the model <b>Factory</b>. * <!-- end-user-doc --> * @generated */ public class GmlFactoryImpl extends EFactoryImpl implements GmlFactory { /** * Creates the default factory implementation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public static GmlFactory init() { try { GmlFactory theGmlFactory = (GmlFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.opengis.net/gml"); if (theGmlFactory != null) { return theGmlFactory; } } catch (Exception exception) { EcorePlugin.INSTANCE.log(exception); } return new GmlFactoryImpl(); } /** * Creates an instance of the factory. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GmlFactoryImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EObject create(EClass eClass) { switch (eClass.getClassifierID()) { case GmlPackage.ABSTRACT_RING_PROPERTY_TYPE: return createAbstractRingPropertyType(); case GmlPackage.ABSTRACT_SURFACE_TYPE: return createAbstractSurfaceType(); case GmlPackage.BOUNDING_SHAPE_TYPE: return createBoundingShapeType(); case GmlPackage.CODE_LIST_TYPE: return createCodeListType(); case GmlPackage.CODE_TYPE: return createCodeType(); case GmlPackage.DIRECT_POSITION_TYPE: return createDirectPositionType(); case GmlPackage.DOCUMENT_ROOT: return createDocumentRoot(); case GmlPackage.ENVELOPE_TYPE: return createEnvelopeType(); case GmlPackage.ENVELOPE_WITH_TIME_PERIOD_TYPE: return createEnvelopeWithTimePeriodType(); case GmlPackage.GRID_ENVELOPE_TYPE: return createGridEnvelopeType(); case GmlPackage.GRID_LIMITS_TYPE: return createGridLimitsType(); case GmlPackage.GRID_TYPE: return createGridType(); case GmlPackage.LINEAR_RING_TYPE: return createLinearRingType(); case GmlPackage.META_DATA_PROPERTY_TYPE: return createMetaDataPropertyType(); case GmlPackage.POINT_TYPE: return createPointType(); case GmlPackage.POLYGON_TYPE: return createPolygonType(); case GmlPackage.RECTIFIED_GRID_TYPE: return createRectifiedGridType(); case GmlPackage.REFERENCE_TYPE: return createReferenceType(); case GmlPackage.STRING_OR_REF_TYPE: return createStringOrRefType(); case GmlPackage.TIME_POSITION_TYPE: return createTimePositionType(); case GmlPackage.VECTOR_TYPE: return createVectorType(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Object createFromString(EDataType eDataType, String initialValue) { switch (eDataType.getClassifierID()) { case GmlPackage.TIME_INDETERMINATE_VALUE_TYPE: return createTimeIndeterminateValueTypeFromString(eDataType, initialValue); case GmlPackage.DOUBLE_LIST: return createDoubleListFromString(eDataType, initialValue); case GmlPackage.INTEGER_LIST: return createIntegerListFromString(eDataType, initialValue); case GmlPackage.NAME_LIST: return createNameListFromString(eDataType, initialValue); case GmlPackage.TEMPORAL_POSITION_TYPE: return createTemporalPositionTypeFromString(eDataType, initialValue); case GmlPackage.TIME_DURATION_TYPE: return createTimeDurationTypeFromString(eDataType, initialValue); case GmlPackage.TIME_INDETERMINATE_VALUE_TYPE_OBJECT: return createTimeIndeterminateValueTypeObjectFromString(eDataType, initialValue); case GmlPackage.VECTOR_TYPE_BASE: return createVectorTypeBaseFromString(eDataType, initialValue); case GmlPackage.GRID_ENVELOPE: return createGridEnvelopeFromString(eDataType, initialValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertToString(EDataType eDataType, Object instanceValue) { switch (eDataType.getClassifierID()) { case GmlPackage.TIME_INDETERMINATE_VALUE_TYPE: return convertTimeIndeterminateValueTypeToString(eDataType, instanceValue); case GmlPackage.DOUBLE_LIST: return convertDoubleListToString(eDataType, instanceValue); case GmlPackage.INTEGER_LIST: return convertIntegerListToString(eDataType, instanceValue); case GmlPackage.NAME_LIST: return convertNameListToString(eDataType, instanceValue); case GmlPackage.TEMPORAL_POSITION_TYPE: return convertTemporalPositionTypeToString(eDataType, instanceValue); case GmlPackage.TIME_DURATION_TYPE: return convertTimeDurationTypeToString(eDataType, instanceValue); case GmlPackage.TIME_INDETERMINATE_VALUE_TYPE_OBJECT: return convertTimeIndeterminateValueTypeObjectToString(eDataType, instanceValue); case GmlPackage.VECTOR_TYPE_BASE: return convertVectorTypeBaseToString(eDataType, instanceValue); case GmlPackage.GRID_ENVELOPE: return convertGridEnvelopeToString(eDataType, instanceValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public AbstractRingPropertyType createAbstractRingPropertyType() { AbstractRingPropertyTypeImpl abstractRingPropertyType = new AbstractRingPropertyTypeImpl(); return abstractRingPropertyType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public AbstractSurfaceType createAbstractSurfaceType() { AbstractSurfaceTypeImpl abstractSurfaceType = new AbstractSurfaceTypeImpl(); return abstractSurfaceType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public BoundingShapeType createBoundingShapeType() { BoundingShapeTypeImpl boundingShapeType = new BoundingShapeTypeImpl(); return boundingShapeType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public CodeListType createCodeListType() { CodeListTypeImpl codeListType = new CodeListTypeImpl(); return codeListType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public CodeType createCodeType() { CodeTypeImpl codeType = new CodeTypeImpl(); return codeType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public DirectPositionType createDirectPositionType() { DirectPositionTypeImpl directPositionType = new DirectPositionTypeImpl(); return directPositionType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public DocumentRoot createDocumentRoot() { DocumentRootImpl documentRoot = new DocumentRootImpl(); return documentRoot; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EnvelopeType createEnvelopeType() { EnvelopeTypeImpl envelopeType = new EnvelopeTypeImpl(); return envelopeType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EnvelopeWithTimePeriodType createEnvelopeWithTimePeriodType() { EnvelopeWithTimePeriodTypeImpl envelopeWithTimePeriodType = new EnvelopeWithTimePeriodTypeImpl(); return envelopeWithTimePeriodType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GridEnvelopeType createGridEnvelopeType() { GridEnvelopeTypeImpl gridEnvelopeType = new GridEnvelopeTypeImpl(); return gridEnvelopeType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GridLimitsType createGridLimitsType() { GridLimitsTypeImpl gridLimitsType = new GridLimitsTypeImpl(); return gridLimitsType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GridType createGridType() { GridTypeImpl gridType = new GridTypeImpl(); return gridType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public LinearRingType createLinearRingType() { LinearRingTypeImpl linearRingType = new LinearRingTypeImpl(); return linearRingType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public MetaDataPropertyType createMetaDataPropertyType() { MetaDataPropertyTypeImpl metaDataPropertyType = new MetaDataPropertyTypeImpl(); return metaDataPropertyType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public PointType createPointType() { PointTypeImpl pointType = new PointTypeImpl(); return pointType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public PolygonType createPolygonType() { PolygonTypeImpl polygonType = new PolygonTypeImpl(); return polygonType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public RectifiedGridType createRectifiedGridType() { RectifiedGridTypeImpl rectifiedGridType = new RectifiedGridTypeImpl(); return rectifiedGridType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ReferenceType createReferenceType() { ReferenceTypeImpl referenceType = new ReferenceTypeImpl(); return referenceType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public StringOrRefType createStringOrRefType() { StringOrRefTypeImpl stringOrRefType = new StringOrRefTypeImpl(); return stringOrRefType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public TimePositionType createTimePositionType() { TimePositionTypeImpl timePositionType = new TimePositionTypeImpl(); return timePositionType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public VectorType createVectorType() { VectorTypeImpl vectorType = new VectorTypeImpl(); return vectorType; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public TimeIndeterminateValueType createTimeIndeterminateValueTypeFromString(EDataType eDataType, String initialValue) { TimeIndeterminateValueType result = TimeIndeterminateValueType.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTimeIndeterminateValueTypeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public List createDoubleListFromString(EDataType eDataType, String initialValue) { if (initialValue == null) return null; List result = new ArrayList(); for (StringTokenizer stringTokenizer = new StringTokenizer(initialValue); stringTokenizer.hasMoreTokens(); ) { String item = stringTokenizer.nextToken(); result.add((Double)XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DOUBLE, item)); } return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertDoubleListToString(EDataType eDataType, Object instanceValue) { if (instanceValue == null) return null; List list = (List)instanceValue; if (list.isEmpty()) return ""; StringBuffer result = new StringBuffer(); for (Iterator i = list.iterator(); i.hasNext(); ) { result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DOUBLE, i.next())); result.append(' '); } return result.substring(0, result.length() - 1); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public List createIntegerListFromString(EDataType eDataType, String initialValue) { if (initialValue == null) return null; List result = new ArrayList(); for (StringTokenizer stringTokenizer = new StringTokenizer(initialValue); stringTokenizer.hasMoreTokens(); ) { String item = stringTokenizer.nextToken(); result.add((BigInteger)XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.INTEGER, item)); } return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertIntegerListToString(EDataType eDataType, Object instanceValue) { if (instanceValue == null) return null; List list = (List)instanceValue; if (list.isEmpty()) return ""; StringBuffer result = new StringBuffer(); for (Iterator i = list.iterator(); i.hasNext(); ) { result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.INTEGER, i.next())); result.append(' '); } return result.substring(0, result.length() - 1); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public List createNameListFromString(EDataType eDataType, String initialValue) { if (initialValue == null) return null; List result = new ArrayList(); for (StringTokenizer stringTokenizer = new StringTokenizer(initialValue); stringTokenizer.hasMoreTokens(); ) { String item = stringTokenizer.nextToken(); result.add((String)XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.NAME, item)); } return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertNameListToString(EDataType eDataType, Object instanceValue) { if (instanceValue == null) return null; List list = (List)instanceValue; if (list.isEmpty()) return ""; StringBuffer result = new StringBuffer(); for (Iterator i = list.iterator(); i.hasNext(); ) { result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.NAME, i.next())); result.append(' '); } return result.substring(0, result.length() - 1); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Object createTemporalPositionTypeFromString(EDataType eDataType, String initialValue) { if (initialValue == null) return null; Object result = null; RuntimeException exception = null; try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DATE_TIME, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DATE, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.GYEAR_MONTH, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.GYEAR, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.ANY_URI, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DECIMAL, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } if (result != null || exception == null) return result; throw exception; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTemporalPositionTypeToString(EDataType eDataType, Object instanceValue) { if (instanceValue == null) return null; if (XMLTypePackage.Literals.DATE_TIME.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DATE_TIME, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.DATE.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DATE, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.GYEAR_MONTH.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.GYEAR_MONTH, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.GYEAR.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.GYEAR, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.ANY_URI.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.ANY_URI, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.DECIMAL.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DECIMAL, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } throw new IllegalArgumentException("Invalid value: '"+instanceValue+"' for datatype :"+eDataType.getName()); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Object createTimeDurationTypeFromString(EDataType eDataType, String initialValue) { if (initialValue == null) return null; Object result = null; RuntimeException exception = null; try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DURATION, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } try { result = XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.DECIMAL, initialValue); if (result != null && Diagnostician.INSTANCE.validate(eDataType, result, null, null)) { return result; } } catch (RuntimeException e) { exception = e; } if (result != null || exception == null) return result; throw exception; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTimeDurationTypeToString(EDataType eDataType, Object instanceValue) { if (instanceValue == null) return null; if (XMLTypePackage.Literals.DURATION.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DURATION, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } if (XMLTypePackage.Literals.DECIMAL.isInstance(instanceValue)) { try { String value = XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.DECIMAL, instanceValue); if (value != null) return value; } catch (Exception e) { // Keep trying other member types until all have failed. } } throw new IllegalArgumentException("Invalid value: '"+instanceValue+"' for datatype :"+eDataType.getName()); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public TimeIndeterminateValueType createTimeIndeterminateValueTypeObjectFromString(EDataType eDataType, String initialValue) { return createTimeIndeterminateValueTypeFromString(GmlPackage.Literals.TIME_INDETERMINATE_VALUE_TYPE, initialValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTimeIndeterminateValueTypeObjectToString(EDataType eDataType, Object instanceValue) { return convertTimeIndeterminateValueTypeToString(GmlPackage.Literals.TIME_INDETERMINATE_VALUE_TYPE, instanceValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public List createVectorTypeBaseFromString(EDataType eDataType, String initialValue) { return createDoubleListFromString(GmlPackage.Literals.DOUBLE_LIST, initialValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertVectorTypeBaseToString(EDataType eDataType, Object instanceValue) { return convertDoubleListToString(GmlPackage.Literals.DOUBLE_LIST, instanceValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GridEnvelope createGridEnvelopeFromString(EDataType eDataType, String initialValue) { return (GridEnvelope)super.createFromString(eDataType, initialValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertGridEnvelopeToString(EDataType eDataType, Object instanceValue) { return super.convertToString(eDataType, instanceValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GmlPackage getGmlPackage() { return (GmlPackage)getEPackage(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @deprecated * @generated */ public static GmlPackage getPackage() { return GmlPackage.eINSTANCE; } } //GmlFactoryImpl