亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sqlastfactory.java

?? hibernate-3.1.3-all-src.zip 面向對象的訪問數據庫工具
?? JAVA
字號:
// $Id: SqlASTFactory.java 8512 2005-11-02 18:23:04Z steveebersole $
package org.hibernate.hql.ast;

import antlr.ASTFactory;
import antlr.Token;
import antlr.collections.AST;
import org.hibernate.hql.antlr.HqlSqlTokenTypes;
import org.hibernate.hql.ast.tree.AggregateNode;
import org.hibernate.hql.ast.tree.BinaryArithmeticOperatorNode;
import org.hibernate.hql.ast.tree.BinaryLogicOperatorNode;
import org.hibernate.hql.ast.tree.Case2Node;
import org.hibernate.hql.ast.tree.CaseNode;
import org.hibernate.hql.ast.tree.CollectionFunction;
import org.hibernate.hql.ast.tree.ConstructorNode;
import org.hibernate.hql.ast.tree.CountNode;
import org.hibernate.hql.ast.tree.DeleteStatement;
import org.hibernate.hql.ast.tree.DotNode;
import org.hibernate.hql.ast.tree.FromClause;
import org.hibernate.hql.ast.tree.FromElement;
import org.hibernate.hql.ast.tree.IdentNode;
import org.hibernate.hql.ast.tree.ImpliedFromElement;
import org.hibernate.hql.ast.tree.IndexNode;
import org.hibernate.hql.ast.tree.InitializeableNode;
import org.hibernate.hql.ast.tree.InsertStatement;
import org.hibernate.hql.ast.tree.IntoClause;
import org.hibernate.hql.ast.tree.LiteralNode;
import org.hibernate.hql.ast.tree.MethodNode;
import org.hibernate.hql.ast.tree.OrderByClause;
import org.hibernate.hql.ast.tree.ParameterNode;
import org.hibernate.hql.ast.tree.QueryNode;
import org.hibernate.hql.ast.tree.SelectClause;
import org.hibernate.hql.ast.tree.SelectExpressionImpl;
import org.hibernate.hql.ast.tree.SqlFragment;
import org.hibernate.hql.ast.tree.SqlNode;
import org.hibernate.hql.ast.tree.UnaryArithmeticNode;
import org.hibernate.hql.ast.tree.UpdateStatement;
import org.hibernate.hql.ast.tree.BetweenOperatorNode;
import org.hibernate.hql.ast.tree.UnaryLogicOperatorNode;
import org.hibernate.hql.ast.tree.InLogicOperatorNode;

import java.lang.reflect.Constructor;

/**
 * Custom AST factory the intermediate tree that causes ANTLR to create specialized
 * AST nodes, given the AST node type (from HqlSqlTokenTypes).   HqlSqlWalker registers
 * this factory with itself when it is initialized.
 * <br>User: josh
 * <br>Date: Nov 22, 2003
 * <br>Time: 3:34:28 PM
 */
public class SqlASTFactory extends ASTFactory implements HqlSqlTokenTypes {
	private HqlSqlWalker walker;

	/**
	 * Create factory with a specific mapping from token type
	 * to Java AST node type.  Your subclasses of ASTFactory
	 * can override and reuse the map stuff.
	 */
	public SqlASTFactory(HqlSqlWalker walker) {
		super();
		this.walker = walker;
	}

	/**
	 * Returns the class for a given token type (a.k.a. AST node type).
	 *
	 * @param tokenType The token type.
	 * @return Class - The AST node class to instantiate.
	 */
	public Class getASTNodeType(int tokenType) {
		switch ( tokenType ) {
			case SELECT:
			case QUERY:
				return QueryNode.class;
			case UPDATE:
				return UpdateStatement.class;
			case DELETE:
				return DeleteStatement.class;
			case INSERT:
				return InsertStatement.class;
			case INTO:
				return IntoClause.class;
			case FROM:
				return FromClause.class;
			case FROM_FRAGMENT:
				return FromElement.class;
			case IMPLIED_FROM:
				return ImpliedFromElement.class;
			case DOT:
				return DotNode.class;
			case INDEX_OP:
				return IndexNode.class;
				// Alias references and identifiers use the same node class.
			case ALIAS_REF:
			case IDENT:
				return IdentNode.class;
			case SQL_TOKEN:
				return SqlFragment.class;
			case METHOD_CALL:
				return MethodNode.class;
			case ELEMENTS:
			case INDICES:
				return CollectionFunction.class;
			case SELECT_CLAUSE:
				return SelectClause.class;
			case SELECT_EXPR:
				return SelectExpressionImpl.class;
			case AGGREGATE:
				return AggregateNode.class;
			case COUNT:
				return CountNode.class;
			case CONSTRUCTOR:
				return ConstructorNode.class;
			case NUM_INT:
			case NUM_FLOAT:
			case NUM_LONG:
			case NUM_DOUBLE:
			case QUOTED_STRING:
			case TRUE:
			case FALSE:
				return LiteralNode.class;
			case ORDER:
				return OrderByClause.class;
			case PLUS:
			case MINUS:
			case STAR:
			case DIV:
				return BinaryArithmeticOperatorNode.class;
			case UNARY_MINUS:
			case UNARY_PLUS:
				return UnaryArithmeticNode.class;
			case CASE2:
				return Case2Node.class;
			case CASE:
				return CaseNode.class;
			case PARAM:
			case NAMED_PARAM:
				return ParameterNode.class;
			case EQ:
			case NE:
			case LT:
			case GT:
			case LE:
			case GE:
			case LIKE:
			case NOT_LIKE:
				return BinaryLogicOperatorNode.class;
			case IN:
			case NOT_IN:
				return InLogicOperatorNode.class;
			case BETWEEN:
			case NOT_BETWEEN:
				return BetweenOperatorNode.class;
			case IS_NULL:
			case IS_NOT_NULL:
			case EXISTS:
				return UnaryLogicOperatorNode.class;
			default:
				return SqlNode.class;
		} // switch
	}

