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(""))
         {
  
  
  

Reply via email to