1 19 package org.netbeans.modules.xml.core.lib; 20 21 import java.io.Reader ; 22 import java.io.StringReader ; 23 import java.io.BufferedReader ; 24 import java.io.IOException ; 25 import java.io.EOFException ; 26 import java.util.Iterator ; 27 28 import javax.swing.text.Document ; 29 30 import org.xml.sax.InputSource ; 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 ; 36 import java.util.Map ; 37 import java.util.TreeMap ; 38 39 import org.openide.filesystems.FileObject; 40 import org.openide.loaders.DataObject; 41 42 48 public final class Convertors { 49 50 51 54 public static String documentToString(final Document doc) { 55 56 if (doc == null) throw new NullPointerException (); 57 58 final String [] str = new String [1]; 59 60 Runnable run = new Runnable () { 62 public void run () { 63 try { 64 str[0] = doc.getText(0, doc.getLength()); 65 } catch (javax.swing.text.BadLocationException e) { 66 e.printStackTrace(); 68 } 69 } 70 }; 71 72 doc.render(run); 73 return str[0]; 74 75 } 76 77 80 public static InputSource documentToInputSource(Document doc) { 81 82 if (doc == null) throw new NullPointerException (); 83 84 String text = documentToString(doc); 85 Reader reader = new StringReader (text); 86 87 String system = (String ) doc.getProperty(TextEditorSupport.PROP_DOCUMENT_URL); 89 90 if (system == null) { 92 Object obj = doc.getProperty(Document.StreamDescriptionProperty); 93 if (obj instanceof DataObject) { 94 try { 95 DataObject dobj = (DataObject) obj; 96 FileObject fo = dobj.getPrimaryFile(); 97 URL url = fo.getURL(); 98 system = url.toExternalForm(); 99 } catch (IOException 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 if (system == null) { 111 system = "XML/Core/Convertors/documentToInputSource()"; } 113 114 InputSource in = new InputSource (system); in.setCharacterStream(reader); 116 return in; 117 } 118 119 120 124 public static String readerToString(Reader reader) throws IOException { 125 126 BufferedReader fastReader = new BufferedReader (reader); 127 StringBuffer buf = new StringBuffer (1024); 128 try { 129 for (int i = fastReader.read(); i >= 0; i = fastReader.read()) { 130 buf.append((char)i); 131 } 132 } catch (EOFException eof) { 133 } 135 136 return buf.toString(); 137 } 138 139 141 public static final String iana2java (String iana) { 142 String java = (String ) Convertors.EncodingUtil.getIANA2JavaMap ().get (iana.toUpperCase ()); 143 return java == null ? iana : java; 144 } 145 146 public static final String java2iana (String java) { 147 String iana = (String ) Convertors.EncodingUtil.getJava2IANAMap ().get (java); 148 return iana == null ? java : iana; 149 } 150 151 152 154 157 static class EncodingUtil { 158 159 160 protected final static Map encodingIANA2JavaMap = new TreeMap (); 161 162 163 protected final static Map encodingIANADescriptionMap = new TreeMap (); 164 165 166 protected final static Map encodingIANAAliasesMap = new TreeMap (); 167 168 protected final static Map encodingJava2IANAMap = new TreeMap (); 169 170 174 static { 175 encodingIANA2JavaMap.put ("BIG5", "Big5"); encodingIANADescriptionMap.put ("BIG5", Util.THIS.getString ("NAME_BIG5")); encodingIANAAliasesMap.put ("BIG5", "BIG5"); 179 encodingIANA2JavaMap.put ("IBM037", "CP037"); encodingIANADescriptionMap.put ("IBM037", Util.THIS.getString ("NAME_IBM037")); encodingIANAAliasesMap.put ("IBM037", "IBM037"); encodingIANAAliasesMap.put ("EBCDIC-CP-US", "IBM037"); encodingIANAAliasesMap.put ("EBCDIC-CP-CA", "IBM037"); encodingIANAAliasesMap.put ("EBCDIC-CP-NL", "IBM037"); encodingIANAAliasesMap.put ("EBCDIC-CP-WT", "IBM037"); 187 encodingIANA2JavaMap.put ("IBM277", "CP277"); encodingIANADescriptionMap.put ("IBM277", Util.THIS.getString ("NAME_IBM277")); encodingIANAAliasesMap.put ("IBM277", "IBM277"); encodingIANAAliasesMap.put ("EBCDIC-CP-DK", "IBM277"); encodingIANAAliasesMap.put ("EBCDIC-CP-NO", "IBM277"); 193 encodingIANA2JavaMap.put ("IBM278", "CP278"); encodingIANADescriptionMap.put ("IBM278", Util.THIS.getString ("NAME_IBM277")); encodingIANAAliasesMap.put ("IBM278", "IBM278"); encodingIANAAliasesMap.put ("EBCDIC-CP-FI", "IBM278"); encodingIANAAliasesMap.put ("EBCDIC-CP-SE", "IBM278"); 199 encodingIANA2JavaMap.put ("IBM280", "CP280"); encodingIANADescriptionMap.put ("IBM280", Util.THIS.getString ("NAME_IBM280")); encodingIANAAliasesMap.put ("IBM280", "IBM280"); encodingIANAAliasesMap.put ("EBCDIC-CP-IT", "IBM280"); 204 encodingIANA2JavaMap.put ("IBM284", "CP284"); encodingIANADescriptionMap.put ("IBM284", Util.THIS.getString ("NAME_IBM284")); encodingIANAAliasesMap.put ("IBM284", "IBM284"); encodingIANAAliasesMap.put ("EBCDIC-CP-ES", "IBM284"); 209 encodingIANA2JavaMap.put ("IBM285", "CP285"); encodingIANADescriptionMap.put ("IBM285", Util.THIS.getString ("NAME_IBM285")); encodingIANAAliasesMap.put ("IBM285", "IBM285"); encodingIANAAliasesMap.put ("EBCDIC-CP-GB", "IBM285"); 214 encodingIANA2JavaMap.put ("IBM297", "CP297"); encodingIANADescriptionMap.put ("IBM297", Util.THIS.getString ("NAME_IBM297")); encodingIANAAliasesMap.put ("IBM297", "IBM297"); encodingIANAAliasesMap.put ("EBCDIC-CP-FR", "IBM297"); 219 encodingIANA2JavaMap.put ("IBM424", "CP424"); encodingIANADescriptionMap.put ("IBM424", Util.THIS.getString ("NAME_IBM424")); encodingIANAAliasesMap.put ("IBM424", "IBM424"); encodingIANAAliasesMap.put ("EBCDIC-CP-HE", "IBM424"); 224 encodingIANA2JavaMap.put ("IBM500", "CP500"); encodingIANADescriptionMap.put ("IBM500", Util.THIS.getString ("NAME_IBM500")); encodingIANAAliasesMap.put ("IBM500", "IBM500"); encodingIANAAliasesMap.put ("EBCDIC-CP-CH", "IBM500"); encodingIANAAliasesMap.put ("EBCDIC-CP-BE", "IBM500"); 230 encodingIANA2JavaMap.put ("IBM870", "CP870"); encodingIANADescriptionMap.put ("IBM870", Util.THIS.getString ("NAME_IBM870")); encodingIANAAliasesMap.put ("IBM870", "IBM870"); encodingIANAAliasesMap.put ("EBCDIC-CP-ROECE", "IBM870"); encodingIANAAliasesMap.put ("EBCDIC-CP-YU", "IBM870"); 236 encodingIANA2JavaMap.put ("IBM871", "CP871"); encodingIANADescriptionMap.put ("IBM871", Util.THIS.getString ("NAME_IBM871")); encodingIANAAliasesMap.put ("IBM871", "IBM871"); encodingIANAAliasesMap.put ("EBCDIC-CP-IS", "IBM871"); 241 encodingIANA2JavaMap.put ("IBM918", "CP918"); encodingIANADescriptionMap.put ("IBM918", Util.THIS.getString ("NAME_IBM918")); encodingIANAAliasesMap.put ("IBM918", "IBM918"); encodingIANAAliasesMap.put ("EBCDIC-CP-AR2", "IBM918"); 246 encodingIANA2JavaMap.put ("EUC-JP", "EUCJIS"); encodingIANADescriptionMap.put ("EUC-JP", Util.THIS.getString ("NAME_EUC-JP")); encodingIANAAliasesMap.put ("EUC-JP", "EUC-JP"); 250 encodingIANA2JavaMap.put ("EUC-KR", "KSC5601"); encodingIANADescriptionMap.put ("EUC-KR", Util.THIS.getString ("NAME_EUC-KR")); encodingIANAAliasesMap.put ("EUC-KR", "EUC-KR"); 254 encodingIANA2JavaMap.put ("GB2312", "GB2312"); encodingIANADescriptionMap.put ("GB2312", Util.THIS.getString ("NAME_GB2312")); encodingIANAAliasesMap.put ("GB2312", "GB2312"); 258 encodingIANA2JavaMap.put ("ISO-2022-JP", "JIS"); encodingIANADescriptionMap.put ("ISO-2022-JP", Util.THIS.getString ("NAME_ISO-2022-JP")); encodingIANAAliasesMap.put ("ISO-2022-JP", "ISO-2022-JP"); 262 encodingIANA2JavaMap.put ("ISO-2022-KR", "ISO2022KR"); encodingIANADescriptionMap.put ("ISO-2022-KR", Util.THIS.getString ("NAME_ISO-2022-KR")); encodingIANAAliasesMap.put ("ISO-2022-KR", "ISO-2022-KR"); 266 encodingIANA2JavaMap.put ("ISO-8859-1", "8859_1"); encodingIANADescriptionMap.put ("ISO-8859-1", Util.THIS.getString ("NAME_ISO-8859-1")); encodingIANAAliasesMap.put ("ISO-8859-1", "ISO-8859-1"); encodingIANAAliasesMap.put ("LATIN1", "ISO-8859-1"); encodingIANAAliasesMap.put ("L1", "ISO-8859-1"); encodingIANAAliasesMap.put ("IBM819", "ISO-8859-1"); encodingIANAAliasesMap.put ("CP819", "ISO-8859-1"); 274 encodingIANA2JavaMap.put ("ISO-8859-2", "8859_2"); encodingIANADescriptionMap.put ("ISO-8859-2", Util.THIS.getString ("NAME_ISO-8859-2")); encodingIANAAliasesMap.put ("ISO-8859-2", "ISO-8859-2"); encodingIANAAliasesMap.put ("LATIN2", "ISO-8859-2"); encodingIANAAliasesMap.put ("L2", "ISO-8859-2"); 280 encodingIANA2JavaMap.put ("ISO-8859-3", "8859_3"); encodingIANADescriptionMap.put ("ISO-8859-3", Util.THIS.getString ("NAME_ISO-8859-3")); encodingIANAAliasesMap.put ("ISO-8859-3", "ISO-8859-3"); encodingIANAAliasesMap.put ("LATIN3", "ISO-8859-3"); encodingIANAAliasesMap.put ("L3", "ISO-8859-3"); 286 encodingIANA2JavaMap.put ("ISO-8859-4", "8859_4"); encodingIANADescriptionMap.put ("ISO-8859-4", Util.THIS.getString ("NAME_ISO-8859-4")); encodingIANAAliasesMap.put ("ISO-8859-4", "ISO-8859-4"); encodingIANAAliasesMap.put ("LATIN4", "ISO-8859-4"); encodingIANAAliasesMap.put ("L4", "ISO-8859-4"); 292 encodingIANA2JavaMap.put ("ISO-8859-5", "8859_5"); encodingIANADescriptionMap.put ("ISO-8859-5", Util.THIS.getString ("NAME_ISO-8859-5")); encodingIANAAliasesMap.put ("ISO-8859-5", "ISO-8859-5"); encodingIANAAliasesMap.put ("CYRILLIC", "ISO-8859-5"); 297 encodingIANA2JavaMap.put ("ISO-8859-6", "8859_6"); encodingIANADescriptionMap.put ("ISO-8859-6", Util.THIS.getString ("NAME_ISO-8859-6")); encodingIANAAliasesMap.put ("ISO-8859-6", "ISO-8859-6"); 301 encodingIANA2JavaMap.put ("ISO-8859-7", "8859_7"); encodingIANADescriptionMap.put ("ISO-8859-7", Util.THIS.getString ("NAME_ISO-8859-7")); encodingIANAAliasesMap.put ("ISO-8859-7", "ISO-8859-7"); encodingIANAAliasesMap.put ("GREEK", "ISO-8859-7"); encodingIANAAliasesMap.put ("GREEK8", "ISO-8859-7"); 307 encodingIANA2JavaMap.put ("ISO-8859-8", "8859_8"); encodingIANADescriptionMap.put ("ISO-8859-8", Util.THIS.getString ("NAME_ISO-8859-8")); encodingIANAAliasesMap.put ("ISO-8859-8", "ISO-8859-8"); encodingIANAAliasesMap.put ("HEBREW", "ISO-8859-8"); 312 encodingIANA2JavaMap.put ("ISO-8859-9", "8859_9"); encodingIANADescriptionMap.put ("ISO-8859-9", Util.THIS.getString ("NAME_ISO-8859-9")); encodingIANAAliasesMap.put ("ISO-8859-9", "ISO-8859-9"); encodingIANAAliasesMap.put ("LATIN5", "ISO-8859-9"); encodingIANAAliasesMap.put ("L5", "ISO-8859-9"); 318 encodingIANA2JavaMap.put ("KOI8-R", "KOI8_R"); encodingIANADescriptionMap.put ("KOI8-R", Util.THIS.getString ("NAME_KOI8-R")); encodingIANAAliasesMap.put ("KOI8-R", "KOI8-R"); 322 encodingIANADescriptionMap.put ("US-ASCII", Util.THIS.getString ("NAME_ASCII")); encodingIANAAliasesMap.put ("ASCII", "US-ASCII"); encodingIANAAliasesMap.put ("US-ASCII", "US-ASCII"); encodingIANAAliasesMap.put ("ISO646-US", "US-ASCII"); encodingIANAAliasesMap.put ("IBM367", "US-ASCII"); encodingIANAAliasesMap.put ("CP367", "US-ASCII"); 329 encodingIANA2JavaMap.put ("UTF-8", "UTF8"); encodingIANADescriptionMap.put ("UTF-8", Util.THIS.getString ("NAME_UTF-8")); encodingIANAAliasesMap.put ("UTF-8", "UTF-8"); 333 encodingIANA2JavaMap.put ("UTF-16", "Unicode"); encodingIANADescriptionMap.put ("UTF-16", Util.THIS.getString ("NAME_UTF-16")); encodingIANAAliasesMap.put ("UTF-16", "UTF-16"); 337 338 Iterator iter = encodingIANA2JavaMap.keySet().iterator(); 339 Object 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"); } 347 348 349 351 public static Map getIANA2JavaMap () { 352 return encodingIANA2JavaMap; 353 } 354 355 public static Map getJava2IANAMap () { 356 return encodingJava2IANAMap; 357 } 358 359 } 361 } 362 | Popular Tags |