User: mgroot
Date: 01/01/21 06:33:48
Modified: src/main/org/jboss/ejb/plugins/jaws/jdbc
JDBCDefinedFinderCommand.java
Log:
Empty query elements in jaws.xml can now be used for
select all queries, for example in combination with ordering.
Previous behaviour was an unspecified crash.
Revision Changes Path
1.9 +30 -20
jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java
Index: JDBCDefinedFinderCommand.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jaws/jdbc/JDBCDefinedFinderCommand.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JDBCDefinedFinderCommand.java 2001/01/02 22:43:48 1.8
+++ JDBCDefinedFinderCommand.java 2001/01/21 14:33:48 1.9
@@ -23,7 +23,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
public class JDBCDefinedFinderCommand extends JDBCFinderCommand
{
@@ -37,24 +37,26 @@
{
super(factory, f.getName());
- // Replace placeholders with ?
+ // Replace placeholders with ?, but only if query is defined
String query = "";
- StringTokenizer finderQuery = new StringTokenizer(f.getQuery(),"{}", true);
ArrayList parameters = new ArrayList();
-
- while (finderQuery.hasMoreTokens())
- {
- String t = finderQuery.nextToken();
- if (t.equals("{"))
- {
- query += "?";
- String idx = finderQuery.nextToken(); // Remove number
- parameters.add(new Integer(idx));
- finderQuery.nextToken(); // Remove }
- } else
- query += t;
- }
-
+ if (f.getQuery() != null) {
+ StringTokenizer finderQuery = new StringTokenizer(f.getQuery(),"{}",
true);
+
+ while (finderQuery.hasMoreTokens())
+ {
+ String t = finderQuery.nextToken();
+ if (t.equals("{"))
+ {
+ query += "?";
+ String idx = finderQuery.nextToken(); // Remove number
+ parameters.add(new Integer(idx));
+ finderQuery.nextToken(); // Remove }
+ } else
+ query += t;
+ }
+ }
+
// Copy index numbers to parameterArray
parameterArray = new int[parameters.size()];
for (int i = 0; i < parameterArray.length; i++)
@@ -76,9 +78,17 @@
(f.getOrder() == null || f.getOrder().equals("") ? "" :
","+f.getOrder()) +
" FROM " + jawsEntity.getTableName() + " " + query;
} else {
- sql = "SELECT " + getPkColumnList() +
- (f.getOrder() == null || f.getOrder().equals("") ? "" :
","+f.getOrder()) +
- " FROM " + jawsEntity.getTableName() + " WHERE " + query;
+ // regular query; check if query is empty,
+ // if so, this is a select all and WHERE should not be used
+ if (f.getQuery() == null) {
+ sql = "SELECT " + getPkColumnList() +
+ (f.getOrder() == null || f.getOrder().equals("") ? "" :
","+f.getOrder()) +
+ " FROM " + jawsEntity.getTableName();
+ } else {
+ sql = "SELECT " + getPkColumnList() +
+ (f.getOrder() == null || f.getOrder().equals("") ? "" :
","+f.getOrder()) +
+ " FROM " + jawsEntity.getTableName() + " WHERE " + query;
+ }
}
if (f.getOrder() != null && !f.getOrder().equals(""))
{