[jboss-cvs] jboss-seam/src/main/org/jboss/seam/persistence ...

Gavin King gavin.king at jboss.com
Sun Feb 25 14:06:22 EST 2007


  User: gavin   
  Date: 07/02/25 14:06:22

  Added:       src/main/org/jboss/seam/persistence  EntityManagerProxy.java
  Log:
  EL in EJB-QL :-)
  
  Revision  Changes    Path
  1.1      date: 2007/02/25 19:06:22;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/persistence/EntityManagerProxy.java
  
  Index: EntityManagerProxy.java
  ===================================================================
  package org.jboss.seam.persistence;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.util.StringTokenizer;
  
  import javax.persistence.EntityManager;
  import javax.persistence.EntityTransaction;
  import javax.persistence.FlushModeType;
  import javax.persistence.LockModeType;
  import javax.persistence.Query;
  
  import org.jboss.seam.core.Expressions;
  import org.jboss.seam.core.Expressions.ValueBinding;
  
  public class EntityManagerProxy implements EntityManager
  {
     private EntityManager delegate;
  
     public EntityManagerProxy(EntityManager entityManager)
     {
        delegate = entityManager;
     }
  
     public void clear()
     {
        delegate.clear();
     }
  
     public void close()
     {
        delegate.close();
     }
  
     public boolean contains(Object entity)
     {
        return delegate.contains(entity);
     }
  
     public Query createNamedQuery(String name)
     {
        return delegate.createNamedQuery(name);
     }
  
     public Query createNativeQuery(String sql, Class clazz)
     {
        return delegate.createNativeQuery(sql, clazz);
     }
  
     public Query createNativeQuery(String sql, String lang)
     {
        return delegate.createNativeQuery(sql, lang);
     }
  
     public Query createNativeQuery(String sql)
     {
        return delegate.createNativeQuery(sql);
     }
  
     public Query createQuery(String ejbql)
     {
        List<ValueBinding> queryParameters = new ArrayList<ValueBinding>();
        StringTokenizer ejbqlTokens = new StringTokenizer( ejbql, "#}", true );
        StringBuilder ejbqlBuilder = new StringBuilder( ejbql.length() );
        while ( ejbqlTokens.hasMoreTokens() )
        {
           String token = ejbqlTokens.nextToken();
           if ( "#".equals(token) )
           {
              String expression = token + ejbqlTokens.nextToken() + ejbqlTokens.nextToken();
              queryParameters.add( Expressions.instance().createValueBinding(expression) );
              ejbqlBuilder.append(":el").append( queryParameters.size() );
           }
           else
           {
              ejbqlBuilder.append(token);
           }
        }
        Query query = delegate.createQuery( ejbqlBuilder.toString() );
        for (int i=1; i<=queryParameters.size(); i++)
        {
           query.setParameter( "el" + i, queryParameters.get(i-1).getValue() );
        }
        return query;
     }
  
     public <T> T find(Class<T> clazz, Object id)
     {
        return delegate.find(clazz, id);
     }
  
     public void flush()
     {
        delegate.flush();
     }
  
     public Object getDelegate()
     {
        return delegate.getDelegate();
     }
  
     public FlushModeType getFlushMode()
     {
        return delegate.getFlushMode();
     }
  
     public <T> T getReference(Class<T> clazz, Object id)
     {
        return delegate.getReference(clazz, id);
     }
  
     public EntityTransaction getTransaction()
     {
        return delegate.getTransaction();
     }
  
     public boolean isOpen()
     {
        return delegate.isOpen();
     }
  
     public void joinTransaction()
     {
        delegate.joinTransaction();
     }
  
     public void lock(Object entity, LockModeType lm)
     {
        delegate.lock(entity, lm);
     }
  
     public <T> T merge(T entity)
     {
        return delegate.merge(entity);
     }
  
     public void persist(Object entity)
     {
        delegate.persist(entity);
     }
  
     public void refresh(Object entity)
     {
        delegate.refresh(entity);
     }
  
     public void remove(Object entity)
     {
        delegate.remove(entity);
     }
  
     public void setFlushMode(FlushModeType fm)
     {
        delegate.setFlushMode(fm);
     }
  }
  
  
  



More information about the jboss-cvs-commits mailing list