1 10 11 package org.mmbase.util.transformers; 12 13 import java.io.Reader ; 14 import java.io.Writer ; 15 import java.util.*; 16 17 import org.mmbase.util.logging.Logger; 18 import org.mmbase.util.logging.Logging; 19 20 29 public class Latin3Surrogator extends ConfigurableReaderTransformer implements CharTransformer { 30 private static Logger log = Logging.getLoggerInstance(Latin3Surrogator.class); 31 32 public static final int XMETODO = 1; public static final int HMETODO = 2; 36 public Latin3Surrogator() { 37 super(); 38 } 39 public Latin3Surrogator(int c) { 40 super(c); 41 } 42 43 protected Writer iksoj(Reader r, Writer 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 e) { 65 log.error(e.toString()); 66 } 67 return w; 68 } 69 70 protected Writer hoj(Reader r, Writer 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 e) { 92 log.error(e.toString()); 93 } 94 return w; 95 } 96 97 public Writer transform(Reader r, Writer 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 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 |