From: <ha...@us...> - 2011-12-18 03:54:25
|
Revision: 16600 http://jmol.svn.sourceforge.net/jmol/?rev=16600&view=rev Author: hansonr Date: 2011-12-18 03:54:17 +0000 (Sun, 18 Dec 2011) Log Message: ----------- v.toArray(new XXXXX[v.size()]) Modified Paths: -------------- trunk/Jmol/src/org/jmol/adapter/readers/more/MdTopReader.java trunk/Jmol/src/org/jmol/adapter/readers/more/P2nReader.java trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java trunk/Jmol/src/org/jmol/minimize/Minimizer.java trunk/Jmol/src/org/jmol/modelset/ModelCollection.java trunk/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java trunk/Jmol/src/org/jmol/script/ScriptCompiler.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/script/Token.java trunk/Jmol/src/org/jmol/smiles/SmilesMatcher.java trunk/Jmol/src/org/jmol/util/ArrayUtil.java trunk/Jmol/src/org/jmol/util/Escape.java trunk/Jmol/src/org/jmol/util/ZipUtil.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/MdTopReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/MdTopReader.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/MdTopReader.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -145,10 +145,7 @@ vdata.add(line.substring(i, i + n).trim()); i += n; } - String[] data = new String[vdata.size()]; - for (i = vdata.size(); --i >= 0; ) - data[i] = vdata.get(i); - return data; + return vdata.toArray(new String[vdata.size()]); } /* Modified: trunk/Jmol/src/org/jmol/adapter/readers/more/P2nReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/more/P2nReader.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/adapter/readers/more/P2nReader.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -56,12 +56,9 @@ @Override protected void finalizeReader() throws Exception { super.finalizeReader(); - if (useAltNames) - return; - String[] names = new String[altNames.size()]; - for (int i = 0; i < names.length; i++) - names[i] = altNames.get(i); - atomSetCollection.setAtomSetAuxiliaryInfo("altName", names); + if (!useAltNames) + atomSetCollection.setAtomSetAuxiliaryInfo("altName", altNames + .toArray(new String[altNames.size()])); } } Modified: trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/adapter/smarter/Resolver.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -395,10 +395,7 @@ } catch (Exception e) { // } - String[] dirs = new String[v.size()]; - for (int i = 0; i < v.size(); i++) - dirs[i] = v.get(i); - return dirs; + return v.toArray(new String[v.size()]); } private static final String CML_NAMESPACE_URI = "http://www.xml-cml.org/schema"; Modified: trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/adapter/smarter/SmarterJmolAdapter.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -374,7 +374,7 @@ if (ZipUtil.isJmolManifest(thisEntry) || haveManifest && exceptFiles == manifest.indexOf("|" + thisEntry + "|") >= 0) continue; - byte[] bytes = ZipUtil.getZipEntryAsBytes(zis); + byte[] bytes = ZipUtil.getStreamBytes(zis, ze.getSize()); if (ZipUtil.isZipFile(bytes)) { BufferedInputStream bis = new BufferedInputStream( new ByteArrayInputStream(bytes)); Modified: trunk/Jmol/src/org/jmol/minimize/Minimizer.java =================================================================== --- trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/minimize/Minimizer.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -605,10 +605,7 @@ + minAtoms[atomList[ic]].getIdentity()); */ } } - - angles = new int[vAngles.size()][]; - for (int i = vAngles.size(); --i >= 0; ) - angles[i] = vAngles.get(i); + angles = vAngles.toArray(new int[vAngles.size()][]); Logger.info(angles.length + " angles"); } @@ -653,11 +650,7 @@ } } - - torsions = new int[vTorsions.size()][]; - for (int i = vTorsions.size(); --i >= 0;) - torsions[i] = vTorsions.get(i); - + torsions = vTorsions.toArray(new int[vTorsions.size()][]); Logger.info(torsions.length + " torsions"); } Modified: trunk/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/modelset/ModelCollection.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -1143,11 +1143,7 @@ v.add(q); i = g.lastAtomIndex; } - Quaternion[] qs = new Quaternion[v.size()]; - for (int i = 0; i < qs.length; i++) { - qs[i] = v.get(i); - } - return qs; + return v.toArray(new Quaternion[v.size()]); } /** Modified: trunk/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -237,9 +237,7 @@ } } } - atokenInfix = new Token[ltokenPostfix.size()]; - for (int i = ltokenPostfix.size(); --i >= 0;) - atokenInfix[i] = ltokenPostfix.get(i); + atokenInfix = ltokenPostfix.toArray(new Token[ltokenPostfix.size()]); return true; } Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -426,9 +426,7 @@ } private void setAaTokenCompiled() { - aatokenCompiled = new Token[lltoken.size()][]; - for (int i = lltoken.size(); --i >= 0;) - aatokenCompiled[i] = lltoken.get(i); + aatokenCompiled = lltoken.toArray(new Token[lltoken.size()][]); } private boolean lookingAtLeadingWhitespace() { @@ -794,9 +792,7 @@ } } - atokenInfix = new Token[size = ltoken.size()]; - for (int i = ltoken.size(); --i >= 0;) - atokenInfix[i] = ltoken.get(i); + atokenInfix = ltoken.toArray(new Token[size = ltoken.size()]); if (logMessages) { Logger.debug("token list:"); Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -4390,11 +4390,8 @@ } if (tok != Token.rightsquare) error(ERROR_invalidArgument); - if (points == null) { - points = new Point3f[vp.size()]; - for (int j = vp.size(); --j >= 0;) - points[j] = vp.get(j); - } + if (points == null) + points = vp.toArray(new Point3f[vp.size()]); return points; } @@ -6604,10 +6601,7 @@ i = iToken; } if (v.size() > 0) { - path = new Point3f[v.size()]; - for (int j = 0; j < v.size(); j++) { - path[j] = v.get(j); - } + path = v.toArray(new Point3f[v.size()]); if (!isSyntaxCheck) viewer.navigate(timeSec, path, theta, 0, Integer.MAX_VALUE); continue; @@ -6916,10 +6910,7 @@ } } retStddev[0] = 0; - data1 = new Quaternion[vQ.size()]; - for (int i = vQ.size(); --i >= 0;) { - data1[i] = vQ.get(i); - } + data1 = vQ.toArray(new Quaternion[vQ.size()]); q = Quaternion.sphereMean(data1, retStddev, 0.0001f); showString("RMSD = " + retStddev[0] + " degrees"); } else { @@ -7095,10 +7086,7 @@ return new String[] {}; } showString("RMSD " + stddev + " Angstroms"); - b = new BitSet[vReturn.size()]; - for (int j = 0; j < b.length; j++) { - b[j] = vReturn.get(j); - } + b = vReturn.toArray(new BitSet[vReturn.size()]); } if (asOneBitset) { // sum total of all now, not just first Modified: trunk/Jmol/src/org/jmol/script/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/script/Token.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/script/Token.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -1411,9 +1411,7 @@ if (tokAttr(token.tok, attr) && (notattr == nada || !tokAttr(token.tok, notattr))) v.add(name); } - String[] a = new String[v.size()]; - for (int i = 0; i < a.length; i++) - a[i] = v.get(i); + String[] a = v.toArray(new String[v.size()]); Arrays.sort(a); return a; } Modified: trunk/Jmol/src/org/jmol/smiles/SmilesMatcher.java =================================================================== --- trunk/Jmol/src/org/jmol/smiles/SmilesMatcher.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/smiles/SmilesMatcher.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -311,7 +311,7 @@ firstMatchOnly, MODE_ARRAY); } - @SuppressWarnings({ "unchecked", "cast" }) + @SuppressWarnings({ "unchecked" }) private Object match(String pattern, JmolNode[] atoms, int atomCount, BitSet bsSelected, BitSet bsAromatic, boolean isSmarts, boolean matchAllAtoms, boolean firstMatchOnly, @@ -326,27 +326,20 @@ search.setSelected(bsSelected); search.bsRequired = null;//(bsRequired != null && bsRequired.cardinality() > 0 ? bsRequired : null); search.setRingData(bsAromatic); - List<Object> vSubstructures; search.firstMatchOnly = firstMatchOnly; search.matchAllAtoms = matchAllAtoms; switch (mode) { case MODE_BITSET: search.asVector = false; - return (BitSet) search.search(false); + return search.search(false); case MODE_ARRAY: search.asVector = true; - vSubstructures = (List<Object>) search.search(false); - BitSet[] bitsets = new BitSet[vSubstructures.size()]; - for (int i = 0; i < bitsets.length; i++) - bitsets[i] = (BitSet) vSubstructures.get(i); - return bitsets; + List<BitSet> vb = (List<BitSet>) search.search(false); + return vb.toArray(new BitSet[vb.size()]); case MODE_MAP: search.getMaps = true; - vSubstructures = (List<Object>) search.search(false); - int[][] maps = new int[vSubstructures.size()][]; - for (int i = 0; i < maps.length; i++) - maps[i] = (int[]) vSubstructures.get(i); - return maps; + List<int[]> vl = (List<int[]>) search.search(false); + return vl.toArray(new int[vl.size()][]); } } catch (Exception e) { if (InvalidSmilesException.getLastError() == null) Modified: trunk/Jmol/src/org/jmol/util/ArrayUtil.java =================================================================== --- trunk/Jmol/src/org/jmol/util/ArrayUtil.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/util/ArrayUtil.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -249,9 +249,7 @@ return null; if (v.size() == 1) return v.get(0); - String[] keys = new String[v.size()]; - for (int i = 0; i < keys.length; i++) - keys[i] = v.get(i); + String[] keys = v.toArray(new String[v.size()]); Arrays.sort(keys); return keys[n % keys.length]; } Modified: trunk/Jmol/src/org/jmol/util/Escape.java =================================================================== --- trunk/Jmol/src/org/jmol/util/Escape.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/util/Escape.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -844,11 +844,7 @@ while (next[0] < data.length() && data.charAt(next[0]) != '"') next[0]++; } - String[] array = new String[v.size()]; - for (int i = 0; i < array.length; i++) { - array[i] = v.get(i); - } - return array; + return v.toArray(new String[v.size()]); } public static String escapeUrl(String url) { Modified: trunk/Jmol/src/org/jmol/util/ZipUtil.java =================================================================== --- trunk/Jmol/src/org/jmol/util/ZipUtil.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/jmol/util/ZipUtil.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -72,15 +72,14 @@ public static boolean isPngZipStream(InputStream is) { if (isZipFile(is)) return false; - byte[] abMagic = new byte[55]; try { is.mark(56); - is.read(abMagic, 0, 55); + byte[] abMagic = getStreamBytes(is, 55); is.reset(); + return (abMagic[51] == 'P' && abMagic[52] == 'N' && abMagic[53] == 'G' && abMagic[54] == 'J'); } catch (Exception e) { - // ignore } - return (abMagic[51] == 'P' && abMagic[52] == 'N' && abMagic[53] == 'G' && abMagic[54] == 'J'); + return false; } /** @@ -94,10 +93,10 @@ public static BufferedInputStream checkPngZipStream(BufferedInputStream bis) { if (!isPngZipStream(bis)) return bis; - byte[] data = new byte[74]; + byte[] data = null; bis.mark(75); try { - bis.read(data, 0, 74); + data = getStreamBytes(bis, 74); bis.reset(); int pt = 0; for (int i = 64, f = 1; --i > 54; f *= 10) @@ -105,15 +104,9 @@ int n = 0; for (int i = 74, f = 1; --i > 64; f *= 10) n += (data[i] - '0') * f; - data = new byte[n]; while (pt > 0) pt -= bis.skip(pt); - n = data.length; - pt = 0; - while (pt < n) { - pt += bis.read(data, pt, n - pt); - //System.out.println("ziputil " + pt); - } + data = getStreamBytes(bis, n); bis.close(); } catch (Throwable e) { data = new byte[0]; @@ -175,7 +168,7 @@ listing.append(name).append('\n'); String sname = "|" + name.substring(name.lastIndexOf("/") + 1) + "|"; boolean asBinaryString = (binaryFileList.indexOf(sname) >= 0); - byte[] bytes = getZipEntryAsBytes(zis); + byte[] bytes = getStreamBytes(zis, ze.getSize()); String str; if (asBinaryString) { str = getBinaryStringForBytes(bytes); @@ -243,7 +236,7 @@ while ((ze = zis.getNextEntry()) != null) { if (!fileName.equals(ze.getName())) continue; - byte[] bytes = getZipEntryAsBytes(zis); + byte[] bytes = getStreamBytes(zis, ze.getSize()); //System.out.println("ZipUtil::ZipEntry.name = " + ze.getName() + " " + bytes.length); if (isZipFile(bytes)) return getZipFileContents(new BufferedInputStream( @@ -276,7 +269,7 @@ while ((ze = zis.getNextEntry()) != null) { if (!fileName.equals(ze.getName())) continue; - byte[] bytes = getZipEntryAsBytes(zis); + byte[] bytes = getStreamBytes(zis, ze.getSize()); if (isZipFile(bytes) && list != null && ++listPtr < list.length) return getZipFileContentsAsBytes(new BufferedInputStream( new ByteArrayInputStream(bytes)), list, listPtr); @@ -332,13 +325,10 @@ zis.close(); if (addManifest) v.add(0, manifest == null ? "" : manifest + "\n############\n"); - int len = v.size(); - String[] dirList = new String[len]; - for (int i = 0; i < len; i++) - dirList[i] = v.get(i); - return dirList; + return v.toArray(new String[v.size()]); } - + + private static String getZipEntryAsString(InputStream is) throws IOException { StringBuffer sb = new StringBuffer(); byte[] buf = new byte[1024]; @@ -348,20 +338,24 @@ return sb.toString(); } - public static byte[] getZipEntryAsBytes(ZipInputStream zis) throws IOException { + public static byte[] getStreamBytes(InputStream is, long n) throws IOException { - //What is the efficient way to read an input stream into a byte array? + //Note: You cannot use InputStream.available() to reliably read + // zip data from the web. - byte[] buf = new byte[1024]; - byte[] bytes = new byte[4096]; + byte[] buf = new byte[n >= 0 && n < 1024 ? (int) n : 1024]; + byte[] bytes = new byte[n < 0 ? 4096 : (int) n]; int len = 0; int totalLen = 0; - while (zis.available() == 1 && (len = zis.read(buf)) > 0) { + while ((n < 0 || totalLen < n) + && (len = is.read(buf)) > 0) { totalLen += len; - if (totalLen >= bytes.length) + if (totalLen > bytes.length) bytes = ArrayUtil.ensureLength(bytes, totalLen * 2); System.arraycopy(buf, 0, bytes, totalLen - len, len); } + if (totalLen == bytes.length) + return bytes; buf = new byte[totalLen]; System.arraycopy(bytes, 0, buf, 0, totalLen); return buf; Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2011-12-17 20:25:51 UTC (rev 16599) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2011-12-18 03:54:17 UTC (rev 16600) @@ -798,23 +798,14 @@ * for trying to get an array of strings out of the * resource file. * @param input String to chop - * @return Strings chopped on whitespace boundries + * @return Strings chopped on whitespace boundaries */ protected String[] tokenize(String input) { - List<String> v = new ArrayList<String>(); StringTokenizer t = new StringTokenizer(input); - String cmd[]; - - while (t.hasMoreTokens()) { + while (t.hasMoreTokens()) v.add(t.nextToken()); - } - cmd = new String[v.size()]; - for (int i = 0; i < cmd.length; i++) { - cmd[i] = v.get(i); - } - - return cmd; + return v.toArray(new String[v.size()]); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |