package parser.ServletParser.library;

import java.io.*;
/** 이 클래스는 컨테이너 역할을 하는 리스트 클래스로서 테이블 정보들을
 * 관리하는 클래스이다.
 */
public final
	class SQLTableInfoList extends List {
	/** 생성자이다.
	 */
	public SQLTableInfoList() {
		super();
	}
	/** 이 리스트에서 특정 테이블을 찾는 함수이다.
	 */
	public SQLTableInfo findTable(String tName) {
		SQLTableInfo info = getFirst();
		while (info != null) {
			if (tName.equalsIgnoreCase(info.tableName)) return info;
			info = getNext();
		}
		return null;
	}
	/** 이 리스트의 마지막에 새로운 테이블 이름을 insert 하는 함수이다.
	 * 리스트에 이미 객체가 있으면 insert 하지 않는다.
	 */
	public void addTableName(String tName) {
		SQLTableInfo info = getFirst();
		while (info != null) {
			if (tName.equalsIgnoreCase(info.tableName)) return;
			info = getNext();
		}
		SQLTableInfo newInfo = new SQLTableInfo(tName);
		super._insert((Object)newInfo,ABSOLUTELY);
	}
	/** 이 리스트의 마지막에 새로운 테이블 필드 이름을 insert 하는 함수이다.
	 * 리스트에 이미 객체가 있으면 insert 하지 않는다.
	 */
	public void addFieldName(String atTable,String field) {
		SQLTableInfo info = getFirst();
		while (info != null) {
			if (atTable.equalsIgnoreCase(info.tableName)) {
				info.addField(field);
				return;
			}
			info = getNext();
		}
		SQLTableInfo newInfo = new SQLTableInfo(atTable,field);
		super._insert((Object)newInfo,ABSOLUTELY);
	}
	/** 이 리스트를 비우는 함수이다.
	 */
	public void clear() {
		super._clear();
	}
	/** 리스트의 객체들을 traverse 할 때 맨 첫번째 객체를 찾아오는 함수이다.
	 * 만약 리스트가 비어있게되면 null 값을 리턴한다.
	 */
	public SQLTableInfo getFirst() {
		return (SQLTableInfo)super._getFirst();
	}
	/** 리스트의 객체들을 traverse 할 때 다음 객체를 찾아오는 함수이다.
	 * 만약 리스트의 끝에 도달하면 null 값을 리턴한다.
	 */
	public SQLTableInfo getNext() {
		return (SQLTableInfo)super._getNext();
	}
}
