1/* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * 4 * This code is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License version 2 only, as 6 * published by the Free Software Foundation. Oracle designates this 7 * particular file as subject to the "Classpath" exception as provided 8 * by Oracle in the LICENSE file that accompanied this code. 9 * 10 * This code is distributed in the hope that it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 * version 2 for more details (a copy is included in the LICENSE file that 14 * accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License version 17 * 2 along with this work; if not, write to the Free Software Foundation, 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 * 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 * or visit www.oracle.com if you need additional information or have any 22 * questions. 23 */ 24/* 25/* 26 ****************************************************************************** 27 * Copyright (C) 2003, International Business Machines Corporation and * 28 * others. All Rights Reserved. * 29 ****************************************************************************** 30 * 31 * Created on May 2, 2003 32 * 33 * To change the template for this generated file go to 34 * Window>Preferences>Java>Code Generation>Code and Comments 35 */ 36// CHANGELOG 37// 2005-05-19 Edward Wang 38// - copy this file from icu4jsrc_3_2/src/com/ibm/icu/impl/StringPrepDataReader.java 39// - move from package com.ibm.icu.impl to package sun.net.idn 40// 41package sun.net.idn; 42 43import java.io.DataInputStream; 44import java.io.IOException; 45import java.io.InputStream; 46 47import sun.text.normalizer.ICUBinary; 48 49 50/** 51 * @author ram 52 * 53 * To change the template for this generated type comment go to 54 * Window>Preferences>Java>Code Generation>Code and Comments 55 */ 56final class StringPrepDataReader implements ICUBinary.Authenticate { 57 58 /** 59 * <p>private constructor.</p> 60 * @param inputStream ICU uprop.dat file input stream 61 * @exception IOException throw if data file fails authentication 62 * @draft 2.1 63 */ 64 public StringPrepDataReader(InputStream inputStream) 65 throws IOException{ 66 67 unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this); 68 69 70 dataInputStream = new DataInputStream(inputStream); 71 72 } 73 74 public void read(byte[] idnaBytes, 75 char[] mappingTable) 76 throws IOException{ 77 78 //Read the bytes that make up the idnaTrie 79 dataInputStream.read(idnaBytes); 80 81 //Read the extra data 82 for(int i=0;i<mappingTable.length;i++){ 83 mappingTable[i]=dataInputStream.readChar(); 84 } 85 } 86 87 public byte[] getDataFormatVersion(){ 88 return DATA_FORMAT_VERSION; 89 } 90 91 public boolean isDataVersionAcceptable(byte version[]){ 92 return version[0] == DATA_FORMAT_VERSION[0] 93 && version[2] == DATA_FORMAT_VERSION[2] 94 && version[3] == DATA_FORMAT_VERSION[3]; 95 } 96 public int[] readIndexes(int length)throws IOException{ 97 int[] indexes = new int[length]; 98 //Read the indexes 99 for (int i = 0; i <length ; i++) { 100 indexes[i] = dataInputStream.readInt(); 101 } 102 return indexes; 103 } 104 105 public byte[] getUnicodeVersion(){ 106 return unicodeVersion; 107 } 108 // private data members ------------------------------------------------- 109 110 111 /** 112 * ICU data file input stream 113 */ 114 private DataInputStream dataInputStream; 115 private byte[] unicodeVersion; 116 /** 117 * File format version that this class understands. 118 * No guarantees are made if a older version is used 119 * see store.c of gennorm for more information and values 120 */ 121 ///* dataFormat="SPRP" 0x53, 0x50, 0x52, 0x50 */ 122 private static final byte DATA_FORMAT_ID[] = {(byte)0x53, (byte)0x50, 123 (byte)0x52, (byte)0x50}; 124 private static final byte DATA_FORMAT_VERSION[] = {(byte)0x3, (byte)0x2, 125 (byte)0x5, (byte)0x2}; 126 127} 128