[jboss-cvs] jboss-seam/src/main/org/jboss/seam/framework ...
Gavin King
gavin.king at jboss.com
Mon Feb 26 14:24:50 EST 2007
User: gavin
Date: 07/02/26 14:24:50
Modified: src/main/org/jboss/seam/framework EntityQuery.java
HibernateEntityQuery.java Query.java
Log:
refactor
Revision Changes Path
1.12 +2 -1 jboss-seam/src/main/org/jboss/seam/framework/EntityQuery.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EntityQuery.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/EntityQuery.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- EntityQuery.java 15 Feb 2007 17:52:53 -0000 1.11
+++ EntityQuery.java 26 Feb 2007 19:24:50 -0000 1.12
@@ -6,6 +6,7 @@
import javax.persistence.EntityManager;
import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.persistence.QueryParser;
/**
* A Query object for JPA.
@@ -136,7 +137,7 @@
Object parameterValue = parameters.get(i);
if ( isRestrictionParameterSet(parameterValue) )
{
- query.setParameter( "p" + (start + i), parameterValue );
+ query.setParameter( QueryParser.getParameterName(start + i), parameterValue );
}
}
}
1.11 +2 -1 jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityQuery.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: HibernateEntityQuery.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/HibernateEntityQuery.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- HibernateEntityQuery.java 14 Feb 2007 19:22:48 -0000 1.10
+++ HibernateEntityQuery.java 26 Feb 2007 19:24:50 -0000 1.11
@@ -4,6 +4,7 @@
import org.hibernate.Session;
import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.persistence.QueryParser;
/**
* A Query object for Hibernate.
@@ -131,7 +132,7 @@
Object parameterValue = parameters.get(i);
if ( isRestrictionParameterSet(parameterValue) )
{
- query.setParameter( "p" + (start + i), parameterValue );
+ query.setParameter( QueryParser.getParameterName(start + i), parameterValue );
}
}
}
1.22 +11 -61 jboss-seam/src/main/org/jboss/seam/framework/Query.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Query.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/framework/Query.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- Query.java 26 Feb 2007 18:13:05 -0000 1.21
+++ Query.java 26 Feb 2007 19:24:50 -0000 1.22
@@ -2,7 +2,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -10,9 +9,9 @@
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Transactional;
-import org.jboss.seam.core.Expressions;
import org.jboss.seam.core.Expressions.ValueBinding;
import org.jboss.seam.jsf.ListDataModel;
+import org.jboss.seam.persistence.QueryParser;
/**
* Base class for components which manage a query
@@ -131,71 +130,22 @@
{
if (parsedEjbql==null)
{
-
- queryParameters = new ArrayList<ValueBinding>();
- StringTokenizer ejbqlTokens = new StringTokenizer( getEjbql(), "#}", true );
- StringBuilder ejbqlBuilder = new StringBuilder( getEjbql().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(":p").append( queryParameters.size() );
- }
- else
- {
- ejbqlBuilder.append(token);
- }
- }
- parsedEjbql = ejbqlBuilder.toString();
+ QueryParser qp = new QueryParser(ejbql);
+ queryParameters = qp.getParameterValueBindings();
+ parsedEjbql = qp.getEjbql();
List<String> restrictionFragments = getRestrictions();
parsedRestrictions = new ArrayList<String>( restrictionFragments.size() );
restrictionParameters = new ArrayList<ValueBinding>( restrictionFragments.size() );
-
for ( String restriction: restrictionFragments )
{
- StringTokenizer tokens = new StringTokenizer(restriction, "#}", true);
- StringBuilder builder = new StringBuilder( restriction.length() );
- ValueBinding valueBinding = null;
- while ( tokens.hasMoreTokens() )
- {
- String token = tokens.nextToken();
- if ( "#".equals(token) )
- {
- if ( !tokens.hasMoreTokens() )
+ QueryParser rqp = new QueryParser( restriction, queryParameters.size() + restrictionParameters.size() );
+ if ( rqp.getParameterValueBindings().size()!=1 )
{
- throw new IllegalArgumentException("restriction terminates in #");
+ throw new IllegalArgumentException("there should be exactly one value binding in a restriction: " + restriction);
}
- String expressionToken = tokens.nextToken();
- if ( !expressionToken.startsWith("{") )
- {
- throw new IllegalArgumentException("missing { after # in restriction");
- }
- if ( !tokens.hasMoreTokens() )
- {
- throw new IllegalArgumentException("missing } after expression in restriction");
- }
- String expression = token + expressionToken + tokens.nextToken();
- valueBinding = Expressions.instance().createValueBinding(expression);
- builder.append(":p").append( queryParameters.size() + restrictionParameters.size() );
- }
- else
- {
- builder.append(token);
- }
-
- }
-
- if (valueBinding==null)
- {
- throw new IllegalArgumentException("no value binding in restriction: " + restriction);
- }
-
- parsedRestrictions.add( builder.toString() );
- restrictionParameters.add(valueBinding);
+ parsedRestrictions.add( rqp.getEjbql() );
+ restrictionParameters.addAll( rqp.getParameterValueBindings() );
}
}
More information about the jboss-cvs-commits
mailing list