blob: 58994f7bd9a74c9661256d8882c9b8d7cb2472ac [file] [log] [blame]
/**
* <copyright>
*
* 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
* </copyright>
*
* $Id: HbBaseSessionDataStore.java,v 1.11 2010/11/11 10:28:18 mtaal Exp $
*/
package org.eclipse.emf.teneo.hibernate;
import java.io.Serializable;
import java.sql.Connection;
import java.util.Map;
import java.util.Set;
import javax.naming.NamingException;
import javax.naming.Reference;
import org.hibernate.HibernateException;
import org.hibernate.Interceptor;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.StatelessSession;
import org.hibernate.engine.spi.FilterDefinition;
import org.hibernate.internal.SessionFactoryImpl;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.metadata.CollectionMetadata;
import org.hibernate.stat.Statistics;
/**
* Holds the sessionfactory related methods, makes the HbSessionDataStore better readable.
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.11 $
*/
public abstract class HbBaseSessionDataStore extends HbDataStore implements SessionFactory {
private static final long serialVersionUID = 1L;
/** The persistency manager factory */
private SessionFactory sessionFactory;
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.teneo.hibernate.HbDataStore#close()
*/
@Override
public void close() {
if (isInitialized()) {
closeSessionFactory();
// this will call the close method again but because the
// datastore
// is not initialized anymore it won't get here
HbHelper.INSTANCE.deRegisterDataStore(this);
}
}
/**
* @return the sessionFactory
*/
@Override
public SessionFactory getSessionFactory() {
if (!isInitialized()) {
initialize();
}
return sessionFactory;
}
// close session factory if set
protected void closeSessionFactory() {
if (sessionFactory != null && !sessionFactory.isClosed()) {
sessionFactory.close();
sessionFactory = null;
}
// do set initialized false after closing it
setInitialized(false);
}
/**
* @param sessionFactory
* the sessionFactory to set
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@SuppressWarnings({ "rawtypes", "deprecation" })
public void evict(Class persistentClass, Serializable id) throws HibernateException {
getSessionFactory().evict(persistentClass, id);
}
@SuppressWarnings({ "rawtypes", "deprecation" })
public void evict(Class persistentClass) throws HibernateException {
getSessionFactory().evict(persistentClass);
}
@SuppressWarnings({ "deprecation" })
public void evictCollection(String roleName, Serializable id) throws HibernateException {
getSessionFactory().evictCollection(roleName, id);
}
@SuppressWarnings({ "deprecation" })
public void evictCollection(String roleName) throws HibernateException {
getSessionFactory().evictCollection(roleName);
}
@SuppressWarnings({ "deprecation" })
public void evictEntity(String entityName, Serializable id) throws HibernateException {
getSessionFactory().evictEntity(entityName, id);
}
@SuppressWarnings({ "deprecation" })
public void evictEntity(String entityName) throws HibernateException {
getSessionFactory().evictEntity(entityName);
}
@SuppressWarnings({ "deprecation" })
public void evictQueries() throws HibernateException {
getSessionFactory().evictQueries();
}
@SuppressWarnings({ "deprecation" })
public void evictQueries(String cacheRegion) throws HibernateException {
getSessionFactory().evictQueries(cacheRegion);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public Map getAllClassMetadata() throws HibernateException {
return getSessionFactory().getAllClassMetadata();
}
@SuppressWarnings({ "rawtypes" })
public Map getAllCollectionMetadata() throws HibernateException {
return getSessionFactory().getAllCollectionMetadata();
}
@SuppressWarnings({ "rawtypes" })
public ClassMetadata getClassMetadata(Class persistentClass) throws HibernateException {
return getSessionFactory().getClassMetadata(persistentClass);
}
public ClassMetadata getClassMetadata(String entityName) throws HibernateException {
return getSessionFactory().getClassMetadata(entityName);
}
public CollectionMetadata getCollectionMetadata(String roleName) throws HibernateException {
return getSessionFactory().getCollectionMetadata(roleName);
}
public Session getCurrentSession() throws HibernateException {
return getSessionFactory().getCurrentSession();
}
@SuppressWarnings("rawtypes")
public Set getDefinedFilterNames() {
return getSessionFactory().getDefinedFilterNames();
}
public FilterDefinition getFilterDefinition(String filterName) throws HibernateException {
return getSessionFactory().getFilterDefinition(filterName);
}
public Reference getReference() throws NamingException {
return getSessionFactory().getReference();
}
public Statistics getStatistics() {
return getSessionFactory().getStatistics();
}
public boolean isClosed() {
return getSessionFactory().isClosed();
}
public Session openSession() throws HibernateException {
return getSessionFactory().openSession();
}
public Session openSession(Connection connection, Interceptor interceptor) {
return ((SessionFactoryImpl) getSessionFactory()).withOptions().interceptor(interceptor)
.connection(connection).openSession();
}
public Session openSession(Connection connection) {
return ((SessionFactoryImpl) getSessionFactory()).withOptions().connection(connection)
.openSession();
}
public Session openSession(Interceptor interceptor) throws HibernateException {
return ((SessionFactoryImpl) getSessionFactory()).withOptions().interceptor(interceptor)
.openSession();
}
public StatelessSession openStatelessSession() {
return getSessionFactory().openStatelessSession();
}
public StatelessSession openStatelessSession(Connection connection) {
return getSessionFactory().openStatelessSession(connection);
}
}