= BatchTset =
== 概要 ==
以下は、バッチ処理のサンプルです。test/junkutil/sample に入っています。
== サンプル ==
{{{
package junkutil.sample;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junkutil.common.DataDumper;
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====");
}
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);
System.out.println("File: " + filename);
if (!FileUtil.exists(filename)) {
System.out.println("File not found: " + filename);
continue;
}
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 (Exception e) {
e.printStackTrace();
}
}
}
}}}
== クロージャ版 ==
{{{
package junkutil.sample;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import junkutil.common.FileUtil;
import junkutil.common.OptGets;
import junkutil.set.LzList;
import junkutil.set.LzListClosure;
import junkutil.set.LzMap;
import junkutil.set.LzMapClosure;
/**
* 引数に与えられたファイルの中で、英字で始まる行だけを出力するプログラム。
* 引数 -h でヘッダーを出力する。クロージャを活用する。
* @author Hiroyuki Shioa
*/
public class BatchTest2 {
/**
* Mapを出力するクロージャ
*/
private static class MapDump implements LzMapClosure {
public boolean process(Object key, Object value) {
if (value == null) return false;
System.out.println(key + "=" + value);
return false;
};
}
/**
* リストを出力するクロージャ
*/
private static class ListDump implements LzListClosure {
public boolean process(int i, int len, Object obj) {
System.out.println(obj);
return false;
}
}
/**
* ファイルを出力するクロージャ
*/
private static class FileDataDump implements LzListClosure {
public boolean process(int i, int len, Object obj) {
String filename = (String)obj;
if (!FileUtil.exists(filename)) {
System.out.println("File not found: " + filename);
return false;
} else {
System.out.println("File: " + filename);
List lines = null;
try {
lines = FileUtil.readLines(filename, "Shift_JIS");
new LzList(lines).grep("^[a-zA-Z]").forEach(new ListDump());
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
}
}
/**
* メイン
* @param args
*/
public static void main(String [] args) {
args = new String[] { "-h", "testdata/readFile.txt", "testdata/writeFile.txt", "Nothing.txt" };
OptGets optGets = new OptGets("abch");
Map opts = optGets.parse(args);
if (opts.get("h") == Boolean.TRUE) {
System.out.println("====BatchTest Heaader====");
}
List argList = optGets.getArgList();
LzMap optsMap = new LzMap(opts);
optsMap.forEach(optsMap.sortedKeys(), new MapDump()); //Mapをダンプ
new LzList(argList).forEach(new FileDataDump()); //ファイル情報をダンプ
}
}
}}}