package net.w_horse.excelpojo.excel.reservedword;

import java.util.ArrayList;
import java.util.List;


/**
 * @author kawahara
 */
public class ReservedWordManager {
	private static ReservedWordManager instance;
	private List<ReservedWord> reservedWordList;

	private static ReservedWordManager getInstance() {
		if (instance == null) {
			instance = new ReservedWordManager();
		}
		return instance;
	}

	private ReservedWordManager() {
		reservedWordList = new ArrayList<ReservedWord>();
		reservedWordList.add(new EXEC_DATE_HHMMSS());
		reservedWordList.add(new EXEC_DATE_HP_YMD());
		reservedWordList.add(new EXEC_DATE_SL_YMD());
		reservedWordList.add(new EXEC_DATE_YYYYMMDD());
	}

	/**
	 * 予約語のリストを返す
	 *
	 * @return 予約語のリスト
	 */
	private static List<ReservedWord> getReservedWrodList() {
		return getInstance().reservedWordList;
	}

	/**
	 * SQL文作成用に予約語を変換する<br>
	 * サポートされている予約語をすべて変換する
	 *
	 * @param expr 変換したい文字列
	 * @return 変換した文字列
	 */
	public static String convReservedWord(String expr) {
		if( (expr == null) || expr.equals("") ) return "";

		String retStr = expr ;
		for (ReservedWord reservedWord : getReservedWrodList()) {
			if (reservedWord.indexOf(retStr) < 0) {	// 予約語が存在していないなら次を検索
				continue ;
			}
			retStr = reservedWord.replace(retStr) ;
		}
		return retStr;
	}

}
