KickJava   Java API By Example, From Geeks To Geeks.

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


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
11 package org.mmbase.util.transformers;
12
13 import java.io.Reader JavaDoc;
14 import java.io.Writer JavaDoc;
15 import java.util.*;
16
17 import org.mmbase.util.logging.Logger;
18 import org.mmbase.util.logging.Logging;
19
20 /**
21  * The ISO-8859-3 ('South European') unibyte encoding is used for languages like maltese and
22  * esperanto. If characters from this set are missing on your presentation device, this Transformer can
23  * provide (ASCII) surrogates for a bunch of characters.
24  *
25  * @author Michiel Meeuwissen
26  * @since MMBase-1.7
27  * @version $Id: Latin3Surrogator.java,v 1.3 2003/05/12 11:15:35 michiel Exp $
28  */

29 public class Latin3Surrogator extends ConfigurableReaderTransformer implements CharTransformer {
30     private static Logger log = Logging.getLoggerInstance(Latin3Surrogator.class);
31
32     // esperanto
33
public static final int XMETODO = 1; // faru iksojn
34
public static final int HMETODO = 2; // faru hojn
35

36     public Latin3Surrogator() {
37         super();
38     }
39     public Latin3Surrogator(int c) {
40         super(c);
41     }
42       
43     protected Writer JavaDoc iksoj(Reader JavaDoc r, Writer JavaDoc w) {
44         try {
45             while (true) {
46                 int c = r.read();
47                 if (c == -1) break;
48                 switch(c) {
49                 case '\u0108': w.write("Cx"); break;
50                 case '\u0109': w.write("cx"); break;
51                 case '\u011C': w.write("Gx"); break;
52                 case '\u011D': w.write("gx"); break;
53                 case '\u0124': w.write("Hx"); break;
54                 case '\u0125': w.write("hx"); break;
55                 case '\u0134': w.write("Jx"); break;
56                 case '\u0135': w.write("jx"); break;
57                 case '\u015C': w.write("Sx"); break;
58                 case '\u015D': w.write("sx"); break;
59                 case '\u016C': w.write("Ux"); break;
60                 case '\u016D': w.write("ux"); break;
61                 default: w.write(c);
62                 }
63             }
64         } catch (java.io.IOException JavaDoc e) {
65             log.error(e.toString());
66         }
67         return w;
68     }
69
70     protected Writer JavaDoc hoj(Reader JavaDoc r, Writer JavaDoc w) {
71         try {
72             while (true) {
73                 int c = r.read();
74                 if (c == -1) break;
75                 switch(c) {
76                 case '\u0108': w.write("Ch"); break;
77                 case '\u0109': w.write("ch"); break;
78                 case '\u011C': w.write("Gh"); break;
79                 case '\u011D': w.write("gh"); break;
80                 case '\u0124': w.write("Hh"); break;
81                 case '\u0125': w.write("hh"); break;
82                 case '\u0134': w.write("Jh"); break;
83                 case '\u0135': w.write("jh"); break;
84                 case '\u015C': w.write("Sh"); break;
85                 case '\u015D': w.write("sh"); break;
86                 case '\u016C': w.write('U'); break;
87                 case '\u016D': w.write('u'); break;
88                 default: w.write(c);
89                 }
90             }
91         } catch (java.io.IOException JavaDoc e) {
92             log.error(e.toString());
93         }
94         return w;
95     }
96
97     public Writer JavaDoc transform(Reader JavaDoc r, Writer JavaDoc w) {
98         switch(to){
99         case XMETODO: return iksoj(r, w);
100         case HMETODO: return hoj(r, w);
101         default: throw new UnknownCodingException(getClass(), to);
102         }
103     }
104
105     public String JavaDoc getEncoding() {
106         switch(to){
107         case XMETODO: return "xmetodo";
108         case HMETODO: return "hmetodo";
109         default: throw new UnknownCodingException(getClass(), to);
110         }
111     }
112
113
114     public Map transformers() {
115         HashMap h = new HashMap();
116         h.put("xmetodo".toUpperCase(), new Config(getClass(), XMETODO));
117         h.put("hmetodo".toUpperCase(), new Config(getClass(), HMETODO));
118         return h;
119     }
120
121 }
122
123
Popular Tags