/* copyright Spry Software, Inc., 2006-2007 package spry.ui; import java.io.*; import java.util.regex.*; import spry.input.DataFileReader; import spry.input.DataFileReaderFactory; import spry.input.RecordSaver; import spry.input.RecordUser; import spry.input.ReplaceFilter; public class DataFileFilter { File inputFile; public DataFileFilter() { } /** * @param inputFileName The intputFileName to set. */ public void setInputFileName(String inputFileName) { inputFile = new File(inputFileName); } private static void printUsage() { System.out.println( "Usage: java spry.ui.DataFileFilter [filter] datafile ..."); System.out.println(" the filter currently available is: "); System.out.println("replace in the form --replace:MIR.lot_id=aaa to make the lotid aaa "); } public static void main(String[] args) { if (args.length == 0 || args[0].equals("--help")) { printUsage(); System.exit(1); } DataFileReaderFactory.getInstance(); int argsIndex = 0; java.io.File inputFile = null; String replaceStr = "--replace:(\\w+)\\.([\\w_]+)=(\\w+)"; Pattern replace = Pattern.compile(replaceStr); java.util.ArrayList filters = new java.util.ArrayList(); File outputFile = null; while (argsIndex < args.length) { Matcher replaceMatcher = replace.matcher(args[argsIndex]); if (replaceMatcher.matches()) { if (replaceMatcher.groupCount() == 3) { ReplaceFilter filter = new ReplaceFilter(replaceMatcher.group(1), replaceMatcher.group(2), replaceMatcher.group(3)); filters.add(filter); } else System.out.println("Unexpected replace group count "+ replaceMatcher.groupCount()); } else { inputFile = new File(args[argsIndex]); if (!inputFile.exists()) { System.err.println("Input file " + inputFile + " does not exist.\n"); System.exit(2); } outputFile = new File(inputFile.getAbsolutePath() + ".temp"); } argsIndex++; } DataFileReader reader = DataFileReaderFactory.getInstance().getReader(inputFile); if (reader == null) { System.err.println("Could not find reader for " + inputFile + ", exiting.\n"); System.exit(3); } java.util.Iterator iter = filters.iterator(); while (iter.hasNext()) { RecordUser filter = (RecordUser)iter.next(); reader.addRecordUser(filter); } try { OutputStream output = new BufferedOutputStream(new FileOutputStream(outputFile)); reader.addRecordUser(new RecordSaver(output)); reader.readFile(inputFile); output.close(); if (inputFile.delete()) outputFile.renameTo(inputFile); } catch (Exception e) { e.printStackTrace(); } System.exit(0); } }