Save This Page
Home » hibernate-search-src-20081106 » org.hibernate » search » jpa » impl » [javadoc | source]
    1   // $Id: FullTextEntityManagerImpl.java 14845 2008-07-03 12:41:06Z hardy.ferentschik $
    2   package org.hibernate.search.jpa.impl;
    3   
    4   import java.io.Serializable;
    5   import javax.persistence.EntityManager;
    6   import javax.persistence.FlushModeType;
    7   import javax.persistence.LockModeType;
    8   import javax.persistence.Query;
    9   import javax.persistence.EntityTransaction;
   10   
   11   import org.hibernate.search.jpa.FullTextEntityManager;
   12   import org.hibernate.search.jpa.FullTextQuery;
   13   import org.hibernate.search.SearchFactory;
   14   import org.hibernate.search.SearchException;
   15   import org.hibernate.search.FullTextSession;
   16   import org.hibernate.search.Search;
   17   import org.hibernate.Session;
   18   
   19   /**
   20    * @author Emmanuel Bernard
   21    */
   22   public class FullTextEntityManagerImpl implements FullTextEntityManager, Serializable {
   23   	private final EntityManager em;
   24   	private FullTextSession ftSession;
   25   
   26   	public FullTextEntityManagerImpl(EntityManager em) {
   27   		this.em = em;
   28   	}
   29   
   30   	private FullTextSession getFullTextSession() {
   31   		if ( ftSession == null ) {
   32   			Object delegate = em.getDelegate();
   33   			if ( delegate == null ) {
   34   				throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager (no delegate)");
   35   			}
   36   			else if ( Session.class.isAssignableFrom( delegate.getClass() ) ) {
   37   				ftSession = Search.getFullTextSession( (Session) delegate );
   38   			}
   39   			else if ( EntityManager.class.isAssignableFrom( delegate.getClass() ) ) {
   40   				//Some app servers wrap the EM twice
   41   				delegate = ( (EntityManager) delegate).getDelegate();
   42   				if ( delegate == null ) {
   43   					throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager (no delegate)");
   44   				}
   45   				else if ( Session.class.isAssignableFrom( delegate.getClass() ) ) {
   46   					ftSession = Search.getFullTextSession( (Session) delegate );
   47   				}
   48   				else {
   49   					throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager: " + delegate.getClass() );
   50   				}
   51   			}
   52   			else {
   53   				throw new SearchException("Trying to use Hibernate Search without an Hibernate EntityManager: " + delegate.getClass() );
   54   			}
   55   		}
   56   		return ftSession;
   57   	}
   58   
   59   	public FullTextQuery createFullTextQuery(org.apache.lucene.search.Query luceneQuery, Class... entities) {
   60   		FullTextSession ftSession = getFullTextSession();
   61   		return new FullTextQueryImpl( ftSession.createFullTextQuery( luceneQuery, entities ), ftSession );
   62   	}
   63   
   64   	public void index(Object entity) {
   65   		getFullTextSession().index( entity );
   66   	}
   67   
   68   	public SearchFactory getSearchFactory() {
   69   		return getFullTextSession().getSearchFactory();
   70   	}
   71   
   72   	public void purge(Class entityType, Serializable id) {
   73   		getFullTextSession().purge( entityType, id );
   74   	}
   75   
   76   	public void purgeAll(Class entityType) {
   77   		getFullTextSession().purgeAll( entityType );
   78   	}
   79   
   80   	public void flushToIndexes() {
   81   		getFullTextSession().flushToIndexes();
   82   	}
   83   
   84   
   85   	public void persist(Object entity) {
   86   		em.persist( entity );
   87   	}
   88   
   89   	public <T> T merge(T entity) {
   90   		return em.merge( entity );
   91   	}
   92   
   93   	public void remove(Object entity) {
   94   		em.remove( entity );
   95   	}
   96   
   97   	public <T> T find(Class<T> entityClass, Object primaryKey) {
   98   		return em.find( entityClass, primaryKey );
   99   	}
  100   
  101   	public <T> T getReference(Class<T> entityClass, Object primaryKey) {
  102   		return em.getReference( entityClass, primaryKey );
  103   	}
  104   
  105   	public void flush() {
  106   		em.flush();
  107   	}
  108   
  109   	public void setFlushMode(FlushModeType flushMode) {
  110   		em.setFlushMode( flushMode );
  111   	}
  112   
  113   	public FlushModeType getFlushMode() {
  114   		return em.getFlushMode();
  115   	}
  116   
  117   	public void lock(Object entity, LockModeType lockMode) {
  118   		em.lock( entity, lockMode );
  119   	}
  120   
  121   	public void refresh(Object entity) {
  122   		em.refresh( entity );
  123   	}
  124   
  125   	public void clear() {
  126   		em.clear();
  127   	}
  128   
  129   	public boolean contains(Object entity) {
  130   		return em.contains( entity );
  131   	}
  132   
  133   	public Query createQuery(String ejbqlString) {
  134   		return em.createQuery( ejbqlString );
  135   	}
  136   
  137   	public Query createNamedQuery(String name) {
  138   		return em.createNamedQuery( name );
  139   	}
  140   
  141   	public Query createNativeQuery(String sqlString) {
  142   		return em.createNativeQuery( sqlString );
  143   	}
  144   
  145   	public Query createNativeQuery(String sqlString, Class resultClass) {
  146   		return em.createNativeQuery( sqlString, resultClass );
  147   	}
  148   
  149   	public Query createNativeQuery(String sqlString, String resultSetMapping) {
  150   		return em.createNativeQuery( sqlString, resultSetMapping );
  151   	}
  152   
  153   	public void joinTransaction() {
  154   		em.joinTransaction();
  155   	}
  156   
  157   	public Object getDelegate() {
  158   		return em.getDelegate();
  159   	}
  160   
  161   	public void close() {
  162   		em.close();
  163   	}
  164   
  165   	public boolean isOpen() {
  166   		return em.isOpen();
  167   	}
  168   
  169   	public EntityTransaction getTransaction() {
  170   		return em.getTransaction();
  171   	}
  172   }

Save This Page
Home » hibernate-search-src-20081106 » org.hibernate » search » jpa » impl » [javadoc | source]