[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jboss-cvs-commits
Subject:    [jboss-cvs] jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql EJBQLParser.jjt JBossQLParser.jjt
From:       Alexey Loubyansky <loubyansky () users ! sourceforge ! net>
Date:       2004-06-29 8:25:38
Message-ID: E1BfDvu-0005zn-0B () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]

  User: loubyansky
  Date: 04/06/29 01:25:29

  Modified:    src/main/org/jboss/ejb/plugins/cmp/ejbql Tag: Branch_3_2
                        EJBQLParser.jjt JBossQLParser.jjt
  Log:
  proper indexOf implementation searching for reserved words in a query
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.2.4.4   +15 -5     jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/EJBQLParser.jjt
  
  Index: EJBQLParser.jjt
  ===================================================================
  RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/EJBQLParser.jjt,v
  retrieving revision 1.2.4.3
  retrieving revision 1.2.4.4
  diff -u -r1.2.4.3 -r1.2.4.4
  --- EJBQLParser.jjt	10 May 2004 09:25:17 -0000	1.2.4.3
  +++ EJBQLParser.jjt	29 Jun 2004 08:25:28 -0000	1.2.4.4
  @@ -46,7 +46,7 @@
    *
    * @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
    * @author <a href="mailto:alex@jboss.org">Alexey Loubyansky</a>
  - * @version $Revision: 1.2.4.3 $
  + * @version $Revision: 1.2.4.4 $
    */                            
   public class EJBQLParser {
      private Catalog catalog;
  @@ -66,14 +66,14 @@
         token_source.idManager = idManager;
   
         String lowerCase = ejbql.toLowerCase();
  -      int fromBeginIndex = lowerCase.indexOf(" from ");
  +      int fromBeginIndex = indexOf(lowerCase, "from");
         if(fromBeginIndex < 0) {
            throw new ParseException("FROM not found");
         }
   
  -      int fromEndIndex = lowerCase.indexOf(" where ");
  +      int fromEndIndex = indexOf(lowerCase, "where");
         if(fromEndIndex < 0) {
  -         fromEndIndex = lowerCase.indexOf("order by");
  +         fromEndIndex = indexOf(lowerCase, "order by");
         }
         if(fromEndIndex < 0) {
            fromEndIndex = ejbql.length();
  @@ -86,7 +86,7 @@
   
         // everything except for the from clause
         char[] sansFrom = ejbql.toCharArray();
  -      clear(sansFrom, fromBeginIndex + 6, fromEndIndex);
  +      clear(sansFrom, fromBeginIndex + 4, fromEndIndex);
   
         // From clause
         ReInit(new CharArrayReader(from));
  @@ -103,6 +103,16 @@
         return ejbqlNode;
      }
   
  +   private static final int indexOf(String ql, String word)
  +   {
  +      int i = ql.indexOf(word);
  +      while(i > 0 && (ql.charAt(i - 1) == '.'))
  +      {
  +         i = ql.indexOf(word, i + 1);
  +      }
  +      return i;
  +   }
  +
      private final void clear(char[] c, int beginIndex, int endIndex) {
         for(int i=beginIndex; i < endIndex; i++) {
            if(c[i]!='\r' && c[i]!='\n' && c[i]!='\t') {
  
  
  
  1.6.2.10  +17 -7     jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/JBossQLParser.jjt
  
  Index: JBossQLParser.jjt
  ===================================================================
  RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/ejbql/JBossQLParser.jjt,v
  retrieving revision 1.6.2.9
  retrieving revision 1.6.2.10
  diff -u -r1.6.2.9 -r1.6.2.10
  --- JBossQLParser.jjt	10 May 2004 09:25:17 -0000	1.6.2.9
  +++ JBossQLParser.jjt	29 Jun 2004 08:25:28 -0000	1.6.2.10
  @@ -47,7 +47,7 @@
    *
    * @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
    * @author <a href="mailto:alex@jboss.org">Alex Loubyansky</a>
  - * @version $Revision: 1.6.2.9 $
  + * @version $Revision: 1.6.2.10 $
    */
   public class JBossQLParser {
      private Catalog catalog;
  @@ -67,21 +67,21 @@
         token_source.idManager = idManager;
   
         String lowerCase = ejbql.toLowerCase();
  -      int fromBeginIndex = lowerCase.indexOf(" from ");
  +      int fromBeginIndex = indexOf(lowerCase, "from");
         if(fromBeginIndex < 0) {
            throw new ParseException("FROM not found");
         }
   
  -      int fromEndIndex = lowerCase.indexOf(" where ");
  +      int fromEndIndex = indexOf(lowerCase, "where");
         ///////////////////// CHANGED //////////////////////////////
         if(fromEndIndex < 0) {
  -         fromEndIndex = lowerCase.indexOf("order by");
  +         fromEndIndex = indexOf(lowerCase, "order by");
         }
         if(fromEndIndex < 0) {
  -         fromEndIndex = lowerCase.indexOf(" offset ");
  +         fromEndIndex = indexOf(lowerCase, "offset");
         }
         if(fromEndIndex < 0) {
  -         fromEndIndex = lowerCase.indexOf(" limit ");
  +         fromEndIndex = indexOf(lowerCase, "limit");
         }
         if(fromEndIndex < 0) {
            fromEndIndex = ejbql.length();
  @@ -95,7 +95,7 @@
   
         // everything except for the from clause
         char[] sansFrom = ejbql.toCharArray();
  -      clear(sansFrom, fromBeginIndex + 6, fromEndIndex);
  +      clear(sansFrom, fromBeginIndex + 4, fromEndIndex);
   
         // From clause
         ReInit(new CharArrayReader(from));
  @@ -112,6 +112,16 @@
         return ejbqlNode;
      }
   
  +   private static final int indexOf(String ql, String word)
  +   {
  +      int i = ql.indexOf(word);
  +      while(i > 0 && (ql.charAt(i - 1) == '.'))
  +      {
  +         i = ql.indexOf(word, i + 1);
  +      }
  +      return i;
  +   }
  +
      private final void clear(char[] c, int beginIndex, int endIndex) {
         for(int i=beginIndex; i < endIndex; i++) {
            if(c[i]!='\r' && c[i]!='\n' && c[i]!='\t') {
  
  
  


-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
jboss-cvs-commits mailing list
jboss-cvs-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-cvs-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic