1 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 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 [] getCommand(); 31 32 public final String transform(String s) { 34 try { 35 String 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 (outputStream.toByteArray(), encoding) + new String (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 toString() { 52 return getCommand()[0].toUpperCase(); 53 } 54 } 55 | Popular Tags |