Package org.apache.tuscany.sdo.helper

Source Code of org.apache.tuscany.sdo.helper.HelperContextImpl

/**
*
*  Licensed to the Apache Software Foundation (ASF) under one
*  or more contributor license agreements.  See the NOTICE file
*  distributed with this work for additional information
*  regarding copyright ownership.  The ASF licenses this file
*  to you under the Apache License, Version 2.0 (the
*  "License"); you may not use this file except in compliance
*  with the License.  You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing,
*  software distributed under the License is distributed on an
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
*  KIND, either express or implied.  See the License for the
*  specific language governing permissions and limitations
*  under the License.
*/

package org.apache.tuscany.sdo.helper;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.tuscany.sdo.SDOPackage;
import org.apache.tuscany.sdo.api.XMLStreamHelper;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.change.ChangePackage;
import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
import org.eclipse.emf.ecore.util.ExtendedMetaData;
import org.eclipse.emf.ecore.xml.namespace.XMLNamespacePackage;
import org.eclipse.emf.ecore.xml.type.XMLTypePackage;

import commonj.sdo.helper.CopyHelper;
import commonj.sdo.helper.DataFactory;
import commonj.sdo.helper.DataHelper;
import commonj.sdo.helper.EqualityHelper;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.TypeHelper;
import commonj.sdo.helper.XMLHelper;
import commonj.sdo.helper.XSDHelper;

public class HelperContextImpl implements HelperContext {
    /*
     * Relationship: HelperContext*Impl* ---1:1---> ExtendedMetaData ---1:1--->
     * Map (:defaultOption) <---1:1---> TypeHelper <---1:1---> XMLHelper
     * <---1:1---> XMLStreamHelper <---1:1---> XSDHelper <---1:1---> DataFactory
     */

    protected ExtendedMetaData extendedMetaData;
    protected DataFactory dataFactory;
    protected TypeHelper typeHelper;
    protected XMLHelper xmlHelper;
    protected XSDHelper xsdHelper;
    protected XMLStreamHelper xmlStreamHelper;
    protected Map defaultOptions = null;
   
    public HelperContextImpl(ExtendedMetaData extendedMetaData, boolean extensibleNamespaces) {
        this.defaultOptions = null;
        this.extendedMetaData = extendedMetaData;
        typeHelper = new TypeHelperImpl(this);
        dataFactory = new DataFactoryImpl(this);
        xmlHelper = new XMLHelperImpl(this);
        xsdHelper = new XSDHelperImpl(this, null, extensibleNamespaces);
        xmlStreamHelper = new XMLStreamHelperImpl(this);
    }
   

    public HelperContextImpl(ExtendedMetaData extendedMetaData, boolean extensibleNamespaces, Map options) {
        this.defaultOptions = options;
        this.extendedMetaData = extendedMetaData;
        typeHelper = new TypeHelperImpl(this);
        dataFactory = new DataFactoryImpl(this);
        xmlHelper = new XMLHelperImpl(this);
        xsdHelper = new XSDHelperImpl(this, null, extensibleNamespaces);
        xmlStreamHelper = new XMLStreamHelperImpl(this);
    }

    // many places this is called in existing code
    // This is used for supporting the deprecated util -
    // org.apache.tuscany.sdo.util.SDOUtil
    // Once we conpletely remove this deprecated util, we can remove the below
    // constructor
    public HelperContextImpl(TypeHelper scope) {
        this(scope, null);
    }


    public HelperContextImpl(TypeHelper scope, Map options) {
        this.defaultOptions = options;
        typeHelper = scope;
        this.extendedMetaData = ((TypeHelperImpl)scope).getExtendedMetaData();
        dataFactory = new DataFactoryImpl(this);
        xmlHelper = new XMLHelperImpl(this);
        xsdHelper = new XSDHelperImpl(this);
        xmlStreamHelper = new XMLStreamHelperImpl(this);
    }

    public HelperContextImpl(boolean extensibleNamespaces) {
        this(new SDOExtendedMetaDataImpl(new EPackageRegistryImpl(getBuiltInModelRegistry())), extensibleNamespaces);
    }


    public HelperContextImpl(boolean extensibleNamespaces, Map options) {
        this(new SDOExtendedMetaDataImpl(new EPackageRegistryImpl(getBuiltInModelRegistry())), extensibleNamespaces,
             options);
    }

    static protected EPackage.Registry builtInModelRegistry = null;

    static public EPackage.Registry getBuiltInModelRegistry() {
        if (builtInModelRegistry == null) {
            EPackageRegistryImpl registry = new EPackageRegistryImpl();
            for (Iterator iter = TypeHelperImpl.getBuiltInModels().iterator(); iter.hasNext();) {
                EPackage ePackage = (EPackage)iter.next();
                registry.put(ePackage.getNsURI(), ePackage);
            }
           
            registry.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
            registry.put(XMLTypePackage.eNS_URI, XMLTypePackage.eINSTANCE);
            registry.put(ChangePackage.eNS_URI, ChangePackage.eINSTANCE);
            registry.put(XMLNamespacePackage.eNS_URI, XMLNamespacePackage.eINSTANCE);
            registry.put(SDOPackage.eNS_URI, SDOPackage.eINSTANCE);
           
            builtInModelRegistry = registry;
        }
        return builtInModelRegistry;
    }

    public CopyHelper getCopyHelper() {
        return CopyHelper.INSTANCE;
    }

    public DataFactory getDataFactory() {
        return dataFactory;
    }

    public DataHelper getDataHelper() {
        return DataHelper.INSTANCE;
    }

    public EqualityHelper getEqualityHelper() {
        return EqualityHelper.INSTANCE;
    }

    public TypeHelper getTypeHelper() {
        return typeHelper;
    }

    public XMLHelper getXMLHelper() {
        return xmlHelper;
    }

    public XMLStreamHelper getXMLStreamHelper() {
        return xmlStreamHelper;
    }

    public XSDHelper getXSDHelper() {
        return xsdHelper;
    }

    public void setOptions(Map options) {
        this.defaultOptions = options;
    }

    public Map getOptions() {
        return this.defaultOptions;
    }

    public Map getMergedOption(Map options) {
        Map mergedOptions = null;// copy to be used for merge

        if (defaultOptions == null) {
            return options;
        }
       
        mergedOptions = new HashMap(defaultOptions);
        if (options == null) {
            return mergedOptions;
        }
        mergedOptions.putAll(options);
       
        return mergedOptions;
    }

    public ExtendedMetaData getExtendedMetaData() {
        return extendedMetaData;
    }
}
TOP

Related Classes of org.apache.tuscany.sdo.helper.HelperContextImpl

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.