001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
003: *
004: * This code is free software; you can redistribute it and/or modify it
005: * under the terms of the GNU General Public License version 2 only, as
006: * published by the Free Software Foundation. Sun designates this
007: * particular file as subject to the "Classpath" exception as provided
008: * by Sun in the LICENSE file that accompanied this code.
009: *
010: * This code is distributed in the hope that it will be useful, but WITHOUT
011: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
012: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
013: * version 2 for more details (a copy is included in the LICENSE file that
014: * accompanied this code).
015: *
016: * You should have received a copy of the GNU General Public License version
017: * 2 along with this work; if not, write to the Free Software Foundation,
018: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
019: *
020: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
021: * CA 95054 USA or visit www.sun.com if you need additional information or
022: * have any questions.
023: */
024: /*
025: /*
026: ******************************************************************************
027: * Copyright (C) 2003, International Business Machines Corporation and *
028: * others. All Rights Reserved. *
029: ******************************************************************************
030: *
031: * Created on May 2, 2003
032: *
033: * To change the template for this generated file go to
034: * Window>Preferences>Java>Code Generation>Code and Comments
035: */
036: // CHANGELOG
037: // 2005-05-19 Edward Wang
038: // - copy this file from icu4jsrc_3_2/src/com/ibm/icu/impl/StringPrepDataReader.java
039: // - move from package com.ibm.icu.impl to package sun.net.idn
040: //
041: package sun.net.idn;
042:
043: import java.io.DataInputStream;
044: import java.io.IOException;
045: import java.io.InputStream;
046:
047: import sun.text.normalizer.ICUBinary;
048:
049: /**
050: * @author ram
051: *
052: * To change the template for this generated type comment go to
053: * Window>Preferences>Java>Code Generation>Code and Comments
054: */
055: final class StringPrepDataReader implements ICUBinary.Authenticate {
056:
057: /**
058: * <p>private constructor.</p>
059: * @param inputStream ICU uprop.dat file input stream
060: * @exception IOException throw if data file fails authentication
061: * @draft 2.1
062: */
063: public StringPrepDataReader(InputStream inputStream)
064: throws IOException {
065:
066: unicodeVersion = ICUBinary.readHeader(inputStream,
067: DATA_FORMAT_ID, this );
068:
069: dataInputStream = new DataInputStream(inputStream);
070:
071: }
072:
073: public void read(byte[] idnaBytes, char[] mappingTable)
074: throws IOException {
075:
076: //Read the bytes that make up the idnaTrie
077: dataInputStream.read(idnaBytes);
078:
079: //Read the extra data
080: for (int i = 0; i < mappingTable.length; i++) {
081: mappingTable[i] = dataInputStream.readChar();
082: }
083: }
084:
085: public byte[] getDataFormatVersion() {
086: return DATA_FORMAT_VERSION;
087: }
088:
089: public boolean isDataVersionAcceptable(byte version[]) {
090: return version[0] == DATA_FORMAT_VERSION[0]
091: && version[2] == DATA_FORMAT_VERSION[2]
092: && version[3] == DATA_FORMAT_VERSION[3];
093: }
094:
095: public int[] readIndexes(int length) throws IOException {
096: int[] indexes = new int[length];
097: //Read the indexes
098: for (int i = 0; i < length; i++) {
099: indexes[i] = dataInputStream.readInt();
100: }
101: return indexes;
102: }
103:
104: public byte[] getUnicodeVersion() {
105: return unicodeVersion;
106: }
107:
108: // private data members -------------------------------------------------
109:
110: /**
111: * ICU data file input stream
112: */
113: private DataInputStream dataInputStream;
114: private byte[] unicodeVersion;
115: /**
116: * File format version that this class understands.
117: * No guarantees are made if a older version is used
118: * see store.c of gennorm for more information and values
119: */
120: ///* dataFormat="SPRP" 0x53, 0x50, 0x52, 0x50 */
121: private static final byte DATA_FORMAT_ID[] = { (byte) 0x53,
122: (byte) 0x50, (byte) 0x52, (byte) 0x50 };
123: private static final byte DATA_FORMAT_VERSION[] = { (byte) 0x3,
124: (byte) 0x2, (byte) 0x5, (byte) 0x2 };
125:
126: }
|