Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/query In directory sc8-pr-cvs1:/tmp/cvs-serv20166/cirrus/hibernate/query Modified Files: ClauseParser.java FromParser.java OrderByParser.java Parser.java PreprocessingParser.java SelectParser.java WhereParser.java Log Message: fixed broken line-endings and added a test Index: ClauseParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/ClauseParser.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ClauseParser.java 19 Nov 2002 15:28:06 -0000 1.16 --- ClauseParser.java 26 Nov 2002 03:35:44 -0000 1.17 *************** *** 10,14 **** /** * Parses the hibernate query into its constituent clauses. ! */ public class ClauseParser implements Parser { --- 10,14 ---- /** * Parses the hibernate query into its constituent clauses. ! */ public class ClauseParser implements Parser { *************** *** 105,109 **** cacheSelectTokens = false; } ! } ! --- 105,109 ---- cacheSelectTokens = false; } ! } ! Index: FromParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/FromParser.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** FromParser.java 19 Nov 2002 15:28:06 -0000 1.10 --- FromParser.java 26 Nov 2002 03:35:44 -0000 1.11 *************** *** 16,20 **** private String name; private PathExpressionParser peParser = new PathExpressionParser(); ! public void token(String token, QueryTranslator q) throws QueryException { --- 16,20 ---- private String name; private PathExpressionParser peParser = new PathExpressionParser(); ! public void token(String token, QueryTranslator q) throws QueryException { *************** *** 68,72 **** public void end(QueryTranslator q) { } ! } ! --- 68,72 ---- public void end(QueryTranslator q) { } ! } ! Index: OrderByParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/OrderByParser.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** OrderByParser.java 19 Nov 2002 15:28:07 -0000 1.12 --- OrderByParser.java 26 Nov 2002 03:35:44 -0000 1.13 *************** *** 38,42 **** public void end(QueryTranslator q) throws QueryException { } ! } --- 38,42 ---- public void end(QueryTranslator q) throws QueryException { } ! } Index: Parser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/Parser.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Parser.java 29 Jul 2002 07:27:42 -0000 1.4 --- Parser.java 26 Nov 2002 03:35:44 -0000 1.5 *************** *** 16,18 **** public void end(QueryTranslator q) throws QueryException; } ! --- 16,18 ---- public void end(QueryTranslator q) throws QueryException; } ! Index: PreprocessingParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/PreprocessingParser.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** PreprocessingParser.java 20 Nov 2002 07:06:44 -0000 1.2 --- PreprocessingParser.java 26 Nov 2002 03:35:44 -0000 1.3 *************** *** 1,108 **** ! //$Id$ ! package cirrus.hibernate.query; ! ! import java.util.HashSet; ! import java.util.Map; ! import java.util.Set; ! ! import cirrus.hibernate.QueryException; ! ! /** ! * ! */ ! public class PreprocessingParser implements Parser { ! ! private static final Set operators; ! static { ! operators = new HashSet(); ! operators.add("<="); ! operators.add(">="); ! operators.add("=>"); ! operators.add("=<"); ! operators.add("!="); ! operators.add("<>"); ! operators.add("!#"); ! operators.add("!~"); ! operators.add("!<"); ! operators.add("!>"); ! operators.add("is not"); ! operators.add("not like"); ! operators.add("not in"); ! operators.add("not between"); ! operators.add("not exists"); ! } ! ! private Map replacements; ! private boolean quoted; ! private StringBuffer quotedString; ! private ClauseParser parser = new ClauseParser(); ! private String lastToken; ! ! public PreprocessingParser(Map replacements) { ! this.replacements=replacements; ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#token(String, QueryTranslator) ! */ ! public void token(String token, QueryTranslator q) throws QueryException { ! ! //handle quoted strings ! if (quoted) { ! quotedString.append(token); ! } ! if ( "'".equals(token) ) { ! if (quoted) { ! token = quotedString.toString(); ! } ! else { ! quotedString = new StringBuffer(20).append(token); ! } ! quoted = !quoted; ! } ! if (quoted) return; ! ! //ignore whitespace ! if ( ParserHelper.isWhitespace(token) ) return; ! ! //do replacements ! String substoken = (String) replacements.get(token); ! token = (substoken==null) ? token : substoken; ! ! //handle <=, >=, !=, is not, not between, not in ! if (lastToken==null) { ! lastToken=token; ! } ! else { ! String doubleToken = (token.length()>1) ? ! lastToken + ' ' + token : ! lastToken + token; ! if ( operators.contains(doubleToken) ) { ! parser.token(doubleToken, q); ! lastToken=null; ! } ! else { ! parser.token(lastToken, q); ! lastToken=token; ! } ! } ! ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#start(QueryTranslator) ! */ ! public void start(QueryTranslator q) throws QueryException { ! quoted = false; ! parser.start(q); ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#end(QueryTranslator) ! */ ! public void end(QueryTranslator q) throws QueryException { ! if (lastToken!=null) parser.token(lastToken, q); ! parser.end(q); ! } ! ! } --- 1,108 ---- ! //$Id$ ! package cirrus.hibernate.query; ! ! import java.util.HashSet; ! import java.util.Map; ! import java.util.Set; ! ! import cirrus.hibernate.QueryException; ! ! /** ! * ! */ ! public class PreprocessingParser implements Parser { ! ! private static final Set operators; ! static { ! operators = new HashSet(); ! operators.add("<="); ! operators.add(">="); ! operators.add("=>"); ! operators.add("=<"); ! operators.add("!="); ! operators.add("<>"); ! operators.add("!#"); ! operators.add("!~"); ! operators.add("!<"); ! operators.add("!>"); ! operators.add("is not"); ! operators.add("not like"); ! operators.add("not in"); ! operators.add("not between"); ! operators.add("not exists"); ! } ! ! private Map replacements; ! private boolean quoted; ! private StringBuffer quotedString; ! private ClauseParser parser = new ClauseParser(); ! private String lastToken; ! ! public PreprocessingParser(Map replacements) { ! this.replacements=replacements; ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#token(String, QueryTranslator) ! */ ! public void token(String token, QueryTranslator q) throws QueryException { ! ! //handle quoted strings ! if (quoted) { ! quotedString.append(token); ! } ! if ( "'".equals(token) ) { ! if (quoted) { ! token = quotedString.toString(); ! } ! else { ! quotedString = new StringBuffer(20).append(token); ! } ! quoted = !quoted; ! } ! if (quoted) return; ! ! //ignore whitespace ! if ( ParserHelper.isWhitespace(token) ) return; ! ! //do replacements ! String substoken = (String) replacements.get(token); ! token = (substoken==null) ? token : substoken; ! ! //handle <=, >=, !=, is not, not between, not in ! if (lastToken==null) { ! lastToken=token; ! } ! else { ! String doubleToken = (token.length()>1) ? ! lastToken + ' ' + token : ! lastToken + token; ! if ( operators.contains(doubleToken) ) { ! parser.token(doubleToken, q); ! lastToken=null; ! } ! else { ! parser.token(lastToken, q); ! lastToken=token; ! } ! } ! ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#start(QueryTranslator) ! */ ! public void start(QueryTranslator q) throws QueryException { ! quoted = false; ! parser.start(q); ! } ! ! /** ! * @see cirrus.hibernate.query.Parser#end(QueryTranslator) ! */ ! public void end(QueryTranslator q) throws QueryException { ! if (lastToken!=null) parser.token(lastToken, q); ! parser.end(q); ! } ! ! } Index: SelectParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/SelectParser.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** SelectParser.java 22 Nov 2002 07:03:07 -0000 1.35 --- SelectParser.java 26 Nov 2002 03:35:44 -0000 1.36 *************** *** 136,140 **** public void end(QueryTranslator q) { } ! } ! --- 136,140 ---- public void end(QueryTranslator q) { } ! } ! Index: WhereParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/WhereParser.java,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** WhereParser.java 21 Nov 2002 07:44:57 -0000 1.40 --- WhereParser.java 26 Nov 2002 03:35:44 -0000 1.41 *************** *** 173,177 **** } return name; ! } public void token(String token, QueryTranslator q) throws QueryException { --- 173,177 ---- } return name; ! } public void token(String token, QueryTranslator q) throws QueryException { *************** *** 454,456 **** } } ! --- 454,456 ---- } } ! |