	protected AST createUsingCtor(Token token, String className) {
		Class c;
		AST t;
		try {
			c = Class.forName( className );
			Class[] tokenArgType = new Class[]{antlr.Token.class};
			Constructor ctor = c.getConstructor( tokenArgType );
			if ( ctor != null ) {
				t = ( AST ) ctor.newInstance( new Object[]{token} ); // make a new one
				initializeSqlNode( t );
			}
			else {
				// just do the regular thing if you can't find the ctor
				// Your AST must have default ctor to use this.
				t = create( c );
			}
		}
		catch ( Exception e ) {
			throw new IllegalArgumentException( "Invalid class or can't make instance, " + className );
		}
		return t;
	}

	private void initializeSqlNode(AST t) {
		// Initialize SQL nodes here.
		if ( t instanceof InitializeableNode ) {
			InitializeableNode initializeableNode = ( InitializeableNode ) t;
			initializeableNode.initialize( walker );
		}
	}

	/**
	 * Actually instantiate the AST node.
	 *
	 * @param c The class to instantiate.
	 * @return The instantiated and initialized node.
	 */
	protected AST create(Class c) {
		AST t;
		try {
			t = ( AST ) c.newInstance(); // make a new one
			initializeSqlNode( t );
		}
		catch ( Exception e ) {
			error( "Can't create AST Node " + c.getName() );
			return null;
		}
		return t;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂成人国产精品一区| 国产一区二区三区在线观看免费视频| 亚洲人成网站影音先锋播放| 午夜在线成人av| 成人免费看视频| 7777精品伊人久久久大香线蕉| 久久久高清一区二区三区| 亚洲乱码一区二区三区在线观看| 国产呦精品一区二区三区网站| 在线免费观看日韩欧美| 国产精品私人影院| 狠狠色狠狠色综合系列| 欧美剧在线免费观看网站| 国产欧美一区二区三区网站| 蜜臂av日日欢夜夜爽一区| 欧美在线制服丝袜| 亚洲三级免费电影| 色综合天天天天做夜夜夜夜做| 精品91自产拍在线观看一区| 天堂一区二区在线| 欧美视频三区在线播放| 中文字幕一区二区三区在线不卡| 国产一区二区久久| 亚洲精品在线免费观看视频| 日韩国产精品久久久| 欧美欧美午夜aⅴ在线观看| 一区二区在线观看视频在线观看| 99国内精品久久| 自拍偷拍国产精品| 成人精品高清在线| 亚洲欧洲国产专区| 91亚洲精品久久久蜜桃网站| 中文字幕在线播放不卡一区| 成人av电影观看| 亚洲免费观看在线观看| 在线观看国产精品网站| 亚洲一线二线三线视频| 欧美日韩黄视频| 三级不卡在线观看| 日韩精品中文字幕在线一区| 免费观看久久久4p| 精品国产一区二区亚洲人成毛片| 精品一区二区成人精品| 国产清纯美女被跳蛋高潮一区二区久久w| 国内精品免费**视频| 国产网红主播福利一区二区| 9色porny自拍视频一区二区| 伊人婷婷欧美激情| 在线观看91av| 国产精品影音先锋| 亚洲欧洲日本在线| 欧美精品三级在线观看| 久久99精品国产| 国产精品视频观看| 欧美午夜电影在线播放| 久久成人久久爱| 国产精品二区一区二区aⅴ污介绍| 91最新地址在线播放| 日本最新不卡在线| 国产色产综合色产在线视频| 色狠狠av一区二区三区| 日本中文字幕不卡| 国产日韩精品一区二区三区 | 国产精品乱人伦| 91官网在线免费观看| 男女性色大片免费观看一区二区| 精品日韩成人av| 91色porny在线视频| 日韩二区三区四区| 亚洲视频一区在线观看| 91精品国产综合久久久久久久| 国产成人啪午夜精品网站男同| 亚洲美女在线一区| 久久亚洲精品小早川怜子| 91美女在线视频| 国产在线看一区| 一区二区免费在线| 久久久久国产精品厨房| 4438x亚洲最大成人网| 成人午夜电影网站| 蜜臀av性久久久久蜜臀aⅴ流畅| ...xxx性欧美| 久久久亚洲精华液精华液精华液| 在线观看亚洲a| a在线欧美一区| 国产伦精品一区二区三区在线观看| 亚洲国产中文字幕| 国产精品久久久久久久久免费丝袜 | 久久久.com| 欧美精品日韩一区| 色综合一区二区三区| 国产成人精品亚洲日本在线桃色 | 亚洲激情自拍偷拍| 欧美国产激情二区三区| 精品国产91洋老外米糕| 91麻豆精品国产自产在线观看一区| 99re成人在线| 成人综合在线观看| 精品一区二区三区在线播放| 日韩精品成人一区二区在线| 一卡二卡欧美日韩| 亚洲欧美另类小说视频| 中文字幕av资源一区| 久久久久久9999| 26uuu精品一区二区三区四区在线| 欧美日韩黄色影视| 欧美日韩国产a| 欧美日韩夫妻久久| 欧美日韩国产另类一区| 欧美性受极品xxxx喷水| 欧美亚洲国产一卡| 在线亚洲欧美专区二区| 91小视频免费看| 91麻豆国产自产在线观看| 成av人片一区二区| 99国产精品久| 97久久人人超碰| 色av成人天堂桃色av| 91久久精品一区二区| 在线观看网站黄不卡| 欧美午夜精品一区二区蜜桃| 欧美日韩国产综合视频在线观看| 欧美在线看片a免费观看| 欧美日韩一区二区三区四区五区| 精品视频1区2区3区| 91麻豆精品国产无毒不卡在线观看| 制服丝袜日韩国产| 精品黑人一区二区三区久久| 精品国产亚洲一区二区三区在线观看| 精品久久久久久久久久久院品网 | 国产成人超碰人人澡人人澡| 国产91丝袜在线播放九色| 成人精品视频一区二区三区| 91欧美一区二区| 在线亚洲人成电影网站色www| 欧美少妇xxx| 欧美va亚洲va在线观看蝴蝶网| 久久这里都是精品| 亚洲精品国产一区二区三区四区在线| 亚洲高清免费视频| 久久97超碰国产精品超碰| 豆国产96在线|亚洲| 一本一道综合狠狠老| 91麻豆精品国产91久久久| 国产午夜精品在线观看| 亚洲精品水蜜桃| 麻豆精品一二三| 成人av电影在线| 欧美一级艳片视频免费观看| 国产三区在线成人av| 亚洲综合自拍偷拍| 国产麻豆视频一区| 欧美日韩国产天堂| 欧美激情一区在线| 亚洲成人一区二区在线观看| 国产在线不卡视频| 欧美老肥妇做.爰bbww视频| 国产亚洲一区字幕| 日韩精品视频网| av在线不卡电影| 欧美不卡一区二区三区四区| 国产精品的网站| 久久精品国产免费| 在线亚洲+欧美+日本专区| 国产婷婷色一区二区三区在线| 亚洲成人综合视频| 91丨porny丨在线| 久久综合九色综合97婷婷| 亚洲一本大道在线| 不卡电影一区二区三区| 欧美精品一区二区三区一线天视频| 亚洲精品国产高清久久伦理二区| 狠狠色伊人亚洲综合成人| 91精品国产品国语在线不卡| 中文字幕日韩av资源站| 国产在线精品一区二区夜色| 欧美色综合网站| 亚洲伦理在线精品| 不卡一区二区中文字幕| 精品人在线二区三区| 日韩av一级电影| 欧美日韩另类一区| 亚洲精品国产第一综合99久久| 成人免费视频视频在线观看免费 | 国产精品综合一区二区三区| 欧美精品第一页| 亚洲午夜久久久久久久久电影网| av亚洲精华国产精华精| 亚洲国产精品精华液2区45| 国内外成人在线| 久久亚洲私人国产精品va媚药| 日韩vs国产vs欧美| 7777精品伊人久久久大香线蕉完整版 | 国产二区国产一区在线观看| 日韩视频一区二区在线观看| 五月天亚洲精品| 欧美另类videos死尸| 日韩和欧美一区二区三区| 91麻豆精品国产91久久久| 免费观看91视频大全|