1 16 17 import org.apache.commons.digester.Digester; 18 import org.apache.commons.digester.plugins.PluginRules; 19 import org.apache.commons.digester.plugins.PluginCreateRule; 20 import java.io.*; 21 22 40 41 public class Pipeline { 42 43 private String source; 44 private String dest; 45 private Transform transformer; 46 47 public static void main(String [] args) { 48 if (args.length != 1) { 49 System.err.println("usage: pipeline config-file"); 50 System.exit(-1); 51 } 52 String configFile = args[0]; 53 54 Digester digester = new Digester(); 55 PluginRules rc = new PluginRules(); 56 digester.setRules(rc); 57 58 digester.addObjectCreate("pipeline", Pipeline.class); 59 60 digester.addCallMethod("pipeline/source", "setSource", 1); 61 digester.addCallParam("pipeline/source", 0, "file"); 62 63 PluginCreateRule pcr = new PluginCreateRule(Transform.class); 64 digester.addRule("pipeline/transform", pcr); 65 digester.addSetNext("pipeline/transform", "setTransform"); 66 67 digester.addCallMethod("pipeline/destination", "setDest", 1); 68 digester.addCallParam("pipeline/destination", 0, "file"); 69 70 Pipeline pipeline = null; 71 try { 72 pipeline = (Pipeline) digester.parse(configFile); 73 } 74 catch(Exception e) { 75 System.err.println("oops exception occurred during parse."); 76 e.printStackTrace(); 77 System.exit(-1); 78 } 79 80 try { 81 pipeline.execute(); 82 } 83 catch (Exception e) { 84 System.err.println("oops exception occurred during pipeline execution."); 85 e.printStackTrace(); 86 System.exit(-1); 87 } 88 } 89 90 public void setSource(String source) { 91 this.source = source; 92 } 93 94 public void setDest(String dest) { 95 this.dest = dest; 96 } 97 98 public void setTransform(Transform transformer) { 99 this.transformer = transformer; 100 } 101 102 private void execute() throws IOException { 103 FileReader inRaw = new FileReader(source); 104 FileWriter out = new FileWriter(dest); 105 106 BufferedReader in = new BufferedReader(inRaw); 107 108 while(true) { 109 String inStr = in.readLine(); 110 if (inStr==null) 111 break; 112 113 String outStr = transformer.transform(inStr); 114 out.write(outStr); 115 out.write('\n'); 116 } 117 118 119 inRaw.close(); 120 out.close(); 121 122 System.out.println( 123 "Contents of file " + source + " have been transformed, and" 124 + " written to file " + dest + "."); 125 } 126 } 127
| Popular Tags
|