| Home >> All >> com >> thermidor >> xml >> [ output Javadoc ] |
Source code: com/thermidor/xml/output/AppendHandler.java
1 package com.thermidor.xml.output; 2 import com.thermidor.util.io.AppendWriter; 3 import java.io.IOException; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.PrintWriter; 7 import com.thermidor.util.Assert; 8 import java.io.RandomAccessFile; 9 public class AppendHandler extends OutputHandler { 10 /** 11 * Construct a new default instance of a AppendHandler. 12 */ 13 public AppendHandler() { 14 super(); 15 } 16 /** 17 * <code>start</code> is called on the output handler to initialize it 18 * ready to start processing output. 19 * @param data the initialization data. 20 * @throws InvalidInitializationParameter is raised if the initialization 21 * data was invalid for this instance. 22 * @throws IOException is raised if there was an IO related error. 23 */ 24 public void start(Object initializationData) 25 throws InvalidInitializationParameter, 26 IOException { 27 Assert.notNull(initializationData, 28 "initialization parameter for handler type [" + 29 AppendHandler.class + 30 "] must be non null"); 31 File outputFile = null; 32 if(initializationData instanceof String) { 33 outputFile = new File((String)initializationData); 34 } 35 else if (initializationData instanceof File) { 36 outputFile = (File)initializationData; 37 } 38 else { 39 throw new InvalidInitializationParameter 40 ("initialization parameter for handler type [" + 41 AppendHandler.class + 42 "] must be java.lang.String or java.io.File, but was [" + 43 initializationData.getClass()+"]"); 44 } 45 RandomAccessFile raf = new RandomAccessFile(outputFile,"rw"); 46 AppendWriter aw = new AppendWriter(raf); 47 _writer = new PrintWriter(aw); 48 } 49 /** 50 * Handle the provided string data . 51 * @param data the text data that is to be output. 52 */ 53 public void handle(String data) throws IOException{ 54 _writer.print(data); 55 } 56 /** 57 * The responsibilty of the finished member function is to handle clean up 58 * when the output is popped from the output stack. 59 * @return any relevant string data that was collected will the handler 60 * is in operation. 61 */ 62 public String finish() throws IOException { 63 _writer.flush(); 64 _writer.close(); 65 return EMPTY; 66 } 67 68 }