All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.emf.teneo.hibernate.HbContext Maven / Gradle / Ivy

/**
 * 
 *
 * Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) and others
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Martin Taal
 * 
 *
 * $Id: HbContext.java,v 1.9 2008/02/28 07:08:24 mtaal Exp $
 */

package org.eclipse.emf.teneo.hibernate;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.teneo.PersistenceOptions;
import org.eclipse.emf.teneo.extension.ExtensionManager;
import org.eclipse.emf.teneo.extension.ExtensionManagerAware;
import org.eclipse.emf.teneo.extension.ExtensionPoint;
import org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerAccessor;
import org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerFeatureIDAccessor;
import org.eclipse.emf.teneo.hibernate.mapping.elist.FeatureMapEntryTuplizer;
import org.eclipse.emf.teneo.hibernate.mapping.property.EAttributePropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.EReferencePropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapEntryFeatureURIPropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapEntryPropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapPropertyHandler;
import org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler;
import org.eclipse.emf.teneo.hibernate.tuplizer.EMFComponentTuplizer;
import org.eclipse.emf.teneo.hibernate.tuplizer.EMFTuplizer;
import org.eclipse.emf.teneo.mapping.strategy.EntityNameStrategy;
import org.hibernate.Interceptor;
import org.hibernate.cfg.Configuration;
import org.hibernate.property.PropertyAccessor;

/**
 * The HbContext contains factory methods or configuration methods for different objects or other
 * parameters used by the Hibernate EMF layer. This class can be overridden to instantiate your own
 * tuplizers, accessors etc.
 * 
 * @author Martin Taal
 * @version $Revision: 1.9 $
 */
public class HbContext implements ExtensionPoint, ExtensionManagerAware {

	private ExtensionManager extensionManager;

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#getEMFTuplizerClass(org.hibernate
	 * .cfg.Configuration)
	 */
	public Class getEMFTuplizerClass(Configuration hbConfiguration) {
		return EMFTuplizer.class;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#getEMFComponentTuplizerClass(
	 * org.hibernate.cfg.Configuration)
	 */
	public Class getEMFComponentTuplizerClass(Configuration hbConfiguration) {
		return EMFComponentTuplizer.class;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#getFeatureMapEntryTuplizer(org
	 * .hibernate.cfg.Configuration)
	 */
	public Class getFeatureMapEntryTuplizer(Configuration hbConfiguration) {
		return FeatureMapEntryTuplizer.class;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createInterceptor(org.hibernate
	 * .cfg.Configuration)
	 */
	public Interceptor createInterceptor(Configuration hbConfiguration, EntityNameStrategy ens) {
		return extensionManager.getExtension(EMFInterceptor.class);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext# createFeatureMapEntryFeatureURIAccessor()
	 */
	public PropertyAccessor createFeatureMapEntryFeatureURIAccessor() {
		return extensionManager.getExtension(FeatureMapEntryFeatureURIPropertyHandler.class);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createFeatureMapEntryAccessor
	 * (org.eclipse.emf.ecore.EStructuralFeature)
	 */
	public PropertyAccessor createFeatureMapEntryAccessor(EStructuralFeature feature) {
		final FeatureMapEntryPropertyHandler handler = extensionManager
				.getExtension(FeatureMapEntryPropertyHandler.class);
		handler.initialize(feature);
		return handler;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createVersionAccessor()
	 */
	public PropertyAccessor createVersionAccessor() {
		return extensionManager.getExtension(VersionPropertyHandler.class);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createEContainerAccessor()
	 */
	public PropertyAccessor createEContainerAccessor() {
		return extensionManager.getExtension(EContainerAccessor.class);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createEContainerFeatureIDAccessor ()
	 */
	public PropertyAccessor createEContainerFeatureIDAccessor() {
		return extensionManager.getExtension(EContainerFeatureIDAccessor.class);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createFeatureMapPropertyAccessor
	 * (org.eclipse.emf.ecore.EStructuralFeature)
	 */
	public PropertyAccessor createFeatureMapPropertyAccessor(EStructuralFeature eFeature) {
		final FeatureMapPropertyHandler fmh = extensionManager
				.getExtension(FeatureMapPropertyHandler.class);
		fmh.initialize(eFeature);
		return fmh;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createEListAccessor(org.eclipse
	 * .emf.ecore.EStructuralFeature)
	 */
	public PropertyAccessor createEListAccessor(EStructuralFeature eFeature, boolean extraLazy,
			boolean newEMapMapping) {
		final EListPropertyHandler handler = extensionManager.getExtension(EListPropertyHandler.class);
		handler.initialize(eFeature, extraLazy, newEMapMapping);
		return handler;
	}

	public PropertyAccessor createEListAccessor(EStructuralFeature eFeature, boolean extraLazy,
			boolean newEMapMapping, PersistenceOptions po) {
		EListPropertyHandler eListPropertyHandler = (EListPropertyHandler) createEListAccessor(
				eFeature, extraLazy, newEMapMapping);
		eListPropertyHandler.setPersistenceOptions(po);
		return eListPropertyHandler;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createEReferenceAccessor(org.
	 * eclipse.emf.ecore.EReference)
	 */
	public PropertyAccessor createEReferenceAccessor(EReference eReference) {
		final EReferencePropertyHandler handler = extensionManager
				.getExtension(EReferencePropertyHandler.class);
		handler.initialize(eReference);
		return handler;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.hibernate.HbContext#createEAttributeAccessor(org.
	 * eclipse.emf.ecore.EAttribute)
	 */
	public PropertyAccessor createEAttributeAccessor(EAttribute eAttribute) {
		return new EAttributePropertyHandler(eAttribute);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.emf.teneo.extension.ExtensionManagerAware#setExtensionManager
	 * (org.eclipse.emf.teneo.extension.ExtensionManager)
	 */
	public void setExtensionManager(ExtensionManager extensionManager) {
		this.extensionManager = extensionManager;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy