Package org.geotools.data.efeature.tests.impl

Source Code of org.geotools.data.efeature.tests.impl.EFeatureTestsContextHelper

package org.geotools.data.efeature.tests.impl;

import java.util.Set;

import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.geotools.data.efeature.EFeatureContext;
import org.geotools.data.efeature.EFeatureContextFactory;
import org.geotools.data.efeature.EFeatureFactory;
import org.geotools.data.efeature.EFeatureHints;
import org.geotools.data.efeature.EFeatureInfo;
import org.geotools.data.efeature.impl.EFeatureIDFactoryImpl;
import org.geotools.data.efeature.tests.EFeatureTestsPackage;
import org.geotools.data.efeature.tests.provider.EFeatureTestsItemProviderAdapterFactory;
import org.geotools.data.efeature.tests.util.EFeatureTestsResourceFactoryImpl;

/**
* This helper class creates a {@link EFeatureContext} for testing purposed.
*
* @author kengu - 19. mai 2011 
*
*
* @source $URL$
*/
public class EFeatureTestsContextHelper {
       

    public static final String eNS_URI = EFeatureTestsPackage.eNS_URI;
    public static final String eDOMAIN_ID = EFeatureFactory.eDOMAIN_ID;
    public static final String eCONTEXT_ID = EFeatureFactory.eCONTEXT_ID;
   
    private boolean binary;
    private EditingDomain eDomain;
    private ResourceSet eResourceSet;
    private EFeatureContext eContext;
    private EFeatureContextFactory eContextFactory;
         
    // -----------------------------------------------------
    //  Constructors
    // -----------------------------------------------------
   
    public EFeatureTestsContextHelper() {
        this(true,false);
    }
  
    public EFeatureTestsContextHelper(boolean validate, boolean binary) {
        this(EFeatureContextFactory.eDefault(), validate, binary);
    }
   
    @SuppressWarnings("unchecked")
    public EFeatureTestsContextHelper(EFeatureContextFactory eFactory, boolean validate, boolean binary) {
        //
        // Save flags
        //
        this.binary = binary;
        //
        // Prepare hints
        //
        EFeatureHints eHints = new EFeatureHints();
        Set<EAttribute> eAttrSet = (Set<EAttribute>)eHints.get(EFeatureHints.EFEATURE_ID_ATTRIBUTES);
        eAttrSet.add(EFeatureTestsPackage.eINSTANCE.getEFeatureCompatibleData_ID());
        eAttrSet = (Set<EAttribute>)eHints.get(EFeatureHints.EFEATURE_SRID_ATTRIBUTES);
        eAttrSet.add(EFeatureTestsPackage.eINSTANCE.getEFeatureCompatibleData_SRID());
        eAttrSet = (Set<EAttribute>)eHints.get(EFeatureHints.EFEATURE_DEFAULT_ATTRIBUTES);
        eAttrSet.add(EFeatureTestsPackage.eINSTANCE.getEFeatureCompatibleData_Default());
        Set<String> eStrSet = (Set<String>)eHints.get(EFeatureHints.EFEATURE_DEFAULT_GEOMETRY_NAMES);
        eStrSet.add("geometry");
       
        //
        // Forward to default implementation
        //
        this.eContextFactory = eFactory;
        if(eFactory.contains(eCONTEXT_ID)) {
            this.eContext = eFactory.eContext(eCONTEXT_ID);
        } else {
            this.eContext = eFactory.create(eCONTEXT_ID,new EFeatureIDFactoryImpl(),eHints);
        }
        //
        // Add domain and package to context
        //
        this.eContext.eAdd(EFeatureTestsPackage.eINSTANCE);
        this.eContext.eAdd(eDOMAIN_ID,getEditingDomain());
        //
        // Validate context structure?
        //
        if(validate) {
            this.eContext.eStructure().validate();
        }
    }
   
    // -----------------------------------------------------
    //  EFeatureTestsContextHelper methods
    // -----------------------------------------------------
   
    public EFeatureContext eContext() {
        return eContext;
    }
   
    public EFeatureContextFactory eContextFactory() {
        return eContextFactory;
    }
   
    public ResourceSet getResourceSet() {       
        //
        // Initialize?
        //
        if(eResourceSet==null) {
            //
            // Get editing domain
            //
            EditingDomain eDomain = getEditingDomain();
            //
            // Get resource set from domain
            //
            eResourceSet = eDomain.getResourceSet();       
            //
            // Register the package to ensure it is available during loading.
            //
            eResourceSet.getPackageRegistry().
                put(eNS_URI,EFeatureTestsPackage.eINSTANCE);
            //
            // Register the EFeature resource factory to allow loading and saving XMI documents.
            //
            eResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().
                put((binary ? "bin": "xmi"), new EFeatureTestsResourceFactoryImpl(binary));
            //
            // Map resource
            //
        }
        return eResourceSet;
    }
   
    public EditingDomain getEditingDomain() {
        //
        // Initialize?
        //
        if(eDomain==null) {           
            //
            // Create an adapter factory that yields item providers.
            //
            ComposedAdapterFactory eFactory = new ComposedAdapterFactory(
                    ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
            //
            // Add generated item adapter to factory
            //
            eFactory.addAdapterFactory(new EFeatureTestsItemProviderAdapterFactory());
            //
            // Create a command stack
            //
            BasicCommandStack commandStack = new BasicCommandStack();
            //
            // Create and return the editing domain
            //
            eDomain = new AdapterFactoryEditingDomain(eFactory,commandStack);
        }
        return eDomain;
    }
   
    public EFeatureInfo eGetFeatureInfo(String eType) {
        return eContext().eStructure().eGetPackageInfo(eNS_URI).eGetFeatureInfo(eType);
    }

}
TOP

Related Classes of org.geotools.data.efeature.tests.impl.EFeatureTestsContextHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.