package junkutil.sample;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import junkutil.common.FileUtil;
import junkutil.common.OptGets;
import junkutil.set.LzList;

/**
 * 引数に与えられたファイルの中で、英字で始まる行だけを出力するプログラム。
 * 引数 -h でヘッダーを出力する。
 * @author Hiroyuki Shiota
 */
public class BatchTest {
	/**
	 * メイン
	 * @param args
	 */
	public static void main(String [] args) {
		args = new String[] { "-h", "testdata/readFile.txt", "testdata/writeFile.txt", "Nothing.txt" };
		try {
			OptGets optGets = new OptGets("abch");
			Map opts = optGets.parse(args);
			if (opts.get("h") == Boolean.TRUE) {
				System.out.println("====BatchTest Heaader====");
			}
			//Mapを出力する
			for (Iterator i = opts.keySet().iterator(); i.hasNext(); ) {
				Object key = i.next();
				System.out.println(key.toString() + "=" + opts.get(key).toString());
			}
			//ファイルを出力する
			List argList = optGets.getArgList();
			for (int i = 0; i < argList.size(); i++) {
				String filename = (String)argList.get(i);
				if (!FileUtil.exists(filename)) {
					System.out.println("File not found: " + filename);
					continue;
				} else {
					System.out.println("File: " + filename);
					List lines = FileUtil.readLines(filename, "Shift_JIS");
					List grep = new LzList(lines).grep("^[a-zA-Z]").list();
					for (int j = 0; j < grep.size(); j++) {
						System.out.println((String)grep.get(j));
					}
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
