1
2
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
17
18
19
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
116
117
118 protected static interface ACharset {
119 String convertFromUTF8(char c);
120 }
121 }