[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