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

📄 mysqlsimplenode.java

📁 mysql集群
💻 JAVA
字号:
/*
 * 	This program is free software; you can redistribute it and/or modify it under the terms of 
 * the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, 
 * or (at your option) any later version. 
 * 
 * 	This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details. 
 * 	You should have received a copy of the GNU General Public License along with this program; 
 * if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
package com.meidusa.amoeba.mysql.parser.data;

import com.meidusa.amoeba.mysql.parser.sql.MysqlParserConstants;
import com.meidusa.amoeba.mysql.parser.sql.MysqlParserTreeConstants;
import com.meidusa.amoeba.mysql.parser.sql.Token;

/**
 * 
 * @author <a href=mailto:piratebase@sina.com>Struct chen</a>
 *
 */
public abstract class MysqlSimpleNode{
	  protected Token firstToken;
	  protected Token lastToken;
	  protected String nodeName;
	  public Comparable<?> value;
	  public MysqlSimpleNode(int id){
		  nodeName = MysqlParserTreeConstants.jjtNodeName[id];
	  }
	  
	  public Token getFirstToken(){
		  return firstToken;
	  }

	  public Token getLastToken(){
		  return lastToken;
	  }

	  public void setFirstToken(Token token){
		  firstToken = token;
	  }

	  public void setLastToken(Token token){
		  lastToken = token;
	  }
	  
	  public Object getNodeName() {
			return nodeName;
	 }
	 
	  public String getNodeValue(){
		  return formatTokens(firstToken, lastToken);
	  }
	  
	  private String formatTokens(Token first, Token last){
			StringBuffer sb = new StringBuffer();
		    Token t = first;
		    int endColumn = last.endColumn;
		    int endLine = last.endLine;
		    while(t != null && (t.endLine < endLine || (t.endLine == endLine && t.endColumn <= endColumn))){
		    	sb.append(formatToken(t));
		  		t = t.next;
		    }
		    return sb.toString();
		}	
		
	  
	  private String formatToken(Token token){
			String image = token.image;
			if(image.equals(".")){
				return image;
			}		

			StringBuffer sb = new StringBuffer();
			if(token.kind == MysqlParserConstants.IDENTIFIER ||
			   token.kind == MysqlParserConstants.S_QUOTED_IDENTIFIER
					){
				//Table Name or Column Name.. Change it to lower case
				sb.append(image.toLowerCase());
			}else if (token.kind == MysqlParserConstants.STRING_LITERAL){
				//This is a constant in SQL.. Leave it as its
				sb.append(image);
			}else{
				//All other are keywords so make them upper case.. Or chars that are case insestive
				sb.append(image.toUpperCase());
			}

			Token next = token.next;
			if(next != null){
				String nextImage = next.image;
				if(!(nextImage.startsWith(".") || nextImage.equals(","))){
					sb.append(" ");
				}
			}		
			
			return sb.toString();
		}	
}

⌨️ 快捷键说明

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