⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preprocessingparser.java

📁 通过系统把几乎所有与人力资源相关的数据统一管理
💻 JAVA
字号:
//$Id: PreprocessingParser.java,v 1.8.2.3 2003/11/07 01:04:15 oneovthafew Exp $package net.sf.hibernate.hql;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.Set;import net.sf.hibernate.QueryException;import net.sf.hibernate.util.StringHelper;/** * */public class PreprocessingParser implements Parser {		private static final Set HQL_OPERATORS;	private static final Map HQL_COLLECTION_PROPERTIES;	static {		HQL_OPERATORS = new HashSet();		HQL_OPERATORS.add("<=");		HQL_OPERATORS.add(">=");		HQL_OPERATORS.add("=>");		HQL_OPERATORS.add("=<");		HQL_OPERATORS.add("!=");		HQL_OPERATORS.add("<>");		HQL_OPERATORS.add("!#");		HQL_OPERATORS.add("!~");		HQL_OPERATORS.add("!<");		HQL_OPERATORS.add("!>");		HQL_OPERATORS.add("is not");		HQL_OPERATORS.add("not like");		HQL_OPERATORS.add("not in");		HQL_OPERATORS.add("not between");		HQL_OPERATORS.add("not exists");				HQL_COLLECTION_PROPERTIES = new HashMap();		HQL_COLLECTION_PROPERTIES.put("elements", "elements");		HQL_COLLECTION_PROPERTIES.put("indices", "indices");		HQL_COLLECTION_PROPERTIES.put("size", "size");		HQL_COLLECTION_PROPERTIES.put("maxindex", "maxIndex");		HQL_COLLECTION_PROPERTIES.put("minindex", "minIndex");		HQL_COLLECTION_PROPERTIES.put("maxelement", "maxElement");		HQL_COLLECTION_PROPERTIES.put("minelement", "minElement");		HQL_COLLECTION_PROPERTIES.put("index", "index");	}		private Map replacements;	private boolean quoted;	private StringBuffer quotedString;	private ClauseParser parser = new ClauseParser();	private String lastToken;	private String currentCollectionProp;		public PreprocessingParser(Map replacements) {		this.replacements=replacements;	}		/**	 * @see net.sf.hibernate.hql.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 HQL2 collection syntax		if ( currentCollectionProp!=null ) {			if ( StringHelper.OPEN_PAREN.equals(token) ) {				return;			}			else if ( StringHelper.CLOSE_PAREN.equals(token) ) {				currentCollectionProp=null;				return;			}			else {				token =StringHelper.qualify(token, currentCollectionProp);			}		}		else {			String prop = (String) HQL_COLLECTION_PROPERTIES.get( token.toLowerCase() );			if ( prop!=null ) {				currentCollectionProp = prop;				return;			}		}						//handle <=, >=, !=, is not, not between, not in		if (lastToken==null) {			lastToken=token;		}		else {			String doubleToken = (token.length()>1) ?				lastToken + ' ' + token :				lastToken + token;			if ( HQL_OPERATORS.contains( doubleToken.toLowerCase() ) ) {				parser.token(doubleToken, q);				lastToken=null;			}			else {				parser.token(lastToken, q);				lastToken=token;			}		}			}		/**	 * @see net.sf.hibernate.hql.Parser#start(QueryTranslator)	 */	public void start(QueryTranslator q) throws QueryException {		quoted = false;		parser.start(q);	}		/**	 * @see net.sf.hibernate.hql.Parser#end(QueryTranslator)	 */	public void end(QueryTranslator q) throws QueryException {		if (lastToken!=null) parser.token(lastToken, q);		parser.end(q);		lastToken=null;		currentCollectionProp=null;	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -