/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.geotools.data.efeature.impl;
import java.util.logging.Level;
import java.util.logging.Logger;
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.EStructuralFeature;
import org.eclipse.emf.ecore.impl.EFactoryImpl;
import org.eclipse.emf.ecore.plugin.EcorePlugin;
import org.geotools.data.efeature.DataBuilder;
import org.geotools.data.efeature.DataTypes;
import org.geotools.data.efeature.EFeatureFactory;
import org.geotools.data.efeature.EFeaturePackage;
import org.geotools.util.logging.Logging;
import org.opengis.feature.Attribute;
import org.opengis.feature.Property;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.io.ParseException;
/**
* <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!-- end-user-doc -->
* @generated
*/
public class EFeatureFactoryImpl extends EFactoryImpl implements EFeatureFactory {
/**
* Cached {@link Logger} for this class
*/
protected static final Logger LOGGER = Logging.getLogger(EFeatureFactoryImpl.class);
/**
* Creates the default factory implementation.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public static EFeatureFactory initGen() {
try {
EFeatureFactory theEFeatureFactory = (EFeatureFactory)EPackage.Registry.INSTANCE.getEFactory("http://geotools.org/data/efeature/efeature.ecore/1.0");
if (theEFeatureFactory != null) {
return theEFeatureFactory;
}
}
catch (Exception exception) {
EcorePlugin.INSTANCE.log(exception);
}
return new EFeatureFactoryImpl();
}
/**
* Creates the default factory implementation. <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated NOT
*/
public static EFeatureFactory init() {
try {
EFeatureFactory theEFeatureFactory = (EFeatureFactory)EPackage.Registry.INSTANCE.getEFactory("http://geotools.org/data/efeature/efeature.ecore/1.0");
if (theEFeatureFactory != null) {
return theEFeatureFactory;
}
}
catch (Exception exception) {
LOGGER.log(Level.SEVERE, "Failed to initialize EFeatureFactory", exception);
}
return new EFeatureFactoryImpl();
}
/**
* Creates an instance of the factory.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public EFeatureFactoryImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EObject create(EClass eClass) {
switch (eClass.getClassifierID()) {
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public Object createFromString(EDataType eDataType, String initialValue) {
switch (eDataType.getClassifierID()) {
case EFeaturePackage.PROPERTY:
return createPropertyFromString(eDataType, initialValue);
case EFeaturePackage.ATTRIBUTE:
return createAttributeFromString(eDataType, initialValue);
case EFeaturePackage.GEOMETRY:
return createGeometryFromString(eDataType, initialValue);
case EFeaturePackage.ESTRUCTURAL_FEATURE:
return createEStructuralFeatureFromString(eDataType, initialValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public String convertToString(EDataType eDataType, Object instanceValue) {
switch (eDataType.getClassifierID()) {
case EFeaturePackage.PROPERTY:
return convertPropertyToString(eDataType, instanceValue);
case EFeaturePackage.ATTRIBUTE:
return convertAttributeToString(eDataType, instanceValue);
case EFeaturePackage.GEOMETRY:
return convertGeometryToString(eDataType, instanceValue);
case EFeaturePackage.ESTRUCTURAL_FEATURE:
return convertEStructuralFeatureToString(eDataType, instanceValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Property createPropertyFromString(EDataType eDataType, String initialValue) {
return (Property)super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String convertPropertyToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Attribute createAttributeFromString(EDataType eDataType, String initialValue) {
return (Attribute)super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String convertAttributeToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Geometry createGeometryFromStringGen(EDataType eDataType, String initialValue) {
return (Geometry)super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated NOT
*/
public Geometry createGeometryFromString(EDataType eDataType, String initialValue) {
//
// Get data type
//
Class<?> type = eDataType.getInstanceClass();
//
// Only serialize Geometry instances
//
if(DataTypes.isGeometry(type)) {
try {
//
// Convert to Geometry
//
return DataBuilder.toGeometry(initialValue);
} catch (ParseException e) {
//
// Notify
//
LOGGER.log(Level.WARNING, e.getMessage(), e);
//
// Try to create an empty geometry of given type
//
try {
return DataBuilder.toEmptyGeometry(type);
} catch (ParseException e1) {
//
// Notify again
//
LOGGER.log(Level.SEVERE, e1.getMessage(), e1);
//
// This time, nothing can be done, just return null.
//
return null;
}
}
}
//
// Forward to default implementation
//
return createGeometryFromStringGen(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String convertGeometryToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public EStructuralFeature createEStructuralFeatureFromString(EDataType eDataType,
String initialValue) {
return (EStructuralFeature)super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String convertEStructuralFeatureToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EFeaturePackage getEFeaturePackage() {
return (EFeaturePackage)getEPackage();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @deprecated
* @generated
*/
@Deprecated
public static EFeaturePackage getPackage() {
return EFeaturePackage.eINSTANCE;
}
} // EFeatureFactoryImpl