View Javadoc

1   /*
2    * $Id: XMLCodec.java,v 1.18 2011/06/16 09:29:40 jbmeslin Exp $
3    *
4    */
5   
6   package org.rcfaces.core.internal.codec;
7   
8   import java.io.IOException;
9   import java.io.Writer;
10  
11  import javax.faces.FacesException;
12  
13  import org.rcfaces.core.internal.lang.StringAppender;
14  
15  /**
16   * Conversion UTF8-UNICODE / HTML
17   * 
18   * @author Olivier Oeuillot (latest modification by $Author: jbmeslin $)
19   * @version $Revision: 1.18 $ $Date: 2011/06/16 09:29:40 $
20   */
21  public class XMLCodec {
22      private static final String REVISION = "$Revision: 1.18 $";
23  
24      protected static String convertUTF8ToXML(String text, ACharset charset,
25              String br) {
26          if (text == null) {
27              throw new FacesException("Try to convert to HTML a NULL text !",
28                      null);
29          }
30  
31          int len = text.length();
32  
33          if (len < 1) {
34              return text;
35          }
36  
37          char sb[] = new char[len];
38  
39          text.getChars(0, len, sb, 0);
40  
41          StringAppender ret = new StringAppender(len);
42  
43          char c;
44          String html;
45  
46          for (int i = 0; i < len; i++) {
47              c = sb[i];
48  
49              if (c == '\n') {
50                  if (br != null) {
51                      ret.append(br);
52                  } else {
53                      ret.append(c);
54                  }
55                  continue;
56              }
57  
58              html = charset.convertFromUTF8(c);
59  
60              if (html == null) {
61                  ret.append(c);
62  
63              } else {
64                  ret.append(html);
65              }
66          }
67  
68          return ret.toString();
69      }
70  
71      protected static void convertUTF8ToXML(Writer writer, String text,
72              ACharset charset, String br) throws IOException {
73          if (text == null) {
74              return;
75          }
76  
77          int len = text.length();
78  
79          if (len < 1) {
80              return;
81          }
82  
83          char sb[] = new char[len];
84  
85          text.getChars(0, len, sb, 0);
86  
87          char c;
88          String html;
89  
90          for (int i = 0; i < len; i++) {
91              c = sb[i];
92  
93              if (c == '\n') {
94                  if (br != null) {
95                      writer.write(br);
96                  } else {
97                      writer.write(c);
98                  }
99                  continue;
100             }
101 
102             html = charset.convertFromUTF8(c);
103 
104             if (html == null) {
105                 writer.write(c);
106 
107             } else {
108                 writer.write(html);
109             }
110         }
111     }
112 
113     /**
114      * 
115      * @author Olivier Oeuillot (latest modification by $Author: jbmeslin $)
116      * @version $Revision: 1.18 $ $Date: 2011/06/16 09:29:40 $
117      */
118     protected static interface ACharset {
119         String convertFromUTF8(char c);
120     }
121 }