package parser.ServletParser.sqlparse;

import parser.ServletParser.library.*;

/** 이 클래스는 SQL 파싱 시에 사용되는 파스 트리 노드 객체를 위한 것이다.
  */
public class ParseTreeNode3 extends Object {
	/** 현재 노드와 관련된 모든 필드 이름들 
	 */
	public StringList fieldNames;
	/** select 문에서 join table list 경우 테이블 이름들 
	 */
	public StringList tableNames;
	/** select 문에서 선택된 함수값들 
	 */
	public StringList selectValues;
	/** 현재 노드 값이 identifier 인가를 나타내는 플래그이다.
	 */
	public boolean idFlag;
	/** 현재 non terminal symbol과 관련한 전체 스트링
	 */
	public String fullString;
	/** 생성자이다.
	 */
	ParseTreeNode3() {
		fieldNames = new StringList();
		tableNames = new StringList();
		selectValues = new StringList();
		fullString = new String("");
		idFlag = false;
	}
	/** 생성자이다.
	 */
	ParseTreeNode3(String fString) {
		fieldNames = new StringList();
		tableNames = new StringList();
		selectValues = new StringList();
		fullString = new String(fString);
		idFlag = false;
	}
	/** 스트링으로 변환하는 함수이다.
	 */
	public String toString() {
		return fullString;
	}
	public void mergeFieldNameAndValuesFrom(ParseTreeNode3 from) {
		if (from == null) return;
		String str = from.fieldNames.getFirst();
		while(str != null) {
			fieldNames.insertIgnoreCase(str);
			str = from.fieldNames.getNext();
		}
		str = from.selectValues.getFirst();
		while(str != null) {
			selectValues.insertIgnoreCase(str);
			str = from.selectValues.getNext();
		}
	}
	public void addSelectValue(String s) {
		selectValues.insertIgnoreCase(s);
	}
	public void mergeTableNameFrom(ParseTreeNode3 from) {
		if (from == null) return;
		String str = from.tableNames.getFirst();
		while(str != null) {
			tableNames.insertIgnoreCase(str);
			str = from.tableNames.getNext();
		}
	}
};