/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.geotools.data.efeature.impl;
import com.vividsolutions.jts.geom.Geometry;
import java.util.List;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EGenericType;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.ETypeParameter;
import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.geotools.data.Transaction;
import org.geotools.data.efeature.EFeature;
import org.geotools.data.efeature.EFeatureAttribute;
import org.geotools.data.efeature.EFeatureAttributeInfo;
import org.geotools.data.efeature.EFeatureFactory;
import org.geotools.data.efeature.EFeatureGeometry;
import org.geotools.data.efeature.EFeatureGeometryInfo;
import org.geotools.data.efeature.EFeatureInfo;
import org.geotools.data.efeature.EFeaturePackage;
import org.geotools.data.efeature.EFeatureProperty;
import org.geotools.data.efeature.EStructureInfo;
import org.opengis.feature.Attribute;
import org.opengis.feature.Feature;
import org.opengis.feature.GeometryAttribute;
import org.opengis.feature.Property;
/**
* <!-- begin-user-doc --> An implementation of the model <b>Package</b>. <!-- end-user-doc -->
* @generated
*/
public class EFeaturePackageImpl extends EPackageImpl implements EFeaturePackage {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EClass eFeatureEClass = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType featureEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType propertyEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType attributeEDataType = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EDataType transactionEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType geometryAttributeEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType geometryEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eStructureInfoEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeatureInfoEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeatureAttributeInfoEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeatureGeometryInfoEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eStructuralFeatureEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType listEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeaturePropertyEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeatureAttributeEDataType = null;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private EDataType eFeatureGeometryEDataType = null;
/**
* Creates an instance of the model <b>Package</b>, registered with
* {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
* package URI value.
* <p>Note: the correct way to create the package is via the static
* factory method {@link #init init()}, which also performs
* initialization of the package, or returns the registered package,
* if one already exists.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see org.eclipse.emf.ecore.EPackage.Registry
* @see org.geotools.data.efeature.EFeaturePackage#eNS_URI
* @see #init()
* @generated
*/
private EFeaturePackageImpl() {
super(eNS_URI, EFeatureFactory.eINSTANCE);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private static boolean isInited = false;
/**
* Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
*
* <p>This method is used to initialize {@link EFeaturePackage#eINSTANCE} when that field is accessed.
* Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #eNS_URI
* @see #createPackageContents()
* @see #initializePackageContents()
* @generated
*/
public static EFeaturePackage init() {
if (isInited) return (EFeaturePackage)EPackage.Registry.INSTANCE.getEPackage(EFeaturePackage.eNS_URI);
// Obtain or create and register package
EFeaturePackageImpl theEFeaturePackage = (EFeaturePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EFeaturePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EFeaturePackageImpl());
isInited = true;
// Create package meta-data objects
theEFeaturePackage.createPackageContents();
// Initialize created meta-data
theEFeaturePackage.initializePackageContents();
// Mark meta-data to indicate it can't be changed
theEFeaturePackage.freeze();
// Update the registry and return the package
EPackage.Registry.INSTANCE.put(EFeaturePackage.eNS_URI, theEFeaturePackage);
return theEFeaturePackage;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EClass getEFeature() {
return eFeatureEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public EAttribute getEFeature_ID() {
return (EAttribute)eFeatureEClass.getEStructuralFeatures().get(0);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public EAttribute getEFeature_Data() {
return (EAttribute)eFeatureEClass.getEStructuralFeatures().get(1);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EAttribute getEFeature_SRID() {
return (EAttribute)eFeatureEClass.getEStructuralFeatures().get(2);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EAttribute getEFeature_Default() {
return (EAttribute)eFeatureEClass.getEStructuralFeatures().get(3);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EAttribute getEFeature_Structure() {
return (EAttribute)eFeatureEClass.getEStructuralFeatures().get(4);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureProperty() {
return eFeaturePropertyEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureAttribute() {
return eFeatureAttributeEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureGeometry() {
return eFeatureGeometryEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEStructuralFeature() {
return eStructuralFeatureEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getFeature() {
return featureEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getProperty() {
return propertyEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getAttribute() {
return attributeEDataType;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getTransaction() {
return transactionEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getGeometryAttribute() {
return geometryAttributeEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getGeometry() {
return geometryEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEStructureInfo() {
return eStructureInfoEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureInfo() {
return eFeatureInfoEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureAttributeInfo() {
return eFeatureAttributeInfoEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getEFeatureGeometryInfo() {
return eFeatureGeometryInfoEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EDataType getList() {
return listEDataType;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public EFeatureFactory getEFeatureFactory() {
return (EFeatureFactory)getEFactoryInstance();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private boolean isCreated = false;
/**
* Creates the meta-model objects for the package. This method is
* guarded to have no affect on any invocation but its first.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void createPackageContents() {
if (isCreated) return;
isCreated = true;
// Create classes and their features
eFeatureEClass = createEClass(EFEATURE);
createEAttribute(eFeatureEClass, EFEATURE__ID);
createEAttribute(eFeatureEClass, EFEATURE__DATA);
createEAttribute(eFeatureEClass, EFEATURE__SRID);
createEAttribute(eFeatureEClass, EFEATURE__DEFAULT);
createEAttribute(eFeatureEClass, EFEATURE__STRUCTURE);
// Create data types
featureEDataType = createEDataType(FEATURE);
propertyEDataType = createEDataType(PROPERTY);
attributeEDataType = createEDataType(ATTRIBUTE);
transactionEDataType = createEDataType(TRANSACTION);
geometryAttributeEDataType = createEDataType(GEOMETRY_ATTRIBUTE);
geometryEDataType = createEDataType(GEOMETRY);
eStructureInfoEDataType = createEDataType(ESTRUCTURE_INFO);
eFeatureInfoEDataType = createEDataType(EFEATURE_INFO);
eFeatureAttributeInfoEDataType = createEDataType(EFEATURE_ATTRIBUTE_INFO);
eFeatureGeometryInfoEDataType = createEDataType(EFEATURE_GEOMETRY_INFO);
eStructuralFeatureEDataType = createEDataType(ESTRUCTURAL_FEATURE);
listEDataType = createEDataType(LIST);
eFeaturePropertyEDataType = createEDataType(EFEATURE_PROPERTY);
eFeatureAttributeEDataType = createEDataType(EFEATURE_ATTRIBUTE);
eFeatureGeometryEDataType = createEDataType(EFEATURE_GEOMETRY);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private boolean isInitialized = false;
/**
* Complete the initialization of the package and its meta-model. This
* method is guarded to have no affect on any invocation but its first.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void initializePackageContents() {
if (isInitialized) return;
isInitialized = true;
// Initialize package
setName(eNAME);
setNsPrefix(eNS_PREFIX);
setNsURI(eNS_URI);
// Create type parameters
addETypeParameter(listEDataType, "T");
addETypeParameter(eFeaturePropertyEDataType, "V");
ETypeParameter eFeaturePropertyEDataType_T = addETypeParameter(eFeaturePropertyEDataType, "T");
addETypeParameter(eFeatureAttributeEDataType, "V");
ETypeParameter eFeatureGeometryEDataType_V = addETypeParameter(eFeatureGeometryEDataType, "V");
// Set bounds for type parameters
EGenericType g1 = createEGenericType(this.getProperty());
eFeaturePropertyEDataType_T.getEBounds().add(g1);
g1 = createEGenericType(this.getGeometry());
eFeatureGeometryEDataType_V.getEBounds().add(g1);
// Add supertypes to classes
// Initialize classes and features; add operations and parameters
initEClass(eFeatureEClass, EFeature.class, "EFeature", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getEFeature_ID(), ecorePackage.getEString(), "ID", "", 1, 1, EFeature.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getEFeature_Data(), this.getFeature(), "data", null, 1, 1, EFeature.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
initEAttribute(getEFeature_SRID(), ecorePackage.getEString(), "SRID", "EPSG:4326", 1, 1, EFeature.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getEFeature_Default(), ecorePackage.getEString(), "default", "geom", 1, 1, EFeature.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEAttribute(getEFeature_Structure(), this.getEFeatureInfo(), "structure", null, 1, 1, EFeature.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
EOperation op = addEOperation(eFeatureEClass, null, "getAttributeList", 1, 1, IS_UNIQUE, IS_ORDERED);
ETypeParameter t1 = addETypeParameter(op, "V");
g1 = createEGenericType(ecorePackage.getEJavaClass());
EGenericType g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
addEParameter(op, g1, "valueType", 0, 1, IS_UNIQUE, IS_ORDERED);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(this.getEFeatureAttribute());
g1.getETypeArguments().add(g2);
EGenericType g3 = createEGenericType(t1);
g2.getETypeArguments().add(g3);
initEOperation(op, g1);
op = addEOperation(eFeatureEClass, null, "getGeometryList", 1, 1, IS_UNIQUE, IS_ORDERED);
t1 = addETypeParameter(op, "V");
g1 = createEGenericType(this.getGeometry());
t1.getEBounds().add(g1);
g1 = createEGenericType(ecorePackage.getEJavaClass());
g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
addEParameter(op, g1, "valueType", 0, 1, IS_UNIQUE, IS_ORDERED);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(this.getEFeatureGeometry());
g1.getETypeArguments().add(g2);
g3 = createEGenericType(t1);
g2.getETypeArguments().add(g3);
initEOperation(op, g1);
op = addEOperation(eFeatureEClass, this.getFeature(), "getData", 1, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getTransaction(), "transaction", 1, 1, IS_UNIQUE, IS_ORDERED);
op = addEOperation(eFeatureEClass, this.getFeature(), "setData", 1, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getFeature(), "newData", 1, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getTransaction(), "transaction", 1, 1, IS_UNIQUE, IS_ORDERED);
// Initialize data types
initEDataType(featureEDataType, Feature.class, "Feature", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(propertyEDataType, Property.class, "Property", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(attributeEDataType, Attribute.class, "Attribute", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(transactionEDataType, Transaction.class, "Transaction", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(geometryAttributeEDataType, GeometryAttribute.class, "GeometryAttribute", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(geometryEDataType, Geometry.class, "Geometry", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eStructureInfoEDataType, EStructureInfo.class, "EStructureInfo", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeatureInfoEDataType, EFeatureInfo.class, "EFeatureInfo", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeatureAttributeInfoEDataType, EFeatureAttributeInfo.class, "EFeatureAttributeInfo", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeatureGeometryInfoEDataType, EFeatureGeometryInfo.class, "EFeatureGeometryInfo", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eStructuralFeatureEDataType, EStructuralFeature.class, "EStructuralFeature", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(listEDataType, List.class, "List", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeaturePropertyEDataType, EFeatureProperty.class, "EFeatureProperty", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeatureAttributeEDataType, EFeatureAttribute.class, "EFeatureAttribute", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(eFeatureGeometryEDataType, EFeatureGeometry.class, "EFeatureGeometry", !IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
// Create resource
createResource(eNS_URI);
// Create annotations
// http://www.eclipse.org/emf/2002/GenModel
createGenModelAnnotations();
}
/**
* Initializes the annotations for <b>http://www.eclipse.org/emf/2002/GenModel</b>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void createGenModelAnnotations() {
String source = "http://www.eclipse.org/emf/2002/GenModel";
addAnnotation
(getEFeature_Default(),
source,
new String[] {
"Doumentation", "Name of default EFeatureGeometry"
});
}
} // EFeaturePackageImpl