JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / JU / Rdr.js
1 Clazz.declarePackage ("JU");\r
2 Clazz.load (["javajs.api.GenericLineReader"], "JU.Rdr", ["java.io.BufferedInputStream", "$.BufferedReader", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "JU.AU", "$.Base64", "$.Encoding", "$.SB"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.reader = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, JU, "Rdr", null, javajs.api.GenericLineReader);\r
7 Clazz.makeConstructor (c$, \r
8 function (reader) {\r
9 this.reader = reader;\r
10 }, "java.io.BufferedReader");\r
11 Clazz.overrideMethod (c$, "readNextLine", \r
12 function () {\r
13 return this.reader.readLine ();\r
14 });\r
15 c$.readCifData = Clazz.defineMethod (c$, "readCifData", \r
16 function (parser, br) {\r
17 return parser.set (null, br).getAllCifData ();\r
18 }, "javajs.api.GenericCifDataParser,java.io.BufferedReader");\r
19 c$.fixUTF = Clazz.defineMethod (c$, "fixUTF", \r
20 function (bytes) {\r
21 var encoding = JU.Rdr.getUTFEncoding (bytes);\r
22 if (encoding !== JU.Encoding.NONE) try {\r
23 var s =  String.instantialize (bytes, encoding.name ().$replace ('_', '-'));\r
24 switch (encoding) {\r
25 case JU.Encoding.UTF8:\r
26 case JU.Encoding.UTF_16BE:\r
27 case JU.Encoding.UTF_16LE:\r
28 s = s.substring (1);\r
29 break;\r
30 default:\r
31 break;\r
32 }\r
33 return s;\r
34 } catch (e) {\r
35 if (Clazz.exceptionOf (e, java.io.UnsupportedEncodingException)) {\r
36 System.out.println (e);\r
37 } else {\r
38 throw e;\r
39 }\r
40 }\r
41 return  String.instantialize (bytes);\r
42 }, "~A");\r
43 c$.getUTFEncoding = Clazz.defineMethod (c$, "getUTFEncoding", \r
44  function (bytes) {\r
45 if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return JU.Encoding.UTF8;\r
46 if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return JU.Encoding.UTF_32BE;\r
47 if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return JU.Encoding.UTF_32LE;\r
48 if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return JU.Encoding.UTF_16LE;\r
49 if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return JU.Encoding.UTF_16BE;\r
50 return JU.Encoding.NONE;\r
51 }, "~A");\r
52 c$.getUTFEncodingForStream = Clazz.defineMethod (c$, "getUTFEncodingForStream", \r
53  function (is) {\r
54 {\r
55 is.resetStream();\r
56 }var abMagic =  Clazz.newByteArray (4, 0);\r
57 abMagic[3] = 1;\r
58 try {\r
59 is.mark (5);\r
60 } catch (e) {\r
61 if (Clazz.exceptionOf (e, Exception)) {\r
62 return JU.Encoding.NONE;\r
63 } else {\r
64 throw e;\r
65 }\r
66 }\r
67 is.read (abMagic, 0, 4);\r
68 is.reset ();\r
69 return JU.Rdr.getUTFEncoding (abMagic);\r
70 }, "java.io.BufferedInputStream");\r
71 c$.isBase64 = Clazz.defineMethod (c$, "isBase64", \r
72 function (sb) {\r
73 return (sb.indexOf (";base64,") == 0);\r
74 }, "JU.SB");\r
75 c$.isCompoundDocumentS = Clazz.defineMethod (c$, "isCompoundDocumentS", \r
76 function (is) {\r
77 return JU.Rdr.isCompoundDocumentB (JU.Rdr.getMagic (is, 8));\r
78 }, "java.io.InputStream");\r
79 c$.isCompoundDocumentB = Clazz.defineMethod (c$, "isCompoundDocumentB", \r
80 function (bytes) {\r
81 return (bytes.length >= 8 && bytes[0] == 0xD0 && bytes[1] == 0xCF && bytes[2] == 0x11 && bytes[3] == 0xE0 && bytes[4] == 0xA1 && bytes[5] == 0xB1 && bytes[6] == 0x1A && bytes[7] == 0xE1);\r
82 }, "~A");\r
83 c$.isGzipS = Clazz.defineMethod (c$, "isGzipS", \r
84 function (is) {\r
85 return JU.Rdr.isGzipB (JU.Rdr.getMagic (is, 2));\r
86 }, "java.io.InputStream");\r
87 c$.isGzipB = Clazz.defineMethod (c$, "isGzipB", \r
88 function (bytes) {\r
89 return (bytes != null && bytes.length >= 2 && bytes[0] == 0x1F && bytes[1] == 0x8B);\r
90 }, "~A");\r
91 c$.isPickleS = Clazz.defineMethod (c$, "isPickleS", \r
92 function (is) {\r
93 return JU.Rdr.isPickleB (JU.Rdr.getMagic (is, 2));\r
94 }, "java.io.InputStream");\r
95 c$.isPickleB = Clazz.defineMethod (c$, "isPickleB", \r
96 function (bytes) {\r
97 return (bytes != null && bytes.length >= 2 && bytes[0] == 0x7D && bytes[1] == 0x71);\r
98 }, "~A");\r
99 c$.isPngZipStream = Clazz.defineMethod (c$, "isPngZipStream", \r
100 function (is) {\r
101 return JU.Rdr.isPngZipB (JU.Rdr.getMagic (is, 55));\r
102 }, "java.io.InputStream");\r
103 c$.isPngZipB = Clazz.defineMethod (c$, "isPngZipB", \r
104 function (bytes) {\r
105 return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A);\r
106 }, "~A");\r
107 c$.isZipS = Clazz.defineMethod (c$, "isZipS", \r
108 function (is) {\r
109 return JU.Rdr.isZipB (JU.Rdr.getMagic (is, 4));\r
110 }, "java.io.InputStream");\r
111 c$.isZipB = Clazz.defineMethod (c$, "isZipB", \r
112 function (bytes) {\r
113 return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04);\r
114 }, "~A");\r
115 c$.getMagic = Clazz.defineMethod (c$, "getMagic", \r
116  function (is, n) {\r
117 var abMagic =  Clazz.newByteArray (n, 0);\r
118 {\r
119 is.resetStream();\r
120 }try {\r
121 is.mark (n + 1);\r
122 is.read (abMagic, 0, n);\r
123 } catch (e) {\r
124 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
125 } else {\r
126 throw e;\r
127 }\r
128 }\r
129 try {\r
130 is.reset ();\r
131 } catch (e) {\r
132 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
133 } else {\r
134 throw e;\r
135 }\r
136 }\r
137 return abMagic;\r
138 }, "java.io.InputStream,~N");\r
139 c$.getBIS = Clazz.defineMethod (c$, "getBIS", \r
140 function (bytes) {\r
141 return  new java.io.BufferedInputStream ( new java.io.ByteArrayInputStream (bytes));\r
142 }, "~A");\r
143 c$.getBR = Clazz.defineMethod (c$, "getBR", \r
144 function (string) {\r
145 return  new java.io.BufferedReader ( new java.io.StringReader (string));\r
146 }, "~S");\r
147 c$.getUnzippedInputStream = Clazz.defineMethod (c$, "getUnzippedInputStream", \r
148 function (jzt, bis) {\r
149 while (JU.Rdr.isGzipS (bis)) bis =  new java.io.BufferedInputStream (JU.Rdr.newGZIPInputStream (jzt, bis));\r
150 \r
151 return bis;\r
152 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream");\r
153 c$.getBytesFromSB = Clazz.defineMethod (c$, "getBytesFromSB", \r
154 function (sb) {\r
155 return (JU.Rdr.isBase64 (sb) ? JU.Base64.decodeBase64 (sb.substring (8)) : sb.toBytes (0, -1));\r
156 }, "JU.SB");\r
157 c$.getStreamAsBytes = Clazz.defineMethod (c$, "getStreamAsBytes", \r
158 function (bis, out) {\r
159 var buf =  Clazz.newByteArray (1024, 0);\r
160 var bytes = (out == null ?  Clazz.newByteArray (4096, 0) : null);\r
161 var len = 0;\r
162 var totalLen = 0;\r
163 while ((len = bis.read (buf, 0, 1024)) > 0) {\r
164 totalLen += len;\r
165 if (out == null) {\r
166 if (totalLen >= bytes.length) bytes = JU.AU.ensureLengthByte (bytes, totalLen * 2);\r
167 System.arraycopy (buf, 0, bytes, totalLen - len, len);\r
168 } else {\r
169 out.write (buf, 0, len);\r
170 }}\r
171 bis.close ();\r
172 if (out == null) {\r
173 return JU.AU.arrayCopyByte (bytes, totalLen);\r
174 }return totalLen + " bytes";\r
175 }, "java.io.BufferedInputStream,JU.OC");\r
176 c$.getBufferedReader = Clazz.defineMethod (c$, "getBufferedReader", \r
177 function (bis, charSet) {\r
178 if (JU.Rdr.getUTFEncodingForStream (bis) === JU.Encoding.NONE) return  new java.io.BufferedReader ( new java.io.InputStreamReader (bis, (charSet == null ? "UTF-8" : charSet)));\r
179 var bytes = JU.Rdr.getLimitedStreamBytes (bis, -1);\r
180 bis.close ();\r
181 return JU.Rdr.getBR (charSet == null ? JU.Rdr.fixUTF (bytes) :  String.instantialize (bytes, charSet));\r
182 }, "java.io.BufferedInputStream,~S");\r
183 c$.getLimitedStreamBytes = Clazz.defineMethod (c$, "getLimitedStreamBytes", \r
184 function (is, n) {\r
185 var buflen = (n > 0 && n < 1024 ? n : 1024);\r
186 var buf =  Clazz.newByteArray (buflen, 0);\r
187 var bytes =  Clazz.newByteArray (n < 0 ? 4096 : n, 0);\r
188 var len = 0;\r
189 var totalLen = 0;\r
190 if (n < 0) n = 2147483647;\r
191 while (totalLen < n && (len = is.read (buf, 0, buflen)) > 0) {\r
192 totalLen += len;\r
193 if (totalLen > bytes.length) bytes = JU.AU.ensureLengthByte (bytes, totalLen * 2);\r
194 System.arraycopy (buf, 0, bytes, totalLen - len, len);\r
195 if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen;\r
196 }\r
197 if (totalLen == bytes.length) return bytes;\r
198 buf =  Clazz.newByteArray (totalLen, 0);\r
199 System.arraycopy (bytes, 0, buf, 0, totalLen);\r
200 return buf;\r
201 }, "java.io.InputStream,~N");\r
202 c$.StreamToUTF8String = Clazz.defineMethod (c$, "StreamToUTF8String", \r
203 function (bis) {\r
204 var data =  new Array (1);\r
205 try {\r
206 JU.Rdr.readAllAsString (JU.Rdr.getBufferedReader (bis, "UTF-8"), -1, true, data, 0);\r
207 } catch (e) {\r
208 if (Clazz.exceptionOf (e, java.io.IOException)) {\r
209 } else {\r
210 throw e;\r
211 }\r
212 }\r
213 return data[0];\r
214 }, "java.io.BufferedInputStream");\r
215 c$.readAllAsString = Clazz.defineMethod (c$, "readAllAsString", \r
216 function (br, nBytesMax, allowBinary, data, i) {\r
217 try {\r
218 var sb = JU.SB.newN (8192);\r
219 var line;\r
220 if (nBytesMax < 0) {\r
221 line = br.readLine ();\r
222 if (allowBinary || line != null && line.indexOf ('\0') < 0 && (line.length != 4 || line.charCodeAt (0) != 65533 || line.indexOf ("PNG") != 1)) {\r
223 sb.append (line).appendC ('\n');\r
224 while ((line = br.readLine ()) != null) sb.append (line).appendC ('\n');\r
225 \r
226 }} else {\r
227 var n = 0;\r
228 var len;\r
229 while (n < nBytesMax && (line = br.readLine ()) != null) {\r
230 if (nBytesMax - n < (len = line.length) + 1) line = line.substring (0, nBytesMax - n - 1);\r
231 sb.append (line).appendC ('\n');\r
232 n += len + 1;\r
233 }\r
234 }br.close ();\r
235 data[i] = sb.toString ();\r
236 return true;\r
237 } catch (ioe) {\r
238 if (Clazz.exceptionOf (ioe, Exception)) {\r
239 data[i] = ioe.toString ();\r
240 return false;\r
241 } else {\r
242 throw ioe;\r
243 }\r
244 }\r
245 }, "java.io.BufferedReader,~N,~B,~A,~N");\r
246 c$.getPngZipPointAndCount = Clazz.defineMethod (c$, "getPngZipPointAndCount", \r
247 function (bis, pt_count) {\r
248 bis.mark (75);\r
249 try {\r
250 var data = JU.Rdr.getLimitedStreamBytes (bis, 74);\r
251 bis.reset ();\r
252 var pt = 0;\r
253 for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f;\r
254 \r
255 var n = 0;\r
256 for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f;\r
257 \r
258 pt_count[0] = pt;\r
259 pt_count[1] = n;\r
260 } catch (e) {\r
261 pt_count[1] = 0;\r
262 }\r
263 }, "java.io.BufferedInputStream,~A");\r
264 c$.getPngZipStream = Clazz.defineMethod (c$, "getPngZipStream", \r
265 function (bis, asNewStream) {\r
266 if (!JU.Rdr.isPngZipStream (bis)) return bis;\r
267 var data =  Clazz.newByteArray (0, 0);\r
268 bis.mark (75);\r
269 try {\r
270 var pt_count =  Clazz.newIntArray (2, 0);\r
271 JU.Rdr.getPngZipPointAndCount (bis, pt_count);\r
272 if (pt_count[1] != 0) {\r
273 var pt = pt_count[0];\r
274 while (pt > 0) pt -= bis.skip (pt);\r
275 \r
276 if (!asNewStream) return bis;\r
277 data = JU.Rdr.getLimitedStreamBytes (bis, pt_count[1]);\r
278 }} catch (e) {\r
279 } finally {\r
280 try {\r
281 if (asNewStream) bis.close ();\r
282 } catch (e) {\r
283 if (Clazz.exceptionOf (e, Exception)) {\r
284 } else {\r
285 throw e;\r
286 }\r
287 }\r
288 }\r
289 return JU.Rdr.getBIS (data);\r
290 }, "java.io.BufferedInputStream,~B");\r
291 c$.readFileAsMap = Clazz.defineMethod (c$, "readFileAsMap", \r
292 function (jzt, is, bdata, name) {\r
293 jzt.readFileAsMap (is, bdata, name);\r
294 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream,java.util.Map,~S");\r
295 c$.getZipDirectoryAsStringAndClose = Clazz.defineMethod (c$, "getZipDirectoryAsStringAndClose", \r
296 function (jzt, t) {\r
297 return jzt.getZipDirectoryAsStringAndClose (t);\r
298 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream");\r
299 c$.newGZIPInputStream = Clazz.defineMethod (c$, "newGZIPInputStream", \r
300 function (jzt, bis) {\r
301 return jzt.newGZIPInputStream (bis);\r
302 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream");\r
303 c$.newZipInputStream = Clazz.defineMethod (c$, "newZipInputStream", \r
304 function (jzt, $in) {\r
305 return jzt.newZipInputStream ($in);\r
306 }, "javajs.api.GenericZipTools,java.io.InputStream");\r
307 c$.getZipFileDirectory = Clazz.defineMethod (c$, "getZipFileDirectory", \r
308 function (jzt, bis, subFileList, listPtr, asBufferedInputStream) {\r
309 return jzt.getZipFileDirectory (jzt, bis, subFileList, listPtr, asBufferedInputStream);\r
310 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~A,~N,~B");\r
311 c$.getZipDirectoryAndClose = Clazz.defineMethod (c$, "getZipDirectoryAndClose", \r
312 function (jzt, t, manifestID) {\r
313 return jzt.getZipDirectoryAndClose (t, manifestID);\r
314 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~S");\r
315 c$.getAllZipData = Clazz.defineMethod (c$, "getAllZipData", \r
316 function (jzt, bis, subFileList, replace, string, fileData) {\r
317 jzt.getAllZipData (bis, subFileList, replace, string, fileData);\r
318 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~A,~S,~S,java.util.Map");\r
319 c$.getZipFileContentsAsBytes = Clazz.defineMethod (c$, "getZipFileContentsAsBytes", \r
320 function (jzt, bis, subFileList, i) {\r
321 return jzt.getZipFileContentsAsBytes (bis, subFileList, i);\r
322 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream,~A,~N");\r
323 c$.addZipEntry = Clazz.defineMethod (c$, "addZipEntry", \r
324 function (jzt, zos, fileName) {\r
325 jzt.addZipEntry (zos, fileName);\r
326 }, "javajs.api.GenericZipTools,~O,~S");\r
327 c$.closeZipEntry = Clazz.defineMethod (c$, "closeZipEntry", \r
328 function (jzt, zos) {\r
329 jzt.closeZipEntry (zos);\r
330 }, "javajs.api.GenericZipTools,~O");\r
331 c$.getZipOutputStream = Clazz.defineMethod (c$, "getZipOutputStream", \r
332 function (jzt, bos) {\r
333 return jzt.getZipOutputStream (bos);\r
334 }, "javajs.api.GenericZipTools,~O");\r
335 c$.getCrcValue = Clazz.defineMethod (c$, "getCrcValue", \r
336 function (jzt, bytes) {\r
337 return jzt.getCrcValue (bytes);\r
338 }, "javajs.api.GenericZipTools,~A");\r
339 c$.getZipRoot = Clazz.defineMethod (c$, "getZipRoot", \r
340 function (fileName) {\r
341 var pt = fileName.indexOf ("|");\r
342 return (pt < 0 ? fileName : fileName.substring (0, pt));\r
343 }, "~S");\r
344 });\r