KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > core > lib > Convertors


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.xml.core.lib;
20
21 import java.io.Reader JavaDoc;
22 import java.io.StringReader JavaDoc;
23 import java.io.BufferedReader JavaDoc;
24 import java.io.IOException JavaDoc;
25 import java.io.EOFException JavaDoc;
26 import java.util.Iterator JavaDoc;
27
28 import javax.swing.text.Document JavaDoc;
29
30 import org.xml.sax.InputSource JavaDoc;
31
32 import org.netbeans.modules.xml.core.text.TextEditorSupport;
33 import org.openide.ErrorManager;
34 import org.openide.util.Lookup;
35 import java.net.URL JavaDoc;
36 import java.util.Map JavaDoc;
37 import java.util.TreeMap JavaDoc;
38
39 import org.openide.filesystems.FileObject;
40 import org.openide.loaders.DataObject;
41
42 /**
43  * Set of static methods converting misc data representations.
44  *
45  * @author Petr Kuzel
46  * @version 0.9
47  */

48 public final class Convertors {
49
50
51     /**
52      * @return current state of Document as string
53      */

54     public static String JavaDoc documentToString(final Document JavaDoc doc) {
55
56         if (doc == null) throw new NullPointerException JavaDoc();
57         
58         final String JavaDoc[] str = new String JavaDoc[1];
59
60         // safely take the text from the document
61
Runnable JavaDoc run = new Runnable JavaDoc() {
62             public void run () {
63                 try {
64                     str[0] = doc.getText(0, doc.getLength());
65                 } catch (javax.swing.text.BadLocationException JavaDoc e) {
66                     // impossible
67
e.printStackTrace();
68                 }
69             }
70         };
71
72         doc.render(run);
73         return str[0];
74         
75     }
76     
77     /**
78      * @return InputSource, a callie SHOULD set systemId if available
79      */

80     public static InputSource JavaDoc documentToInputSource(Document JavaDoc doc) {
81         
82         if (doc == null) throw new NullPointerException JavaDoc();
83         
84         String JavaDoc text = documentToString(doc);
85         Reader JavaDoc reader = new StringReader JavaDoc(text);
86         
87         // our specifics property
88
String JavaDoc system = (String JavaDoc) doc.getProperty(TextEditorSupport.PROP_DOCUMENT_URL);
89         
90         // try Swing general property
91
if (system == null) {
92             Object JavaDoc obj = doc.getProperty(Document.StreamDescriptionProperty);
93             if (obj instanceof DataObject) {
94                 try {
95                         DataObject dobj = (DataObject) obj;
96                         FileObject fo = dobj.getPrimaryFile();
97                         URL JavaDoc url = fo.getURL();
98                         system = url.toExternalForm();
99                 } catch (IOException JavaDoc io) {
100                     ErrorManager emgr = (ErrorManager) Lookup.getDefault().lookup(ErrorManager.class);
101                     emgr.notify(io);
102                 }
103             } else {
104                 ErrorManager emgr = (ErrorManager) Lookup.getDefault().lookup(ErrorManager.class);
105                 emgr.log("XML:Convertors:Unknown stream description:" + obj);
106             }
107         }
108
109         // set something, some parsers are nervous if no system id
110
if (system == null) {
111             system = "XML/Core/Convertors/documentToInputSource()"; //NOI18N
112
}
113         
114         InputSource JavaDoc in = new InputSource JavaDoc(system); // NOI18N
115
in.setCharacterStream(reader);
116         return in;
117     }
118
119
120     /**
121      * Wrap reader into buffered one and start reading returning
122      * String as a EOF is reached.
123      */

124     public static String JavaDoc readerToString(Reader JavaDoc reader) throws IOException JavaDoc {
125         
126         BufferedReader JavaDoc fastReader = new BufferedReader JavaDoc(reader);
127         StringBuffer JavaDoc buf = new StringBuffer JavaDoc(1024);
128         try {
129             for (int i = fastReader.read(); i >= 0; i = fastReader.read()) {
130                 buf.append((char)i);
131             }
132         } catch (EOFException JavaDoc eof) {
133             //expected
134
}
135
136         return buf.toString();
137     }
138
139     /**
140      */

141     public static final String JavaDoc iana2java (String JavaDoc iana) {
142         String JavaDoc java = (String JavaDoc) Convertors.EncodingUtil.getIANA2JavaMap ().get (iana.toUpperCase ());
143         return java == null ? iana : java;
144     }
145     
146     public static final String JavaDoc java2iana (String JavaDoc java) {
147         String JavaDoc iana = (String JavaDoc) Convertors.EncodingUtil.getJava2IANAMap ().get (java);
148         return iana == null ? java : iana;
149     }
150
151
152     //!!! this code is copy pasted from TAX library TreeUtilities
153

154     /**
155      *
156      */

157     static class EncodingUtil {
158
159         /** IANA to Java encoding mappings */
160         protected final static Map JavaDoc encodingIANA2JavaMap = new TreeMap JavaDoc ();
161
162         /** */
163         protected final static Map JavaDoc encodingIANADescriptionMap = new TreeMap JavaDoc ();
164
165         /** */
166         protected final static Map JavaDoc encodingIANAAliasesMap = new TreeMap JavaDoc ();
167         
168         protected final static Map JavaDoc encodingJava2IANAMap = new TreeMap JavaDoc ();
169
170         //
171
// Static initialization
172
//
173

174         static {
175             encodingIANA2JavaMap.put ("BIG5", "Big5"); // NOI18N
176
encodingIANADescriptionMap.put ("BIG5", Util.THIS.getString ("NAME_BIG5")); // NOI18N
177
encodingIANAAliasesMap.put ("BIG5", "BIG5"); // NOI18N
178

179             encodingIANA2JavaMap.put ("IBM037", "CP037"); // NOI18N
180
encodingIANADescriptionMap.put ("IBM037", Util.THIS.getString ("NAME_IBM037")); // NOI18N
181
encodingIANAAliasesMap.put ("IBM037", "IBM037"); // NOI18N
182
encodingIANAAliasesMap.put ("EBCDIC-CP-US", "IBM037"); // NOI18N
183
encodingIANAAliasesMap.put ("EBCDIC-CP-CA", "IBM037"); // NOI18N
184
encodingIANAAliasesMap.put ("EBCDIC-CP-NL", "IBM037"); // NOI18N
185
encodingIANAAliasesMap.put ("EBCDIC-CP-WT", "IBM037"); // NOI18N
186

187             encodingIANA2JavaMap.put ("IBM277", "CP277"); // NOI18N
188
encodingIANADescriptionMap.put ("IBM277", Util.THIS.getString ("NAME_IBM277")); // NOI18N
189
encodingIANAAliasesMap.put ("IBM277", "IBM277"); // NOI18N
190
encodingIANAAliasesMap.put ("EBCDIC-CP-DK", "IBM277"); // NOI18N
191
encodingIANAAliasesMap.put ("EBCDIC-CP-NO", "IBM277"); // NOI18N
192

193             encodingIANA2JavaMap.put ("IBM278", "CP278"); // NOI18N
194
encodingIANADescriptionMap.put ("IBM278", Util.THIS.getString ("NAME_IBM277")); // NOI18N
195
encodingIANAAliasesMap.put ("IBM278", "IBM278"); // NOI18N
196
encodingIANAAliasesMap.put ("EBCDIC-CP-FI", "IBM278"); // NOI18N
197
encodingIANAAliasesMap.put ("EBCDIC-CP-SE", "IBM278"); // NOI18N
198

199             encodingIANA2JavaMap.put ("IBM280", "CP280"); // NOI18N
200
encodingIANADescriptionMap.put ("IBM280", Util.THIS.getString ("NAME_IBM280")); // NOI18N
201
encodingIANAAliasesMap.put ("IBM280", "IBM280"); // NOI18N
202
encodingIANAAliasesMap.put ("EBCDIC-CP-IT", "IBM280"); // NOI18N
203

204             encodingIANA2JavaMap.put ("IBM284", "CP284"); // NOI18N
205
encodingIANADescriptionMap.put ("IBM284", Util.THIS.getString ("NAME_IBM284")); // NOI18N
206
encodingIANAAliasesMap.put ("IBM284", "IBM284"); // NOI18N
207
encodingIANAAliasesMap.put ("EBCDIC-CP-ES", "IBM284"); // NOI18N
208

209             encodingIANA2JavaMap.put ("IBM285", "CP285"); // NOI18N
210
encodingIANADescriptionMap.put ("IBM285", Util.THIS.getString ("NAME_IBM285")); // NOI18N
211
encodingIANAAliasesMap.put ("IBM285", "IBM285"); // NOI18N
212
encodingIANAAliasesMap.put ("EBCDIC-CP-GB", "IBM285"); // NOI18N
213

214             encodingIANA2JavaMap.put ("IBM297", "CP297"); // NOI18N
215
encodingIANADescriptionMap.put ("IBM297", Util.THIS.getString ("NAME_IBM297")); // NOI18N
216
encodingIANAAliasesMap.put ("IBM297", "IBM297"); // NOI18N
217
encodingIANAAliasesMap.put ("EBCDIC-CP-FR", "IBM297"); // NOI18N
218

219             encodingIANA2JavaMap.put ("IBM424", "CP424"); // NOI18N
220
encodingIANADescriptionMap.put ("IBM424", Util.THIS.getString ("NAME_IBM424")); // NOI18N
221
encodingIANAAliasesMap.put ("IBM424", "IBM424"); // NOI18N
222
encodingIANAAliasesMap.put ("EBCDIC-CP-HE", "IBM424"); // NOI18N
223

224             encodingIANA2JavaMap.put ("IBM500", "CP500"); // NOI18N
225
encodingIANADescriptionMap.put ("IBM500", Util.THIS.getString ("NAME_IBM500")); // NOI18N
226
encodingIANAAliasesMap.put ("IBM500", "IBM500"); // NOI18N
227
encodingIANAAliasesMap.put ("EBCDIC-CP-CH", "IBM500"); // NOI18N
228
encodingIANAAliasesMap.put ("EBCDIC-CP-BE", "IBM500"); // NOI18N
229

230             encodingIANA2JavaMap.put ("IBM870", "CP870"); // NOI18N
231
encodingIANADescriptionMap.put ("IBM870", Util.THIS.getString ("NAME_IBM870")); // NOI18N
232
encodingIANAAliasesMap.put ("IBM870", "IBM870"); // NOI18N
233
encodingIANAAliasesMap.put ("EBCDIC-CP-ROECE", "IBM870"); // NOI18N
234
encodingIANAAliasesMap.put ("EBCDIC-CP-YU", "IBM870"); // NOI18N
235

236             encodingIANA2JavaMap.put ("IBM871", "CP871"); // NOI18N
237
encodingIANADescriptionMap.put ("IBM871", Util.THIS.getString ("NAME_IBM871")); // NOI18N
238
encodingIANAAliasesMap.put ("IBM871", "IBM871"); // NOI18N
239
encodingIANAAliasesMap.put ("EBCDIC-CP-IS", "IBM871"); // NOI18N
240

241             encodingIANA2JavaMap.put ("IBM918", "CP918"); // NOI18N
242
encodingIANADescriptionMap.put ("IBM918", Util.THIS.getString ("NAME_IBM918")); // NOI18N
243
encodingIANAAliasesMap.put ("IBM918", "IBM918"); // NOI18N
244
encodingIANAAliasesMap.put ("EBCDIC-CP-AR2", "IBM918"); // NOI18N
245

246             encodingIANA2JavaMap.put ("EUC-JP", "EUCJIS"); // NOI18N
247
encodingIANADescriptionMap.put ("EUC-JP", Util.THIS.getString ("NAME_EUC-JP")); // NOI18N
248
encodingIANAAliasesMap.put ("EUC-JP", "EUC-JP"); // NOI18N
249

250             encodingIANA2JavaMap.put ("EUC-KR", "KSC5601"); // NOI18N
251
encodingIANADescriptionMap.put ("EUC-KR", Util.THIS.getString ("NAME_EUC-KR")); // NOI18N
252
encodingIANAAliasesMap.put ("EUC-KR", "EUC-KR"); // NOI18N
253

254             encodingIANA2JavaMap.put ("GB2312", "GB2312"); // NOI18N
255
encodingIANADescriptionMap.put ("GB2312", Util.THIS.getString ("NAME_GB2312")); // NOI18N
256
encodingIANAAliasesMap.put ("GB2312", "GB2312"); // NOI18N
257

258             encodingIANA2JavaMap.put ("ISO-2022-JP", "JIS"); // NOI18N
259
encodingIANADescriptionMap.put ("ISO-2022-JP", Util.THIS.getString ("NAME_ISO-2022-JP")); // NOI18N
260
encodingIANAAliasesMap.put ("ISO-2022-JP", "ISO-2022-JP"); // NOI18N
261

262             encodingIANA2JavaMap.put ("ISO-2022-KR", "ISO2022KR"); // NOI18N
263
encodingIANADescriptionMap.put ("ISO-2022-KR", Util.THIS.getString ("NAME_ISO-2022-KR")); // NOI18N
264
encodingIANAAliasesMap.put ("ISO-2022-KR", "ISO-2022-KR"); // NOI18N
265

266             encodingIANA2JavaMap.put ("ISO-8859-1", "8859_1"); // NOI18N
267
encodingIANADescriptionMap.put ("ISO-8859-1", Util.THIS.getString ("NAME_ISO-8859-1")); // NOI18N
268
encodingIANAAliasesMap.put ("ISO-8859-1", "ISO-8859-1"); // NOI18N
269
encodingIANAAliasesMap.put ("LATIN1", "ISO-8859-1"); // NOI18N
270
encodingIANAAliasesMap.put ("L1", "ISO-8859-1"); // NOI18N
271
encodingIANAAliasesMap.put ("IBM819", "ISO-8859-1"); // NOI18N
272
encodingIANAAliasesMap.put ("CP819", "ISO-8859-1"); // NOI18N
273

274             encodingIANA2JavaMap.put ("ISO-8859-2", "8859_2"); // NOI18N
275
encodingIANADescriptionMap.put ("ISO-8859-2", Util.THIS.getString ("NAME_ISO-8859-2")); // NOI18N
276
encodingIANAAliasesMap.put ("ISO-8859-2", "ISO-8859-2"); // NOI18N
277
encodingIANAAliasesMap.put ("LATIN2", "ISO-8859-2"); // NOI18N
278
encodingIANAAliasesMap.put ("L2", "ISO-8859-2"); // NOI18N
279

280             encodingIANA2JavaMap.put ("ISO-8859-3", "8859_3"); // NOI18N
281
encodingIANADescriptionMap.put ("ISO-8859-3", Util.THIS.getString ("NAME_ISO-8859-3")); // NOI18N
282
encodingIANAAliasesMap.put ("ISO-8859-3", "ISO-8859-3"); // NOI18N
283
encodingIANAAliasesMap.put ("LATIN3", "ISO-8859-3"); // NOI18N
284
encodingIANAAliasesMap.put ("L3", "ISO-8859-3"); // NOI18N
285

286             encodingIANA2JavaMap.put ("ISO-8859-4", "8859_4"); // NOI18N
287
encodingIANADescriptionMap.put ("ISO-8859-4", Util.THIS.getString ("NAME_ISO-8859-4")); // NOI18N
288
encodingIANAAliasesMap.put ("ISO-8859-4", "ISO-8859-4"); // NOI18N
289
encodingIANAAliasesMap.put ("LATIN4", "ISO-8859-4"); // NOI18N
290
encodingIANAAliasesMap.put ("L4", "ISO-8859-4"); // NOI18N
291

292             encodingIANA2JavaMap.put ("ISO-8859-5", "8859_5"); // NOI18N
293
encodingIANADescriptionMap.put ("ISO-8859-5", Util.THIS.getString ("NAME_ISO-8859-5")); // NOI18N
294
encodingIANAAliasesMap.put ("ISO-8859-5", "ISO-8859-5"); // NOI18N
295
encodingIANAAliasesMap.put ("CYRILLIC", "ISO-8859-5"); // NOI18N
296

297             encodingIANA2JavaMap.put ("ISO-8859-6", "8859_6"); // NOI18N
298
encodingIANADescriptionMap.put ("ISO-8859-6", Util.THIS.getString ("NAME_ISO-8859-6")); // NOI18N
299
encodingIANAAliasesMap.put ("ISO-8859-6", "ISO-8859-6"); // NOI18N
300

301             encodingIANA2JavaMap.put ("ISO-8859-7", "8859_7"); // NOI18N
302
encodingIANADescriptionMap.put ("ISO-8859-7", Util.THIS.getString ("NAME_ISO-8859-7")); // NOI18N
303
encodingIANAAliasesMap.put ("ISO-8859-7", "ISO-8859-7"); // NOI18N
304
encodingIANAAliasesMap.put ("GREEK", "ISO-8859-7"); // NOI18N
305
encodingIANAAliasesMap.put ("GREEK8", "ISO-8859-7"); // NOI18N
306

307             encodingIANA2JavaMap.put ("ISO-8859-8", "8859_8"); // NOI18N
308
encodingIANADescriptionMap.put ("ISO-8859-8", Util.THIS.getString ("NAME_ISO-8859-8")); // NOI18N
309
encodingIANAAliasesMap.put ("ISO-8859-8", "ISO-8859-8"); // NOI18N
310
encodingIANAAliasesMap.put ("HEBREW", "ISO-8859-8"); // NOI18N
311

312             encodingIANA2JavaMap.put ("ISO-8859-9", "8859_9"); // NOI18N
313
encodingIANADescriptionMap.put ("ISO-8859-9", Util.THIS.getString ("NAME_ISO-8859-9")); // NOI18N
314
encodingIANAAliasesMap.put ("ISO-8859-9", "ISO-8859-9"); // NOI18N
315
encodingIANAAliasesMap.put ("LATIN5", "ISO-8859-9"); // NOI18N
316
encodingIANAAliasesMap.put ("L5", "ISO-8859-9"); // NOI18N
317

318             encodingIANA2JavaMap.put ("KOI8-R", "KOI8_R"); // NOI18N
319
encodingIANADescriptionMap.put ("KOI8-R", Util.THIS.getString ("NAME_KOI8-R")); // NOI18N
320
encodingIANAAliasesMap.put ("KOI8-R", "KOI8-R"); // NOI18N
321

322             encodingIANADescriptionMap.put ("US-ASCII", Util.THIS.getString ("NAME_ASCII")); // NOI18N
323
encodingIANAAliasesMap.put ("ASCII", "US-ASCII"); // NOI18N
324
encodingIANAAliasesMap.put ("US-ASCII", "US-ASCII"); // NOI18N
325
encodingIANAAliasesMap.put ("ISO646-US", "US-ASCII"); // NOI18N
326
encodingIANAAliasesMap.put ("IBM367", "US-ASCII"); // NOI18N
327
encodingIANAAliasesMap.put ("CP367", "US-ASCII"); // NOI18N
328

329             encodingIANA2JavaMap.put ("UTF-8", "UTF8"); // NOI18N
330
encodingIANADescriptionMap.put ("UTF-8", Util.THIS.getString ("NAME_UTF-8")); // NOI18N
331
encodingIANAAliasesMap.put ("UTF-8", "UTF-8"); // NOI18N
332

333             encodingIANA2JavaMap.put ("UTF-16", "Unicode"); // NOI18N
334
encodingIANADescriptionMap.put ("UTF-16", Util.THIS.getString ("NAME_UTF-16")); // NOI18N
335
encodingIANAAliasesMap.put ("UTF-16", "UTF-16"); // NOI18N
336

337             
338             Iterator JavaDoc iter = encodingIANA2JavaMap.keySet().iterator();
339             Object JavaDoc key;
340             while (iter.hasNext()){
341                 key = iter.next();
342                 encodingJava2IANAMap.put(encodingIANA2JavaMap.get(key), key);
343             }
344             
345             encodingIANA2JavaMap.put ("US-ASCII", "8859_1"); // NOI18N
346
}
347
348
349         /**
350          */

351         public static Map JavaDoc getIANA2JavaMap () {
352             return encodingIANA2JavaMap;
353         }
354         
355         public static Map JavaDoc getJava2IANAMap () {
356             return encodingJava2IANAMap;
357         }
358
359     } // end: class EncodingUtil
360

361 }
362
Popular Tags