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

📄 clauseparser.java

📁 人力资源管理系统主要包括:人员管理、招聘管理、培训管理、奖惩管理和薪金管理五大管理模块。
💻 JAVA
字号:
//$Id: ClauseParser.java,v 1.5 2003/07/09 03:29:46 oneovthafew Exp $package net.sf.hibernate.hql;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import net.sf.hibernate.QueryException;import net.sf.hibernate.util.StringHelper;/** * Parses the Hibernate query into its constituent clauses. */public class ClauseParser implements Parser {		private Parser child;	private List selectTokens;	private boolean cacheSelectTokens = false;	private boolean byExpected = false;	private int parenCount = 0;		public void token(String token, QueryTranslator q) throws QueryException {		String lcToken = token.toLowerCase();				if ( StringHelper.OPEN_PAREN.equals(token) ) {			parenCount++;		}		else if ( StringHelper.CLOSE_PAREN.equals(token) ) {			parenCount--;		}				if ( byExpected && !lcToken.equals("by") ) {			throw new QueryException("BY expected after GROUP or ORDER: " + token);		}				boolean isClauseStart = parenCount==0; //ignore subselect keywords				if (isClauseStart) {			if ( lcToken.equals("select") ) {				selectTokens = new ArrayList();				cacheSelectTokens = true;			}			else if ( lcToken.equals("from") ) {				child = new FromParser();				child.start(q);				cacheSelectTokens = false;			}			else if ( lcToken.equals("where") ) {				endChild(q);				child = new WhereParser();				child.start(q);			}			else if ( lcToken.equals("order") ) {				endChild(q);				child = new OrderByParser();				byExpected = true;			}			else if ( lcToken.equals("having") ) {				endChild(q);				child = new HavingParser();				child.start(q);			}			else if ( lcToken.equals("group") ) {				endChild(q);				child = new GroupByParser();				byExpected = true;			}			else if ( lcToken.equals("by") ) {				if ( !byExpected ) throw new QueryException("GROUP or ORDER expected before BY");				child.start(q);				byExpected = false;			}			else {				isClauseStart = false;			}		}				if (!isClauseStart) {			if (cacheSelectTokens) {				selectTokens.add(token);			}			else {				if (child==null) {					throw new QueryException("query must begin with SELECT or FROM: " + token);				}				else {					child.token(token, q);				}			}		}			}		private void endChild(QueryTranslator q) throws QueryException {		if (child==null) {			//null child could occur for no from clause in a filter			cacheSelectTokens = false;		}		else {			child.end(q);		}	}		public void start(QueryTranslator q) {	}		public void end(QueryTranslator q) throws QueryException {		endChild(q);		if (selectTokens!=null) {			child = new SelectParser();			child.start(q);			Iterator iter = selectTokens.iterator();			while ( iter.hasNext() ) {				token( (String) iter.next(), q );			}			child.end(q);		}		byExpected = false;		parenCount = 0;		cacheSelectTokens = false;	}	}

⌨️ 快捷键说明

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