KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > transformers > AbstractCommandStringTransformer


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.util.transformers;
11
12 import java.io.*;
13
14 import org.mmbase.util.externalprocess.CommandLauncher;
15 import org.mmbase.util.logging.*;
16
17 /**
18  * If you want to transform a Reader stream by the use of an external command, than you can extend
19  * this class. Implement the 'getCommand' function.
20  *
21  * @author Michiel Meeuwissen
22  * @since MMBase-1.7
23  */

24
25 public abstract class AbstractCommandStringTransformer extends StringTransformer
26     implements CharTransformer {
27     private static Logger log = Logging.getLoggerInstance(AbstractCommandStringTransformer.class);
28
29
30     protected abstract String JavaDoc[] getCommand();
31
32     // javadoc inherited
33
public final String JavaDoc transform(String JavaDoc s) {
34         try {
35             String JavaDoc encoding = System.getProperty("file.encoding");
36             CommandLauncher launcher = new CommandLauncher("Transformer");
37             ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
38             InputStream inputStream = new ByteArrayInputStream(s.getBytes(encoding));
39             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
40             launcher.execute(getCommand());
41             launcher.waitAndWrite(inputStream, outputStream, errorStream);
42             return new String JavaDoc(outputStream.toByteArray(), encoding) + new String JavaDoc(errorStream.toByteArray(), encoding);
43         } catch (UnsupportedEncodingException uee) {
44             log.error(uee.toString());
45         } catch (org.mmbase.util.externalprocess.ProcessException pe) {
46             log.error(pe.toString());
47         }
48         return s;
49     }
50
51     public String JavaDoc toString() {
52         return getCommand()[0].toUpperCase();
53     }
54 }
55
Popular Tags