KickJava   Java API By Example, From Geeks To Geeks.

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


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 import org.mmbase.util.logging.*;
14
15 /**
16  * You need only to implement transform(byte[]) you have the simplest
17  * kind of transformer (which is not 'streamable'). The name becoming your class name.
18  *
19  * @author Michiel Meeuwissen
20  * @since MMBase-1.7
21  */

22
23 public abstract class ByteArrayToCharTransformer implements ByteToCharTransformer {
24     private static Logger log = Logging.getLoggerInstance(ByteArrayToCharTransformer.class);
25
26     // javadoc inherited
27
public abstract String JavaDoc transform(byte[] r);
28         
29     // javadoc inherited
30
public final OutputStream transformBack(Reader r) {
31         return transformBack(r, new ByteArrayOutputStream());
32     }
33
34     // javadoc inherited
35
public final Writer transform(InputStream in) {
36         return transform(in, new StringWriter());
37     }
38
39     // javadoc inherited
40
public byte[] transformBack(String JavaDoc r) {
41         throw new UnsupportedOperationException JavaDoc("transformBack is not supported for this transformer");
42     }
43
44     /**
45      * An implemention for tranform(Reader, Writer) based on transform(String).
46      * These functions can be used by extensions to implement transform and transformBack
47      */

48     public Writer transform(InputStream in, Writer w) {
49         try {
50             ByteArrayOutputStream sw = new ByteArrayOutputStream();
51             while (true) {
52                 int c = in.read();
53                 if (c == -1) break;
54                 sw.write(c);
55             }
56             String JavaDoc result = transform(sw.toByteArray());
57             w.write(result);
58         } catch (java.io.IOException JavaDoc e) {
59             log.error(e.toString());
60             log.debug(Logging.stackTrace(e));
61         }
62         return w;
63     }
64
65     public OutputStream transformBack(Reader in, OutputStream out) {
66         try {
67             StringWriter sw = new StringWriter();
68             while (true) {
69                 int c = in.read();
70                 if (c == -1) break;
71                 sw.write(c);
72             }
73             out.write(transformBack(sw.toString()));
74         } catch (java.io.IOException JavaDoc e) {
75             log.error(e.toString());
76             log.debug(Logging.stackTrace(e));
77         }
78         return out;
79     }
80 }
81
Popular Tags