*/
private final static Map<EAttribute, Map<EClass, EAttribute>> create(EFeatureInfo...eFeatureInfos) {
//
// Prepare construction of EFeature mappings
//
EFeaturePackage ePackage = EFeaturePackage.eINSTANCE;
EClass eFeatureClass = ePackage.getEFeature();
//
// Initialize create mapping onto EFeature?
//
if(eFeatureMap==null) {
eFeatureMap = new HashMap<EAttribute, Map<EClass,EAttribute>>();
for(EAttribute it : eFeatureClass.getEAllAttributes()) {
Map<EClass,EAttribute> eClassMap = new HashMap<EClass,EAttribute>();
eClassMap.put(eFeatureClass, it);
eFeatureMap.put(it,eClassMap);
}
}
//
// Copy from EFeature onto mapping
//
final Map<EAttribute, Map<EClass,EAttribute>>
eAttributeMap = new HashMap<EAttribute, Map<EClass,EAttribute>>(eFeatureMap);
//
// Then add mappings from implementations onto EFeature
//
for(EFeatureInfo it : eFeatureInfos) {
//
// Prepare information about structure
//
EClass eClass = it.eClass();
//
// Add mapping from EFeature ID to implementation (is required)
//
eAttributeMap.get(ePackage.getEFeature_ID()).put(eClass,it.eIDAttribute());
//
// Add mapping from EFeature SRID to implementation (optional)
//
EAttribute eAttribute = it.eSRIDAttribute();
if(eAttribute!=null) {
eAttributeMap.get(ePackage.getEFeature_SRID()).put(eClass,eAttribute);
}
//
// Add mapping from EFeature default geometry to implementation (optional)
//
eAttribute = it.eDefaultGeometry();
if(eAttribute!=null) {
eAttributeMap.get(ePackage.getEFeature_Default()).put(eClass,it.eDefaultGeometry());
}
}
//
// Construct structural value getter
//