1 Clazz.declarePackage ("javajs.util");
\r
2 Clazz.load (["javajs.api.GenericLineReader"], "javajs.util.Rdr", ["java.io.BufferedInputStream", "$.BufferedReader", "$.ByteArrayInputStream", "$.InputStreamReader", "$.StringReader", "javajs.util.AU", "$.Base64", "$.Encoding", "$.SB"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
5 Clazz.instantialize (this, arguments);
\r
6 }, javajs.util, "Rdr", null, javajs.api.GenericLineReader);
\r
7 Clazz.makeConstructor (c$,
\r
9 this.reader = reader;
\r
10 }, "java.io.BufferedReader");
\r
11 Clazz.overrideMethod (c$, "readNextLine",
\r
13 return this.reader.readLine ();
\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
21 var encoding = javajs.util.Rdr.getUTFEncoding (bytes);
\r
22 if (encoding !== javajs.util.Encoding.NONE) try {
\r
23 var s = String.instantialize (bytes, encoding.name ().$replace ('_', '-'));
\r
25 case javajs.util.Encoding.UTF8:
\r
26 case javajs.util.Encoding.UTF_16BE:
\r
27 case javajs.util.Encoding.UTF_16LE:
\r
28 s = s.substring (1);
\r
35 if (Clazz.exceptionOf (e, java.io.UnsupportedEncodingException)) {
\r
36 System.out.println (e);
\r
41 return String.instantialize (bytes);
\r
43 c$.getUTFEncoding = Clazz.defineMethod (c$, "getUTFEncoding",
\r
44 ($fz = function (bytes) {
\r
45 if (bytes.length >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) return javajs.util.Encoding.UTF8;
\r
46 if (bytes.length >= 4 && bytes[0] == 0 && bytes[1] == 0 && bytes[2] == 0xFE && bytes[3] == 0xFF) return javajs.util.Encoding.UTF_32BE;
\r
47 if (bytes.length >= 4 && bytes[0] == 0xFF && bytes[1] == 0xFE && bytes[2] == 0 && bytes[3] == 0) return javajs.util.Encoding.UTF_32LE;
\r
48 if (bytes.length >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) return javajs.util.Encoding.UTF_16LE;
\r
49 if (bytes.length >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) return javajs.util.Encoding.UTF_16BE;
\r
50 return javajs.util.Encoding.NONE;
\r
51 }, $fz.isPrivate = true, $fz), "~A");
\r
52 c$.getUTFEncodingForStream = Clazz.defineMethod (c$, "getUTFEncodingForStream",
\r
53 ($fz = function (is) {
\r
56 }var abMagic = Clazz.newByteArray (4, 0);
\r
61 if (Clazz.exceptionOf (e, Exception)) {
\r
62 return javajs.util.Encoding.NONE;
\r
67 is.read (abMagic, 0, 4);
\r
69 return javajs.util.Rdr.getUTFEncoding (abMagic);
\r
70 }, $fz.isPrivate = true, $fz), "java.io.BufferedInputStream");
\r
71 c$.isBase64 = Clazz.defineMethod (c$, "isBase64",
\r
73 return (sb.indexOf (";base64,") == 0);
\r
74 }, "javajs.util.SB");
\r
75 c$.isCompoundDocumentS = Clazz.defineMethod (c$, "isCompoundDocumentS",
\r
77 return javajs.util.Rdr.isCompoundDocumentB (javajs.util.Rdr.getMagic (is, 8));
\r
78 }, "java.io.InputStream");
\r
79 c$.isCompoundDocumentB = Clazz.defineMethod (c$, "isCompoundDocumentB",
\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
83 c$.isGzipS = Clazz.defineMethod (c$, "isGzipS",
\r
85 return javajs.util.Rdr.isGzipB (javajs.util.Rdr.getMagic (is, 2));
\r
86 }, "java.io.InputStream");
\r
87 c$.isGzipB = Clazz.defineMethod (c$, "isGzipB",
\r
89 return (bytes != null && bytes.length >= 2 && bytes[0] == 0x1F && bytes[1] == 0x8B);
\r
91 c$.isPickleS = Clazz.defineMethod (c$, "isPickleS",
\r
93 return javajs.util.Rdr.isPickleB (javajs.util.Rdr.getMagic (is, 2));
\r
94 }, "java.io.InputStream");
\r
95 c$.isPickleB = Clazz.defineMethod (c$, "isPickleB",
\r
97 return (bytes != null && bytes.length >= 2 && bytes[0] == 0x7D && bytes[1] == 0x71);
\r
99 c$.isPngZipStream = Clazz.defineMethod (c$, "isPngZipStream",
\r
101 return javajs.util.Rdr.isPngZipB (javajs.util.Rdr.getMagic (is, 55));
\r
102 }, "java.io.InputStream");
\r
103 c$.isPngZipB = Clazz.defineMethod (c$, "isPngZipB",
\r
105 return (bytes[50] == 0 && bytes[51] == 0x50 && bytes[52] == 0x4E && bytes[53] == 0x47 && bytes[54] == 0x4A);
\r
107 c$.isZipS = Clazz.defineMethod (c$, "isZipS",
\r
109 return javajs.util.Rdr.isZipB (javajs.util.Rdr.getMagic (is, 4));
\r
110 }, "java.io.InputStream");
\r
111 c$.isZipB = Clazz.defineMethod (c$, "isZipB",
\r
113 return (bytes.length >= 4 && bytes[0] == 0x50 && bytes[1] == 0x4B && bytes[2] == 0x03 && bytes[3] == 0x04);
\r
115 c$.getMagic = Clazz.defineMethod (c$, "getMagic",
\r
116 ($fz = function (is, n) {
\r
117 var abMagic = Clazz.newByteArray (n, 0);
\r
122 is.read (abMagic, 0, n);
\r
124 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
132 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
138 }, $fz.isPrivate = true, $fz), "java.io.InputStream,~N");
\r
139 c$.guessMimeTypeForBytes = Clazz.defineMethod (c$, "guessMimeTypeForBytes",
\r
141 switch (bytes.length < 2 ? -1 : bytes[1]) {
\r
143 return "image/jpg";
\r
145 return "image/gif";
\r
147 return "image/BMP";
\r
149 return "image/png";
\r
151 return "image/unknown";
\r
154 c$.getBIS = Clazz.defineMethod (c$, "getBIS",
\r
156 return new java.io.BufferedInputStream ( new java.io.ByteArrayInputStream (bytes));
\r
158 c$.getBR = Clazz.defineMethod (c$, "getBR",
\r
159 function (string) {
\r
160 return new java.io.BufferedReader ( new java.io.StringReader (string));
\r
162 c$.getUnzippedInputStream = Clazz.defineMethod (c$, "getUnzippedInputStream",
\r
163 function (jzt, bis) {
\r
164 while (javajs.util.Rdr.isGzipS (bis)) bis = new java.io.BufferedInputStream (jzt.newGZIPInputStream (bis));
\r
167 }, "javajs.api.GenericZipTools,java.io.BufferedInputStream");
\r
168 c$.getBytesFromSB = Clazz.defineMethod (c$, "getBytesFromSB",
\r
170 return (javajs.util.Rdr.isBase64 (sb) ? javajs.util.Base64.decodeBase64 (sb.substring (8)) : sb.toBytes (0, -1));
\r
171 }, "javajs.util.SB");
\r
172 c$.getStreamAsBytes = Clazz.defineMethod (c$, "getStreamAsBytes",
\r
173 function (bis, out) {
\r
174 var buf = Clazz.newByteArray (1024, 0);
\r
175 var bytes = (out == null ? Clazz.newByteArray (4096, 0) : null);
\r
178 while ((len = bis.read (buf, 0, 1024)) > 0) {
\r
181 if (totalLen >= bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);
\r
182 System.arraycopy (buf, 0, bytes, totalLen - len, len);
\r
184 out.write (buf, 0, len);
\r
188 return javajs.util.AU.arrayCopyByte (bytes, totalLen);
\r
189 }return totalLen + " bytes";
\r
190 }, "java.io.BufferedInputStream,javajs.util.OC");
\r
191 c$.getBufferedReader = Clazz.defineMethod (c$, "getBufferedReader",
\r
192 function (bis, charSet) {
\r
193 if (javajs.util.Rdr.getUTFEncodingForStream (bis) === javajs.util.Encoding.NONE) return new java.io.BufferedReader ( new java.io.InputStreamReader (bis, (charSet == null ? "UTF-8" : charSet)));
\r
194 var bytes = javajs.util.Rdr.getLimitedStreamBytes (bis, -1);
\r
196 return javajs.util.Rdr.getBR (charSet == null ? javajs.util.Rdr.fixUTF (bytes) : String.instantialize (bytes, charSet));
\r
197 }, "java.io.BufferedInputStream,~S");
\r
198 c$.getLimitedStreamBytes = Clazz.defineMethod (c$, "getLimitedStreamBytes",
\r
200 var buflen = (n > 0 && n < 1024 ? n : 1024);
\r
201 var buf = Clazz.newByteArray (buflen, 0);
\r
202 var bytes = Clazz.newByteArray (n < 0 ? 4096 : n, 0);
\r
205 if (n < 0) n = 2147483647;
\r
206 while (totalLen < n && (len = is.read (buf, 0, buflen)) > 0) {
\r
208 if (totalLen > bytes.length) bytes = javajs.util.AU.ensureLengthByte (bytes, totalLen * 2);
\r
209 System.arraycopy (buf, 0, bytes, totalLen - len, len);
\r
210 if (n != 2147483647 && totalLen + buflen > bytes.length) buflen = bytes.length - totalLen;
\r
212 if (totalLen == bytes.length) return bytes;
\r
213 buf = Clazz.newByteArray (totalLen, 0);
\r
214 System.arraycopy (bytes, 0, buf, 0, totalLen);
\r
216 }, "java.io.InputStream,~N");
\r
217 c$.StreamToUTF8String = Clazz.defineMethod (c$, "StreamToUTF8String",
\r
219 var data = new Array (1);
\r
221 javajs.util.Rdr.readAllAsString (javajs.util.Rdr.getBufferedReader (bis, "UTF-8"), -1, true, data, 0);
\r
223 if (Clazz.exceptionOf (e, java.io.IOException)) {
\r
229 }, "java.io.BufferedInputStream");
\r
230 c$.readAllAsString = Clazz.defineMethod (c$, "readAllAsString",
\r
231 function (br, nBytesMax, allowBinary, data, i) {
\r
233 var sb = javajs.util.SB.newN (8192);
\r
235 if (nBytesMax < 0) {
\r
236 line = br.readLine ();
\r
237 if (allowBinary || line != null && line.indexOf ('\0') < 0 && (line.length != 4 || line.charCodeAt (0) != 65533 || line.indexOf ("PNG") != 1)) {
\r
238 sb.append (line).appendC ('\n');
\r
239 while ((line = br.readLine ()) != null) sb.append (line).appendC ('\n');
\r
244 while (n < nBytesMax && (line = br.readLine ()) != null) {
\r
245 if (nBytesMax - n < (len = line.length) + 1) line = line.substring (0, nBytesMax - n - 1);
\r
246 sb.append (line).appendC ('\n');
\r
250 data[i] = sb.toString ();
\r
253 if (Clazz.exceptionOf (ioe, Exception)) {
\r
254 data[i] = ioe.toString ();
\r
260 }, "java.io.BufferedReader,~N,~B,~A,~N");
\r
261 c$.getPngZipPointAndCount = Clazz.defineMethod (c$, "getPngZipPointAndCount",
\r
262 function (bis, pt_count) {
\r
265 var data = javajs.util.Rdr.getLimitedStreamBytes (bis, 74);
\r
268 for (var i = 64, f = 1; --i > 54; f *= 10) pt += (data[i] - 48) * f;
\r
271 for (var i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - 48) * f;
\r
278 }, "java.io.BufferedInputStream,~A");
\r
279 c$.getPngZipStream = Clazz.defineMethod (c$, "getPngZipStream",
\r
280 function (bis, asNewStream) {
\r
281 if (!javajs.util.Rdr.isPngZipStream (bis)) return bis;
\r
282 var data = Clazz.newByteArray (0, 0);
\r
285 var pt_count = Clazz.newIntArray (2, 0);
\r
286 javajs.util.Rdr.getPngZipPointAndCount (bis, pt_count);
\r
287 if (pt_count[1] != 0) {
\r
288 var pt = pt_count[0];
\r
289 while (pt > 0) pt -= bis.skip (pt);
\r
291 if (!asNewStream) return bis;
\r
292 data = javajs.util.Rdr.getLimitedStreamBytes (bis, pt_count[1]);
\r
296 if (asNewStream) bis.close ();
\r
298 if (Clazz.exceptionOf (e, Exception)) {
\r
304 return javajs.util.Rdr.getBIS (data);
\r
305 }, "java.io.BufferedInputStream,~B");
\r
306 c$.getZipRoot = Clazz.defineMethod (c$, "getZipRoot",
\r
307 function (fileName) {
\r
308 var pt = fileName.indexOf ("|");
\r
309 return (pt < 0 ? fileName : fileName.substring (0, pt));
\r