ASF Bugzilla – Attachment 6270 Details for
Bug 18846
[PATCH][RFE]Refactor the transformation between byte array and String object
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
PATCH for this matter. test passed in my env.
patch12.txt (text/plain), 39.37 KB, created by
Toshiaki Kamoshida
on 2003-05-08 12:18:52 UTC
(
hide
)
Description:
PATCH for this matter. test passed in my env.
Filename:
MIME Type:
Creator:
Toshiaki Kamoshida
Created:
2003-05-08 12:18:52 UTC
Size:
39.37 KB
patch
obsolete
>cvs diff >cvs server: Diffing . >cvs server: Diffing contrib >cvs server: Diffing contrib/lib >cvs server: Diffing contrib/src >cvs server: Diffing contrib/src/org >cvs server: Diffing contrib/src/org/apache >cvs server: Diffing contrib/src/org/apache/poi >cvs server: Diffing contrib/src/org/apache/poi/contrib >cvs server: Diffing contrib/src/org/apache/poi/contrib/poibrowser >cvs server: Diffing contrib/src/org/apache/poi/hssf >cvs server: Diffing contrib/src/org/apache/poi/hssf/contrib >cvs server: Diffing contrib/src/org/apache/poi/hssf/contrib/view >cvs server: Diffing contrib/src/org/apache/poi/hssf/usermodel >cvs server: Diffing contrib/src/org/apache/poi/hssf/usermodel/contrib >cvs server: Diffing contrib/testcases >cvs server: Diffing documentation >cvs server: Diffing documentation/content >cvs server: Diffing documentation/content/xdocs >cvs server: Diffing documentation/content/xdocs/getinvolved >cvs server: Diffing documentation/content/xdocs/hdf >cvs server: Diffing documentation/content/xdocs/hpsf >cvs server: Diffing documentation/content/xdocs/hssf >cvs server: Diffing documentation/content/xdocs/news >cvs server: Diffing documentation/content/xdocs/plan >cvs server: Diffing documentation/content/xdocs/poifs >cvs server: Diffing documentation/content/xdocs/poifs/html >cvs server: Diffing documentation/content/xdocs/references >cvs server: Diffing documentation/content/xdocs/resolutions >cvs server: Diffing documentation/content/xdocs/trans >cvs server: Diffing documentation/content/xdocs/trans/de >cvs server: Diffing documentation/content/xdocs/trans/es >cvs server: Diffing documentation/content/xdocs/trans/es/hssf >cvs server: Diffing documentation/content/xdocs/utils >cvs server: Diffing documentation/resources >cvs server: Diffing documentation/resources/images >cvs server: Diffing documentation/xdocs >cvs server: Diffing documentation/xdocs/dtd >cvs server: Diffing examples >cvs server: Diffing examples/jsp >cvs server: Diffing examples/lib >cvs server: Diffing examples/src >cvs server: Diffing examples/src/org >cvs server: Diffing examples/src/org/apache >cvs server: Diffing examples/src/org/apache/poi >cvs server: Diffing examples/src/org/apache/poi/hpsf >cvs server: Diffing examples/src/org/apache/poi/hpsf/examples >cvs server: Diffing examples/src/org/apache/poi/hssf >cvs server: Diffing examples/src/org/apache/poi/hssf/usermodel >cvs server: Diffing examples/src/org/apache/poi/hssf/usermodel/examples >cvs server: Diffing java >cvs server: Diffing java/org >cvs server: Diffing java/org/apache >cvs server: Diffing java/org/apache/poi >cvs server: Diffing java/org/apache/poi/dev >cvs server: Diffing java/org/apache/poi/hpsf >cvs server: Diffing java/org/apache/poi/hpsf/wellknown >cvs server: Diffing java/org/apache/poi/hssf >cvs server: Diffing java/org/apache/poi/hssf/dev >cvs server: Diffing java/org/apache/poi/hssf/eventmodel >cvs server: Diffing java/org/apache/poi/hssf/eventusermodel >cvs server: Diffing java/org/apache/poi/hssf/model >cvs server: Diffing java/org/apache/poi/hssf/record >Index: java/org/apache/poi/hssf/record/BoundSheetRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java,v >retrieving revision 1.8 >diff -r1.8 BoundSheetRecord.java >141c141 >< field_5_sheetname = StringUtil.getFromUnicodeHigh( data, 8 + offset, nameLength ); >--- >> field_5_sheetname = StringUtil.getFromUnicodeLE( data, 8 + offset, nameLength ); >303c303 >< StringUtil.putUncompressedUnicode( getSheetname(), data, 12 + offset ); >--- >> StringUtil.putUnicodeLE( getSheetname(), data, 12 + offset ); >Index: java/org/apache/poi/hssf/record/FontRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/FontRecord.java,v >retrieving revision 1.9 >diff -r1.9 FontRecord.java >172c172 >< field_11_font_name = StringUtil.getFromUnicodeHigh(data, 16, >--- >> field_11_font_name = StringUtil.getFromUnicodeLE(data, 16, >582c582 >< StringUtil.putUncompressedUnicode(getFontName(), data, 20 + offset); >--- >> StringUtil.putUnicodeLE(getFontName(), data, 20 + offset); >Index: java/org/apache/poi/hssf/record/FormatRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/FormatRecord.java,v >retrieving revision 1.9 >diff -r1.9 FormatRecord.java >131c131 >< field_4_formatstring = StringUtil.getFromUnicodeHigh( data, 5 + offset, field_3_unicode_len ); >--- >> field_4_formatstring = StringUtil.getFromUnicodeLE( data, 5 + offset, field_3_unicode_len ); >267c267 >< StringUtil.putUncompressedUnicode( getFormatString(), data, 9 + offset ); >--- >> StringUtil.putUnicodeLE( getFormatString(), data, 9 + offset ); >Index: java/org/apache/poi/hssf/record/LabelRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/LabelRecord.java,v >retrieving revision 1.6 >diff -r1.6 LabelRecord.java >155c155 >< field_6_value = StringUtil.getFromUnicode(data, 8 + offset, >--- >> field_6_value = StringUtil.getFromUnicodeBE(data, 8 + offset, >Index: java/org/apache/poi/hssf/record/SeriesTextRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/SeriesTextRecord.java,v >retrieving revision 1.5 >diff -r1.5 SeriesTextRecord.java >136c136 >< field_4_text = StringUtil.getFromUnicodeHigh(data, pos + 0x4 + offset, ((field_2_textLength *2)/2)); >--- >> field_4_text = StringUtil.getFromUnicodeLE(data, pos + 0x4 + offset, ((field_2_textLength *2)/2)); >175c175 >< StringUtil.putUncompressedUnicodeHigh(field_4_text, data, 8 + offset + pos); >--- >> StringUtil.putUnicodeLE(field_4_text, data, 8 + offset + pos); >Index: java/org/apache/poi/hssf/record/StringRecord.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/StringRecord.java,v >retrieving revision 1.5 >diff -r1.5 StringRecord.java >133c133 >< field_3_string = StringUtil.getFromUnicode(data, 3 + offset, field_1_string_length ); >--- >> field_3_string = StringUtil.getFromUnicodeBE(data, 3 + offset, field_1_string_length ); >185c185 >< StringUtil.putUncompressedUnicode(field_3_string, data, 7 + offset); >--- >> StringUtil.putUnicodeLE(field_3_string, data, 7 + offset); >Index: java/org/apache/poi/hssf/record/UnicodeString.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/UnicodeString.java,v >retrieving revision 1.10 >diff -r1.10 UnicodeString.java >331c331 >< StringUtil.putUncompressedUnicode(unicodeString, data, >--- >> StringUtil.putUnicodeLE(unicodeString, data, >343c343 >< StringUtil.putUncompressedUnicode(getString(), data, >--- >> StringUtil.putUnicodeLE(getString(), data, >cvs server: Diffing java/org/apache/poi/hssf/record/aggregates >cvs server: Diffing java/org/apache/poi/hssf/record/formula >cvs server: Diffing java/org/apache/poi/hssf/usermodel >cvs server: Diffing java/org/apache/poi/hssf/util >cvs server: Diffing java/org/apache/poi/poifs >cvs server: Diffing java/org/apache/poi/poifs/common >cvs server: Diffing java/org/apache/poi/poifs/dev >cvs server: Diffing java/org/apache/poi/poifs/eventfilesystem >cvs server: Diffing java/org/apache/poi/poifs/filesystem >cvs server: Diffing java/org/apache/poi/poifs/property >cvs server: Diffing java/org/apache/poi/poifs/storage >cvs server: Diffing java/org/apache/poi/util >Index: java/org/apache/poi/util/StringUtil.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/util/StringUtil.java,v >retrieving revision 1.10 >diff -r1.10 StringUtil.java >1c1,347 >< /* * ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and > wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache POI" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache POI", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS >INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */package org.apache.poi.util;import java.io.UnsupportedEncodingException;import java.text.NumberFormat;import java.text.FieldPosition;/** * Title: String Utility Description: Collection of string handling utilities * * Now it is quite confusing: the method pairs, in which * one of them write data and other read written data are: * putUncompressedUnicodeHigh and getFromUnicode * putUncompressedUnicode and getFromUnicodeHigh * *@author Andrew C. Oliver > *@author Sergei Kozello (sergeikozello at mail.ru) *@created May 10, 2002 *@version 1.0 */public class StringUtil { private final static String ENCODING="ISO-8859-1"; /** * Constructor for the StringUtil object */ private StringUtil() { } /** * given a byte array of 16-bit unicode characters, compress to 8-bit and * return a string * * { 0x16, 0x00 } -> 0x16 * *@param string the byte array to be converted *@param offset the initial offset into the * byte array. it is assumed that string[ offset ] and string[ offset + * 1 ] contain the first 16-bit unicode character *@param len *@return the converted string *@exception ArrayIndexOutOfBoundsException if offset is out of bounds for * the byte array (i.e., is negative or is greater than or equal to * string.length) *@exception IllegalArgumentEx >ception if len is too large (i.e., * there is not enough data in string to create a String of that * length) *@len the length of the final string */ public static String getFromUnicodeHigh(final byte[] string, final int offset, final int len) throws ArrayIndexOutOfBoundsException, IllegalArgumentException { if ((offset < 0) || (offset >= string.length)) { throw new ArrayIndexOutOfBoundsException("Illegal offset"); } if ((len < 0) || (((string.length - offset) / 2) < len)) { throw new IllegalArgumentException("Illegal length"); } char[] chars = new char[ len ]; for ( int i = 0; i < chars.length; i++ ) { chars[i] = (char)( string[ offset + ( 2*i ) ] & 0xFF | ( string[ offset + ( 2*i+1 ) ] << 8 ) ); } return new String( chars ); } /** * given a byte array of 16-bit unicode >characters, compress to 8-bit and * return a string * * { 0x16, 0x00 } -> 0x16 * *@param string the byte array to be converted *@return the converted string */ public static String getFromUnicodeHigh( final byte[] string ) { return getFromUnicodeHigh( string, 0, string.length / 2 ); } /** * given a byte array of 16-bit unicode characters, compress to 8-bit and * return a string * * { 0x00, 0x16 } -> 0x16 * *@param string the byte array to be converted *@param offset the initial offset into the * byte array. it is assumed that string[ offset ] and string[ offset + * 1 ] contain the first 16-bit unicode character *@param len *@return the converted string *@exception ArrayIndexOutOfBoundsException if offset is out of bounds for * the byte array (i.e., is negative or is greater than or equal >to * string.length) *@exception IllegalArgumentException if len is too large (i.e., * there is not enough data in string to create a String of that * length) *@len the length of the final string */ public static String getFromUnicode(final byte[] string, final int offset, final int len) throws ArrayIndexOutOfBoundsException, IllegalArgumentException { if ((offset < 0) || (offset >= string.length)) { throw new ArrayIndexOutOfBoundsException("Illegal offset"); } if ((len < 0) || (((string.length - offset) / 2) < len)) { throw new IllegalArgumentException("Illegal length"); } char[] chars = new char[ len ]; for ( int i = 0; i < chars.length; i++ ) { chars[i] = (char)( ( string[ offset + ( 2*i ) ] << 8 ) + string[ offset + ( 2*i+1 ) ] ); } return new String( chars ); } > /** * given a byte array of 16-bit unicode characters, compress to 8-bit and * return a string * * { 0x00, 0x16 } -> 0x16 * *@param string the byte array to be converted *@return the converted string */ public static String getFromUnicode(final byte[] string) { return getFromUnicode(string, 0, string.length / 2); } /** * read compressed unicode(8bit) * * @author Toshiaki Kamoshida(kamoshida.toshiaki at future dot co dot jp) * * @param string byte array to read * @param offset offset to read byte array * @param len length to read byte array * @return String generated String instance by reading byte array */ public static String getFromCompressedUnicode(final byte[] string, final int offset, final int len){ try{ return new String(string,offset,len,"ISO-8859-1"); } catch(UnsupportedEncodingException e){ throw new InternalError();/* unr >eachable */ } } /** * write compressed unicode * *@param input the String containing the data to be written *@param output the byte array to which the data is to be written *@param offset an offset into the byte arrat at which the data is start * when written */ public static void putCompressedUnicode(final String input, final byte[] output, final int offset) { int strlen = input.length(); for (int k = 0; k < strlen; k++) { output[offset + k] = (byte) input.charAt(k); } } /** * Write uncompressed unicode * *@param input the String containing the unicode data to be written *@param output the byte array to hold the uncompressed unicode *@param offset the offset to start writing into the byte array */ public static void putUncompressedUnicode(final String input, final byte[] output, final int offset) { int strlen = input.length(); > for (int k = 0; k < strlen; k++) { char c = input.charAt(k); output[offset + (2 * k)] = (byte) c; output[offset + (2 * k) + 1] = (byte) (c >> 8); } } /** * Write uncompressed unicode * *@param input the String containing the unicode data to be written *@param output the byte array to hold the uncompressed unicode *@param offset the offset to start writing into the byte array */ public static void putUncompressedUnicodeHigh(final String input, final byte[] output, final int offset) { int strlen = input.length(); for (int k = 0; k < strlen; k++) { char c = input.charAt(k); output[offset + (2 * k)] = (byte) (c >> 8); output[offset + (2 * k)] = (byte) c; } } /** * Description of the Method * *@param message Description of the Parameter *@param params Description of the Parameter *@return Description o >f the Return Value */ public static String format(String message, Object[] params) { int currentParamNumber = 0; StringBuffer formattedMessage = new StringBuffer(); for (int i = 0; i < message.length(); i++) { if (message.charAt(i) == '%') { if (currentParamNumber >= params.length) { formattedMessage.append("?missing data?"); } else if ((params[currentParamNumber] instanceof Number) && (i + 1 < message.length())) { i += matchOptionalFormatting( (Number) params[currentParamNumber++], message.substring(i + 1), formattedMessage); } else { formattedMessage.append(params[currentParamNumber++].toString()); } } else { if ((message.charAt(i) == '\\') && (i + 1 < message.length()) && (message.charAt(i + 1) == '%')) { forma >ttedMessage.append('%'); i++; } else { formattedMessage.append(message.charAt(i)); } } } return formattedMessage.toString(); } /** * Description of the Method * *@param number Description of the Parameter *@param formatting Description of the Parameter *@param outputTo Description of the Parameter *@return Description of the Return Value */ private static int matchOptionalFormatting(Number number, String formatting, StringBuffer outputTo) { NumberFormat numberFormat = NumberFormat.getInstance(); if ((0 < formatting.length()) && Character.isDigit(formatting.charAt(0))) { numberFormat.setMinimumIntegerDigits(Integer.parseInt(formatting.charAt(0) + "")); if ((2 < formatting.length()) && (formatting.charAt(1) == '.') && Character.isDigit(formatting.charAt(2))) { > numberFormat.setMaximumFractionDigits(Integer.parseInt(formatting.charAt(2) + "")); numberFormat.format(number, outputTo, new FieldPosition(0)); return 3; } numberFormat.format(number, outputTo, new FieldPosition(0)); return 1; } else if ((0 < formatting.length()) && (formatting.charAt(0) == '.')) { if ((1 < formatting.length()) && Character.isDigit(formatting.charAt(1))) { numberFormat.setMaximumFractionDigits(Integer.parseInt(formatting.charAt(1) + "")); numberFormat.format(number, outputTo, new FieldPosition(0)); return 2; } } numberFormat.format(number, outputTo, new FieldPosition(0)); return 1; } /** * @return the encoding we want to use (ISO-8859-1) */ public static String getPreferredEncoding() { return ENCODING; }} >\ No newline at end of file >--- >> >> /* >> * ==================================================================== >> * The Apache Software License, Version 1.1 >> * >> * Copyright (c) 2003 The Apache Software Foundation. All rights >> * reserved. >> * >> * Redistribution and use in source and binary forms, with or without >> * modification, are permitted provided that the following conditions >> * are met: >> * >> * 1. Redistributions of source code must retain the above copyright >> * notice, this list of conditions and the following disclaimer. >> * >> * 2. Redistributions in binary form must reproduce the above copyright >> * notice, this list of conditions and the following disclaimer in >> * the documentation and/or other materials provided with the >> * distribution. >> * >> * 3. The end-user documentation included with the redistribution, >> * if any, must include the following acknowledgment: >> * "This product includes software developed by the >> * Apache Software Foundation (http://www.apache.org/)." >> * Alternately, this acknowledgment may appear in the software itself, >> * if and wherever such third-party acknowledgments normally appear. >> * >> * 4. The names "Apache" and "Apache Software Foundation" and >> * "Apache POI" must not be used to endorse or promote products >> * derived from this software without prior written permission. For >> * written permission, please contact apache@apache.org. >> * >> * 5. Products derived from this software may not be called "Apache", >> * "Apache POI", nor may "Apache" appear in their name, without >> * prior written permission of the Apache Software Foundation. >> * >> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED >> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES >> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE >> * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR >> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, >> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT >> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF >> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND >> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, >> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT >> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF >> * SUCH DAMAGE. >> * ==================================================================== >> * >> * This software consists of voluntary contributions made by many >> * individuals on behalf of the Apache Software Foundation. For more >> * information on the Apache Software Foundation, please see >> * <http://www.apache.org/>. >> */ >> package org.apache.poi.util; >> >> import java.io.UnsupportedEncodingException; >> import java.text.NumberFormat; >> import java.text.FieldPosition; >> import java.util.Arrays; >> /** >> * Title: String Utility Description: Collection of string handling utilities >> * >> * >> *@author Andrew C. Oliver >> *@author Sergei Kozello (sergeikozello at mail.ru) >> *@author Toshiaki Kamoshida (kamoshida.toshiaki at future dot co dot jp) >> *@created May 10, 2002 >> *@version 1.0 >> */ >> public class StringUtil { >> private final static String ENCODING = "ISO-8859-1"; >> /** >> * Constructor for the StringUtil object >> */ >> private StringUtil() { >> } >> >> /** >> * given a byte array of 16-bit unicode characters, compress to 8-bit and >> * return a string >> * >> * { 0x16, 0x00 } -> 0x16 >> * >> *@param string the byte array to be converted >> *@param offset the initial offset into the >> * byte array. it is assumed that string[ offset ] and string[ offset + >> * 1 ] contain the first 16-bit unicode character >> *@param len >> *@return the converted string >> *@exception ArrayIndexOutOfBoundsException if offset is out of bounds for >> * the byte array (i.e., is negative or is greater than or equal to >> * string.length) >> *@exception IllegalArgumentException if len is too large (i.e., >> * there is not enough data in string to create a String of that >> * length) >> *@len the length of the final string >> */ >> public static String getFromUnicodeLE( >> final byte[] string, >> final int offset, >> final int len) >> throws ArrayIndexOutOfBoundsException, IllegalArgumentException { >> if ((offset < 0) || (offset >= string.length)) { >> throw new ArrayIndexOutOfBoundsException("Illegal offset"); >> } >> if ((len < 0) || (((string.length - offset) / 2) < len)) { >> throw new IllegalArgumentException("Illegal length"); >> } >> >> try { >> return new String(string, offset, len * 2, "UTF-16LE"); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /*unreachable*/ >> } >> } >> >> /** >> * given a byte array of 16-bit unicode characters, compress to 8-bit and >> * return a string >> * >> * { 0x16, 0x00 } -> 0x16 >> * >> *@param string the byte array to be converted >> *@return the converted string >> */ >> public static String getFromUnicodeLE(final byte[] string) { >> return getFromUnicodeLE(string, 0, string.length / 2); >> } >> >> /** >> * given a byte array of 16-bit unicode characters, compress to 8-bit and >> * return a string >> * >> * { 0x00, 0x16 } -> 0x16 >> * >> *@param string the byte array to be converted >> **@param offset the initial offset into the >> * byte array. it is assumed that string[ offset ] and string[ offset + >> * 1 ] contain the first 16-bit unicode character >> *@param len >> *@return the converted string >> *@exception ArrayIndexOutOfBoundsException if offset is out of bounds for >> * the byte array (i.e., is negative or is greater than or equal to >> * string.length) >> *@exception IllegalArgumentException if len is too large (i.e., >> * there is not enough data in string to create a String of that >> * length) >> *@len the length of the final string >> */ >> public static String getFromUnicodeBE( >> final byte[] string, >> final int offset, >> final int len) >> throws ArrayIndexOutOfBoundsException, IllegalArgumentException { >> if ((offset < 0) || (offset >= string.length)) { >> throw new ArrayIndexOutOfBoundsException("Illegal offset"); >> } >> if ((len < 0) || (((string.length - offset) / 2) < len)) { >> throw new IllegalArgumentException("Illegal length"); >> } >> try { >> return new String(string, offset, len * 2, "UTF-16BE"); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /*unreachable*/ >> } >> } >> >> /** >> * given a byte array of 16-bit unicode characters, compress to 8-bit and >> * return a string >> * >> * { 0x00, 0x16 } -> 0x16 >> * >> *@param string the byte array to be converted >> *@return the converted string >> */ >> public static String getFromUnicodeBE(final byte[] string) { >> return getFromUnicodeBE(string, 0, string.length / 2); >> } >> >> /** >> * read compressed unicode(8bit) >> * >> * @param string byte array to read >> * @param offset offset to read byte array >> * @param len length to read byte array >> * @return String generated String instance by reading byte array >> */ >> public static String getFromCompressedUnicode( >> final byte[] string, >> final int offset, >> final int len) { >> try { >> return new String(string, offset, len, "ISO-8859-1"); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /* unreachable */ >> } >> } >> >> /** >> * write compressed unicode >> * >> *@param input the String containing the data to be written >> *@param output the byte array to which the data is to be written >> *@param offset an offset into the byte arrat at which the data is start >> * when written >> */ >> public static void putCompressedUnicode( >> final String input, >> final byte[] output, >> final int offset) { >> try { >> byte[] bytes = input.getBytes("ISO-8859-1"); >> System.arraycopy(bytes, 0, output, offset, bytes.length); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /*unreachable*/ >> } >> } >> >> /** >> * Write uncompressed unicode >> * >> *@param input the String containing the unicode data to be written >> *@param output the byte array to hold the uncompressed unicode >> *@param offset the offset to start writing into the byte array >> */ >> public static void putUnicodeLE( >> final String input, >> final byte[] output, >> final int offset) { >> try { >> byte[] bytes = input.getBytes("UTF-16LE"); >> System.arraycopy(bytes, 0, output, offset, bytes.length); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /*unreachable*/ >> } >> } >> >> /** >> * Write uncompressed unicode >> * >> *@param input the String containing the unicode data to be written >> *@param output the byte array to hold the uncompressed unicode >> *@param offset the offset to start writing into the byte array >> */ >> public static void putUnicodeBE( >> final String input, >> final byte[] output, >> final int offset) { >> try { >> byte[] bytes = input.getBytes("UTF-16BE"); >> System.arraycopy(bytes, 0, output, offset, bytes.length); >> } catch (UnsupportedEncodingException e) { >> throw new InternalError(); /*unreachable*/ >> } >> } >> >> /** >> * Description of the Method >> * >> *@param message Description of the Parameter >> *@param params Description of the Parameter >> *@return Description of the Return Value >> */ >> public static String format(String message, Object[] params) { >> int currentParamNumber = 0; >> StringBuffer formattedMessage = new StringBuffer(); >> for (int i = 0; i < message.length(); i++) { >> if (message.charAt(i) == '%') { >> if (currentParamNumber >= params.length) { >> formattedMessage.append("?missing data?"); >> } else if ( >> (params[currentParamNumber] instanceof Number) >> && (i + 1 < message.length())) { >> i >> += matchOptionalFormatting( >> (Number) params[currentParamNumber++], >> message.substring(i + 1), >> formattedMessage); >> } else { >> formattedMessage.append( >> params[currentParamNumber++].toString()); >> } >> } else { >> if ((message.charAt(i) == '\\') >> && (i + 1 < message.length()) >> && (message.charAt(i + 1) == '%')) { >> formattedMessage.append('%'); >> i++; >> } else { >> formattedMessage.append(message.charAt(i)); >> } >> } >> } >> return formattedMessage.toString(); >> } >> >> /** >> * Description of the Method >> * >> *@param number Description of the Parameter >> *@param formatting Description of the Parameter >> *@param outputTo Description of the Parameter >> *@return Description of the Return Value >> */ >> private static int matchOptionalFormatting( >> Number number, >> String formatting, >> StringBuffer outputTo) { >> NumberFormat numberFormat = NumberFormat.getInstance(); >> if ((0 < formatting.length()) >> && Character.isDigit(formatting.charAt(0))) { >> numberFormat.setMinimumIntegerDigits( >> Integer.parseInt(formatting.charAt(0) + "")); >> if ((2 < formatting.length()) >> && (formatting.charAt(1) == '.') >> && Character.isDigit(formatting.charAt(2))) { >> numberFormat.setMaximumFractionDigits( >> Integer.parseInt(formatting.charAt(2) + "")); >> numberFormat.format(number, outputTo, new FieldPosition(0)); >> return 3; >> } >> numberFormat.format(number, outputTo, new FieldPosition(0)); >> return 1; >> } else if ( >> (0 < formatting.length()) && (formatting.charAt(0) == '.')) { >> if ((1 < formatting.length()) >> && Character.isDigit(formatting.charAt(1))) { >> numberFormat.setMaximumFractionDigits( >> Integer.parseInt(formatting.charAt(1) + "")); >> numberFormat.format(number, outputTo, new FieldPosition(0)); >> return 2; >> } >> } >> numberFormat.format(number, outputTo, new FieldPosition(0)); >> return 1; >> } >> >> /** >> * @return the encoding we want to use (ISO-8859-1) >> */ >> public static String getPreferredEncoding() { >> return ENCODING; >> } >> } >\ No newline at end of file >cvs server: Diffing models >cvs server: Diffing records >cvs server: Diffing records/definitions >cvs server: Diffing records/styles >cvs server: Diffing resources >cvs server: Diffing resources/devtools >cvs server: Diffing resources/logos >cvs server: Diffing scratchpad >cvs server: Diffing scratchpad/lib >cvs server: Diffing scratchpad/src >cvs server: Diffing scratchpad/src/org >cvs server: Diffing scratchpad/src/org/apache >cvs server: Diffing scratchpad/src/org/apache/poi >cvs server: Diffing scratchpad/src/org/apache/poi/generator >cvs server: Diffing scratchpad/src/org/apache/poi/hdf >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/event >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/extractor >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/extractor/data >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/extractor/util >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/generator >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/model >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/model/hdftypes >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions >cvs server: Diffing scratchpad/src/org/apache/poi/hdf/model/util >cvs server: Diffing scratchpad/src/org/apache/poi/hssf >cvs server: Diffing scratchpad/src/org/apache/poi/hssf/usermodel >cvs server: Diffing scratchpad/testcases >cvs server: Diffing scratchpad/testcases/org >cvs server: Diffing scratchpad/testcases/org/apache >cvs server: Diffing scratchpad/testcases/org/apache/poi >cvs server: Diffing scratchpad/testcases/org/apache/poi/hdf >cvs server: Diffing scratchpad/testcases/org/apache/poi/hdf/data >cvs server: Diffing scratchpad/testcases/org/apache/poi/hdf/model >cvs server: Diffing testcases >cvs server: Diffing testcases/org >cvs server: Diffing testcases/org/apache >cvs server: Diffing testcases/org/apache/poi >cvs server: Diffing testcases/org/apache/poi/hpsf >cvs server: Diffing testcases/org/apache/poi/hpsf/basic >cvs server: Diffing testcases/org/apache/poi/hpsf/data >cvs server: Diffing testcases/org/apache/poi/hssf >cvs server: Diffing testcases/org/apache/poi/hssf/data >cvs server: Diffing testcases/org/apache/poi/hssf/eventmodel >cvs server: Diffing testcases/org/apache/poi/hssf/model >cvs server: Diffing testcases/org/apache/poi/hssf/record >cvs server: Diffing testcases/org/apache/poi/hssf/record/aggregates >cvs server: Diffing testcases/org/apache/poi/hssf/record/formula >cvs server: Diffing testcases/org/apache/poi/hssf/usermodel >cvs server: Diffing testcases/org/apache/poi/hssf/util >cvs server: Diffing testcases/org/apache/poi/poifs >cvs server: Diffing testcases/org/apache/poi/poifs/eventfilesystem >cvs server: Diffing testcases/org/apache/poi/poifs/filesystem >cvs server: Diffing testcases/org/apache/poi/poifs/property >cvs server: Diffing testcases/org/apache/poi/poifs/storage >cvs server: Diffing testcases/org/apache/poi/util >Index: testcases/org/apache/poi/util/TestStringUtil.java >=================================================================== >RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/util/TestStringUtil.java,v >retrieving revision 1.8 >diff -r1.8 TestStringUtil.java >95c95 >< StringUtil.getFromUnicode( test_data ) ); >--- >> StringUtil.getFromUnicodeBE( test_data ) ); >115c115 >< StringUtil.getFromUnicode( test_data ) ); >--- >> StringUtil.getFromUnicodeBE( test_data ) ); >136c136 >< StringUtil.getFromUnicodeHigh( test_data ) ); >--- >> StringUtil.getFromUnicodeLE( test_data ) ); >152c152 >< StringUtil.getFromUnicode( test_data, 0, 15 ) ); >--- >> StringUtil.getFromUnicodeBE( test_data, 0, 15 ) ); >154c154 >< StringUtil.getFromUnicode( test_data, 2, 15 ) ); >--- >> StringUtil.getFromUnicodeBE( test_data, 2, 15 ) ); >157c157 >< StringUtil.getFromUnicode( test_data, -1, 16 ); >--- >> StringUtil.getFromUnicodeBE( test_data, -1, 16 ); >167c167 >< StringUtil.getFromUnicode( test_data, 32, 16 ); >--- >> StringUtil.getFromUnicodeBE( test_data, 32, 16 ); >177c177 >< StringUtil.getFromUnicode( test_data, 1, 16 ); >--- >> StringUtil.getFromUnicodeBE( test_data, 1, 16 ); >187c187 >< StringUtil.getFromUnicode( test_data, 1, -1 ); >--- >> StringUtil.getFromUnicodeBE( test_data, 1, -1 ); >251c251 >< StringUtil.putUncompressedUnicode( input, output, 0 ); >--- >> StringUtil.putUnicodeLE( input, output, 0 ); >257c257 >< StringUtil.putUncompressedUnicode( input, output, >--- >> StringUtil.putUnicodeLE( input, output, >266c266 >< StringUtil.putUncompressedUnicode( input, output, >--- >> StringUtil.putUnicodeLE( input, output, >cvs server: Diffing testcases/org/apache/poi/util/data >cvs server: Diffing types >cvs server: Diffing types/definitions >cvs server: Diffing types/styles > >*****CVS exited normally with code 1***** >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 18846
:
5765
| 6270