EMMA Coverage Report (generated Tue Dec 09 03:51:57 CET 2014)
[all classes][org.jdtaus.banking.charsets.spi]

COVERAGE SUMMARY FOR SOURCE FILE [IBM273CharsetProvider.java]

nameclass, %method, %block, %line, %
IBM273CharsetProvider.java80%  (4/5)63%  (12/19)91%  (2282/2507)87%  (302.1/346)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class IBM273CharsetProvider$10%   (0/1)0%   (0/4)0%   (0/30)0%   (0/8)
IBM273CharsetProvider$1 (IBM273CharsetProvider): void 0%   (0/1)0%   (0/9)0%   (0/2)
hasNext (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
next (): Object 0%   (0/1)0%   (0/14)0%   (0/4)
remove (): void 0%   (0/1)0%   (0/4)0%   (0/1)
     
class IBM273CharsetEncoder100% (1/1)67%  (2/3)39%  (69/176)47%  (15.5/33)
encodeLoopArray (CharBuffer, ByteBuffer): CoderResult 0%   (0/1)0%   (0/62)0%   (0/8)
encodeLoop (CharBuffer, ByteBuffer): CoderResult 100% (1/1)55%  (55/100)55%  (11.5/21)
IBM273CharsetEncoder (Charset): void 100% (1/1)100% (14/14)100% (4/4)
     
class IBM273CharsetDecoder100% (1/1)100% (3/3)49%  (73/148)41%  (11/27)
decodeLoop (ByteBuffer, CharBuffer): CoderResult 100% (1/1)12%  (10/83)12%  (2/17)
decodeLoopArray (ByteBuffer, CharBuffer): CoderResult 100% (1/1)96%  (49/51)83%  (5/6)
IBM273CharsetDecoder (Charset): void 100% (1/1)100% (14/14)100% (4/4)
     
class IBM273Charset100% (1/1)80%  (4/5)83%  (29/35)80%  (4.8/6)
contains (Charset): boolean 0%   (0/1)0%   (0/2)0%   (0/1)
isCharacterSupported (char): boolean 100% (1/1)78%  (14/18)77%  (0.8/1)
IBM273Charset (): void 100% (1/1)100% (5/5)100% (2/2)
newDecoder (): CharsetDecoder 100% (1/1)100% (5/5)100% (1/1)
newEncoder (): CharsetEncoder 100% (1/1)100% (5/5)100% (1/1)
     
class IBM273CharsetProvider100% (1/1)75%  (3/4)100% (2111/2118)100% (270.8/272)
charsets (): Iterator 0%   (0/1)0%   (0/5)0%   (0/1)
charsetForName (String): Charset 100% (1/1)93%  (26/28)98%  (7.8/8)
<static initializer> 100% (1/1)100% (2082/2082)100% (261/261)
IBM273CharsetProvider (): void 100% (1/1)100% (3/3)100% (2/2)

1/*
2 *  jDTAUS Banking Charset Providers
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
5 *
6 *  This library is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU Lesser General Public
8 *  License as published by the Free Software Foundation; either
9 *  version 2.1 of the License, or any later version.
10 *
11 *  This library is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 *  Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public
17 *  License along with this library; if not, write to the Free Software
18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.banking.charsets.spi;
22 
23import java.nio.ByteBuffer;
24import java.nio.CharBuffer;
25import java.nio.charset.Charset;
26import java.nio.charset.CharsetDecoder;
27import java.nio.charset.CharsetEncoder;
28import java.nio.charset.CoderResult;
29import java.nio.charset.CodingErrorAction;
30import java.nio.charset.spi.CharsetProvider;
31import java.util.Iterator;
32import java.util.NoSuchElementException;
33 
34/**
35 * {@code CharsetProvider} for IBM273 Charset.
36 * <p>
37 * Name: IBM273<br>
38 * MIBenum: 2030<br>
39 * Source: IBM NLS RM Vol2 SE09-8002-01, March 1990<br>
40 * Alias: CP273<br>
41 * Alias: csIBM273<br>
42 * See: RFC1345,KXS2<br>
43 *
44 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
45 * @version $JDTAUS: IBM273CharsetProvider.java 8661 2012-09-27 11:29:58Z schulte $
46 */
47public class IBM273CharsetProvider extends CharsetProvider
48{
49 
50    /** Common name. */
51    static final String COMMON_NAME = "IBM273";
52 
53    /** Alias names. */
54    static final String[] ALIAS_NAMES =
55    {
56        "cp273", "csIBM273"
57    };
58 
59    /** Supported character set names. */
60    static final String[] SUPPORTED_NAMES =
61    {
62        COMMON_NAME.toLowerCase(), "cp273", "csIBM273"
63    };
64 
65    static final char[] BYTE_TO_CHAR =
66    {
67        '\u0000', '\u0001', '\u0002', '\u0003', '\u009C', '\u0009', '\u0086', '\u007F', '\u0097', '\u008D', '\u008E',
68        '\u000B', '\u000C', 0xD, '\u000E', '\u000F', '\u0010', '\u0011', '\u0012', '\u0013', '\u009D', '\u0085',
69        '\u0008', '\u0087', '\u0018', '\u0019', '\u0092', '\u008F', '\u001C', '\u001D', '\u001E', '\u001F', '\u0080',
70        '\u0081', '\u0082', '\u0083', '\u0084', 0xA, '\u0017', '\u001B', '\u0088', '\u0089', '\u008A', '\u008B',
71        '\u008C', '\u0005', '\u0006', '\u0007', '\u0090', '\u0091', '\u0016', '\u0093', '\u0094', '\u0095', '\u0096',
72        '\u0004', '\u0098', '\u0099', '\u009A', '\u009B', '\u0014', '\u0015', '\u009E', '\u001A', '\u0020', '\u00A0',
73        '\u00E2', '\u007B', '\u00E0', '\u00E1', '\u00E3', '\u00E5', '\u00E7', '\u00F1', '\u00C4', '\u002E', '\u003C',
74        '\u0028', '\u002B', '\u0021', '\u0026', '\u00E9', '\u00EA', '\u00EB', '\u00E8', '\u00ED', '\u00EE', '\u00EF',
75        '\u00EC', '\u007E', '\u00DC', '\u0024', '\u002A', '\u0029', '\u003B', '\u005E', '\u002D', '\u002F', '\u00C2',
76        '\u005B', '\u00C0', '\u00C1', '\u00C3', '\u00C5', '\u00C7', '\u00D1', '\u00F6', '\u002C', '\u0025', '\u005F',
77        '\u003E', '\u003F', '\u00F8', '\u00C9', '\u00CA', '\u00CB', '\u00C8', '\u00CD', '\u00CE', '\u00CF', '\u00CC',
78        '\u0060', '\u003A', '\u0023', '\u00A7', 0x27, '\u003D', '\u0022', '\u00D8', '\u0061', '\u0062', '\u0063',
79        '\u0064', '\u0065', '\u0066', '\u0067', '\u0068', '\u0069', '\u00AB', '\u00BB', '\u00F0', '\u00FD', '\u00FE',
80        '\u00B1', '\u00B0', '\u006A', '\u006B', '\u006C', '\u006D', '\u006E', '\u006F', '\u0070', '\u0071', '\u0072',
81        '\u00AA', '\u00BA', '\u00E6', '\u00B8', '\u00C6', '\u00A4', '\u00B5', '\u00DF', '\u0073', '\u0074', '\u0075',
82        '\u0076', '\u0077', '\u0078', '\u0079', '\u007A', '\u00A1', '\u00BF', '\u00D0', '\u00DD', '\u00DE', '\u00AE',
83        '\u00A2', '\u00A3', '\u00A5', '\u00B7', '\u00A9', '\u0040', '\u00B6', '\u00BC', '\u00BD', '\u00BE', '\u00AC',
84        '\u007C', '\u203E', '\u00A8', '\u00B4', '\u00D7', '\u00E4', '\u0041', '\u0042', '\u0043', '\u0044', '\u0045',
85        '\u0046', '\u0047', '\u0048', '\u0049', '\u00AD', '\u00F4', '\u00A6', '\u00F2', '\u00F3', '\u00F5', '\u00FC',
86        '\u004A', '\u004B', '\u004C', '\u004D', '\u004E', '\u004F', '\u0050', '\u0051', '\u0052', '\u00B9', '\u00FB',
87        '\u007D', '\u00F9', '\u00FA', '\u00FF', '\u00D6', '\u00F7', '\u0053', '\u0054', '\u0055', '\u0056', '\u0057',
88        '\u0058', '\u0059', '\u005A', '\u00B2', '\u00D4', 0x5C, '\u00D2', '\u00D3', '\u00D5', '\u0030', '\u0031',
89        '\u0032', '\u0033', '\u0034', '\u0035', '\u0036', '\u0037', '\u0038', '\u0039', '\u00B3', '\u00DB', '\u005D',
90        '\u00D9', '\u00DA', '\u009F'
91    };
92 
93    static final byte[] CHAR_TO_BYTE = new byte[ 0x203F ];
94 
95    static
96    {
97        CHAR_TO_BYTE['\u0000'] = (byte) 0x00;
98        CHAR_TO_BYTE['\u0001'] = (byte) 0x01;
99        CHAR_TO_BYTE['\u0002'] = (byte) 0x02;
100        CHAR_TO_BYTE['\u0003'] = (byte) 0x03;
101        CHAR_TO_BYTE['\u009C'] = (byte) 0x04;
102        CHAR_TO_BYTE['\u0009'] = (byte) 0x05;
103        CHAR_TO_BYTE['\u0086'] = (byte) 0x06;
104        CHAR_TO_BYTE['\u007F'] = (byte) 0x07;
105        CHAR_TO_BYTE['\u0097'] = (byte) 0x08;
106        CHAR_TO_BYTE['\u008D'] = (byte) 0x09;
107        CHAR_TO_BYTE['\u008E'] = (byte) 0x0A;
108        CHAR_TO_BYTE['\u000B'] = (byte) 0x0B;
109        CHAR_TO_BYTE['\u000C'] = (byte) 0x0C;
110        CHAR_TO_BYTE[0xD] = (byte) 0x0D;
111        CHAR_TO_BYTE['\u000E'] = (byte) 0x0E;
112        CHAR_TO_BYTE['\u000F'] = (byte) 0x0F;
113        CHAR_TO_BYTE['\u0010'] = (byte) 0x10;
114        CHAR_TO_BYTE['\u0011'] = (byte) 0x11;
115        CHAR_TO_BYTE['\u0012'] = (byte) 0x12;
116        CHAR_TO_BYTE['\u0013'] = (byte) 0x13;
117        CHAR_TO_BYTE['\u009D'] = (byte) 0x14;
118        CHAR_TO_BYTE['\u0085'] = (byte) 0x15;
119        CHAR_TO_BYTE['\u0008'] = (byte) 0x16;
120        CHAR_TO_BYTE['\u0087'] = (byte) 0x17;
121        CHAR_TO_BYTE['\u0018'] = (byte) 0x18;
122        CHAR_TO_BYTE['\u0019'] = (byte) 0x19;
123        CHAR_TO_BYTE['\u0092'] = (byte) 0x1A;
124        CHAR_TO_BYTE['\u008F'] = (byte) 0x1B;
125        CHAR_TO_BYTE['\u001C'] = (byte) 0x1C;
126        CHAR_TO_BYTE['\u001D'] = (byte) 0x1D;
127        CHAR_TO_BYTE['\u001E'] = (byte) 0x1E;
128        CHAR_TO_BYTE['\u001F'] = (byte) 0x1F;
129        CHAR_TO_BYTE['\u0080'] = (byte) 0x20;
130        CHAR_TO_BYTE['\u0081'] = (byte) 0x21;
131        CHAR_TO_BYTE['\u0082'] = (byte) 0x22;
132        CHAR_TO_BYTE['\u0083'] = (byte) 0x23;
133        CHAR_TO_BYTE['\u0084'] = (byte) 0x24;
134        CHAR_TO_BYTE[0xA] = (byte) 0x25;
135        CHAR_TO_BYTE['\u0017'] = (byte) 0x26;
136        CHAR_TO_BYTE['\u001B'] = (byte) 0x27;
137        CHAR_TO_BYTE['\u0088'] = (byte) 0x28;
138        CHAR_TO_BYTE['\u0089'] = (byte) 0x29;
139        CHAR_TO_BYTE['\u008A'] = (byte) 0x2A;
140        CHAR_TO_BYTE['\u008B'] = (byte) 0x2B;
141        CHAR_TO_BYTE['\u008C'] = (byte) 0x2C;
142        CHAR_TO_BYTE['\u0005'] = (byte) 0x2D;
143        CHAR_TO_BYTE['\u0006'] = (byte) 0x2E;
144        CHAR_TO_BYTE['\u0007'] = (byte) 0x2F;
145        CHAR_TO_BYTE['\u0090'] = (byte) 0x30;
146        CHAR_TO_BYTE['\u0091'] = (byte) 0x31;
147        CHAR_TO_BYTE['\u0016'] = (byte) 0x32;
148        CHAR_TO_BYTE['\u0093'] = (byte) 0x33;
149        CHAR_TO_BYTE['\u0094'] = (byte) 0x34;
150        CHAR_TO_BYTE['\u0095'] = (byte) 0x35;
151        CHAR_TO_BYTE['\u0096'] = (byte) 0x36;
152        CHAR_TO_BYTE['\u0004'] = (byte) 0x37;
153        CHAR_TO_BYTE['\u0098'] = (byte) 0x38;
154        CHAR_TO_BYTE['\u0099'] = (byte) 0x39;
155        CHAR_TO_BYTE['\u009A'] = (byte) 0x3A;
156        CHAR_TO_BYTE['\u009B'] = (byte) 0x3B;
157        CHAR_TO_BYTE['\u0014'] = (byte) 0x3C;
158        CHAR_TO_BYTE['\u0015'] = (byte) 0x3D;
159        CHAR_TO_BYTE['\u009E'] = (byte) 0x3E;
160        CHAR_TO_BYTE['\u001A'] = (byte) 0x3F;
161        CHAR_TO_BYTE['\u0020'] = (byte) 0x40;
162        CHAR_TO_BYTE['\u00A0'] = (byte) 0x41;
163        CHAR_TO_BYTE['\u00E2'] = (byte) 0x42;
164        CHAR_TO_BYTE['\u007B'] = (byte) 0x43;
165        CHAR_TO_BYTE['\u00E0'] = (byte) 0x44;
166        CHAR_TO_BYTE['\u00E1'] = (byte) 0x45;
167        CHAR_TO_BYTE['\u00E3'] = (byte) 0x46;
168        CHAR_TO_BYTE['\u00E5'] = (byte) 0x47;
169        CHAR_TO_BYTE['\u00E7'] = (byte) 0x48;
170        CHAR_TO_BYTE['\u00F1'] = (byte) 0x49;
171        CHAR_TO_BYTE['\u00C4'] = (byte) 0x4A;
172        CHAR_TO_BYTE['\u002E'] = (byte) 0x4B;
173        CHAR_TO_BYTE['\u003C'] = (byte) 0x4C;
174        CHAR_TO_BYTE['\u0028'] = (byte) 0x4D;
175        CHAR_TO_BYTE['\u002B'] = (byte) 0x4E;
176        CHAR_TO_BYTE['\u0021'] = (byte) 0x4F;
177        CHAR_TO_BYTE['\u0026'] = (byte) 0x50;
178        CHAR_TO_BYTE['\u00E9'] = (byte) 0x51;
179        CHAR_TO_BYTE['\u00EA'] = (byte) 0x52;
180        CHAR_TO_BYTE['\u00EB'] = (byte) 0x53;
181        CHAR_TO_BYTE['\u00E8'] = (byte) 0x54;
182        CHAR_TO_BYTE['\u00ED'] = (byte) 0x55;
183        CHAR_TO_BYTE['\u00EE'] = (byte) 0x56;
184        CHAR_TO_BYTE['\u00EF'] = (byte) 0x57;
185        CHAR_TO_BYTE['\u00EC'] = (byte) 0x58;
186        CHAR_TO_BYTE['\u007E'] = (byte) 0x59;
187        CHAR_TO_BYTE['\u00DC'] = (byte) 0x5A;
188        CHAR_TO_BYTE['\u0024'] = (byte) 0x5B;
189        CHAR_TO_BYTE['\u002A'] = (byte) 0x5C;
190        CHAR_TO_BYTE['\u0029'] = (byte) 0x5D;
191        CHAR_TO_BYTE['\u003B'] = (byte) 0x5E;
192        CHAR_TO_BYTE['\u005E'] = (byte) 0x5F;
193        CHAR_TO_BYTE['\u002D'] = (byte) 0x60;
194        CHAR_TO_BYTE['\u002F'] = (byte) 0x61;
195        CHAR_TO_BYTE['\u00C2'] = (byte) 0x62;
196        CHAR_TO_BYTE['\u005B'] = (byte) 0x63;
197        CHAR_TO_BYTE['\u00C0'] = (byte) 0x64;
198        CHAR_TO_BYTE['\u00C1'] = (byte) 0x65;
199        CHAR_TO_BYTE['\u00C3'] = (byte) 0x66;
200        CHAR_TO_BYTE['\u00C5'] = (byte) 0x67;
201        CHAR_TO_BYTE['\u00C7'] = (byte) 0x68;
202        CHAR_TO_BYTE['\u00D1'] = (byte) 0x69;
203        CHAR_TO_BYTE['\u00F6'] = (byte) 0x6A;
204        CHAR_TO_BYTE['\u002C'] = (byte) 0x6B;
205        CHAR_TO_BYTE['\u0025'] = (byte) 0x6C;
206        CHAR_TO_BYTE['\u005F'] = (byte) 0x6D;
207        CHAR_TO_BYTE['\u003E'] = (byte) 0x6E;
208        CHAR_TO_BYTE['\u003F'] = (byte) 0x6F;
209        CHAR_TO_BYTE['\u00F8'] = (byte) 0x70;
210        CHAR_TO_BYTE['\u00C9'] = (byte) 0x71;
211        CHAR_TO_BYTE['\u00CA'] = (byte) 0x72;
212        CHAR_TO_BYTE['\u00CB'] = (byte) 0x73;
213        CHAR_TO_BYTE['\u00C8'] = (byte) 0x74;
214        CHAR_TO_BYTE['\u00CD'] = (byte) 0x75;
215        CHAR_TO_BYTE['\u00CE'] = (byte) 0x76;
216        CHAR_TO_BYTE['\u00CF'] = (byte) 0x77;
217        CHAR_TO_BYTE['\u00CC'] = (byte) 0x78;
218        CHAR_TO_BYTE['\u0060'] = (byte) 0x79;
219        CHAR_TO_BYTE['\u003A'] = (byte) 0x7A;
220        CHAR_TO_BYTE['\u0023'] = (byte) 0x7B;
221        CHAR_TO_BYTE['\u00A7'] = (byte) 0x7C;
222        CHAR_TO_BYTE[0x27] = (byte) 0x7D;
223        CHAR_TO_BYTE['\u003D'] = (byte) 0x7E;
224        CHAR_TO_BYTE['\u0022'] = (byte) 0x7F;
225        CHAR_TO_BYTE['\u00D8'] = (byte) 0x80;
226        CHAR_TO_BYTE['\u0061'] = (byte) 0x81;
227        CHAR_TO_BYTE['\u0062'] = (byte) 0x82;
228        CHAR_TO_BYTE['\u0063'] = (byte) 0x83;
229        CHAR_TO_BYTE['\u0064'] = (byte) 0x84;
230        CHAR_TO_BYTE['\u0065'] = (byte) 0x85;
231        CHAR_TO_BYTE['\u0066'] = (byte) 0x86;
232        CHAR_TO_BYTE['\u0067'] = (byte) 0x87;
233        CHAR_TO_BYTE['\u0068'] = (byte) 0x88;
234        CHAR_TO_BYTE['\u0069'] = (byte) 0x89;
235        CHAR_TO_BYTE['\u00AB'] = (byte) 0x8A;
236        CHAR_TO_BYTE['\u00BB'] = (byte) 0x8B;
237        CHAR_TO_BYTE['\u00F0'] = (byte) 0x8C;
238        CHAR_TO_BYTE['\u00FD'] = (byte) 0x8D;
239        CHAR_TO_BYTE['\u00FE'] = (byte) 0x8E;
240        CHAR_TO_BYTE['\u00B1'] = (byte) 0x8F;
241        CHAR_TO_BYTE['\u00B0'] = (byte) 0x90;
242        CHAR_TO_BYTE['\u006A'] = (byte) 0x91;
243        CHAR_TO_BYTE['\u006B'] = (byte) 0x92;
244        CHAR_TO_BYTE['\u006C'] = (byte) 0x93;
245        CHAR_TO_BYTE['\u006D'] = (byte) 0x94;
246        CHAR_TO_BYTE['\u006E'] = (byte) 0x95;
247        CHAR_TO_BYTE['\u006F'] = (byte) 0x96;
248        CHAR_TO_BYTE['\u0070'] = (byte) 0x97;
249        CHAR_TO_BYTE['\u0071'] = (byte) 0x98;
250        CHAR_TO_BYTE['\u0072'] = (byte) 0x99;
251        CHAR_TO_BYTE['\u00AA'] = (byte) 0x9A;
252        CHAR_TO_BYTE['\u00BA'] = (byte) 0x9B;
253        CHAR_TO_BYTE['\u00E6'] = (byte) 0x9C;
254        CHAR_TO_BYTE['\u00B8'] = (byte) 0x9D;
255        CHAR_TO_BYTE['\u00C6'] = (byte) 0x9E;
256        CHAR_TO_BYTE['\u00A4'] = (byte) 0x9F;
257        CHAR_TO_BYTE['\u00B5'] = (byte) 0xA0;
258        CHAR_TO_BYTE['\u00DF'] = (byte) 0xA1;
259        CHAR_TO_BYTE['\u0073'] = (byte) 0xA2;
260        CHAR_TO_BYTE['\u0074'] = (byte) 0xA3;
261        CHAR_TO_BYTE['\u0075'] = (byte) 0xA4;
262        CHAR_TO_BYTE['\u0076'] = (byte) 0xA5;
263        CHAR_TO_BYTE['\u0077'] = (byte) 0xA6;
264        CHAR_TO_BYTE['\u0078'] = (byte) 0xA7;
265        CHAR_TO_BYTE['\u0079'] = (byte) 0xA8;
266        CHAR_TO_BYTE['\u007A'] = (byte) 0xA9;
267        CHAR_TO_BYTE['\u00A1'] = (byte) 0xAA;
268        CHAR_TO_BYTE['\u00BF'] = (byte) 0xAB;
269        CHAR_TO_BYTE['\u00D0'] = (byte) 0xAC;
270        CHAR_TO_BYTE['\u00DD'] = (byte) 0xAD;
271        CHAR_TO_BYTE['\u00DE'] = (byte) 0xAE;
272        CHAR_TO_BYTE['\u00AE'] = (byte) 0xAF;
273        CHAR_TO_BYTE['\u00A2'] = (byte) 0xB0;
274        CHAR_TO_BYTE['\u00A3'] = (byte) 0xB1;
275        CHAR_TO_BYTE['\u00A5'] = (byte) 0xB2;
276        CHAR_TO_BYTE['\u00B7'] = (byte) 0xB3;
277        CHAR_TO_BYTE['\u00A9'] = (byte) 0xB4;
278        CHAR_TO_BYTE['\u0040'] = (byte) 0xB5;
279        CHAR_TO_BYTE['\u00B6'] = (byte) 0xB6;
280        CHAR_TO_BYTE['\u00BC'] = (byte) 0xB7;
281        CHAR_TO_BYTE['\u00BD'] = (byte) 0xB8;
282        CHAR_TO_BYTE['\u00BE'] = (byte) 0xB9;
283        CHAR_TO_BYTE['\u00AC'] = (byte) 0xBA;
284        CHAR_TO_BYTE['\u007C'] = (byte) 0xBB;
285        CHAR_TO_BYTE['\u203E'] = (byte) 0xBC;
286        CHAR_TO_BYTE['\u00A8'] = (byte) 0xBD;
287        CHAR_TO_BYTE['\u00B4'] = (byte) 0xBE;
288        CHAR_TO_BYTE['\u00D7'] = (byte) 0xBF;
289        CHAR_TO_BYTE['\u00E4'] = (byte) 0xC0;
290        CHAR_TO_BYTE['\u0041'] = (byte) 0xC1;
291        CHAR_TO_BYTE['\u0042'] = (byte) 0xC2;
292        CHAR_TO_BYTE['\u0043'] = (byte) 0xC3;
293        CHAR_TO_BYTE['\u0044'] = (byte) 0xC4;
294        CHAR_TO_BYTE['\u0045'] = (byte) 0xC5;
295        CHAR_TO_BYTE['\u0046'] = (byte) 0xC6;
296        CHAR_TO_BYTE['\u0047'] = (byte) 0xC7;
297        CHAR_TO_BYTE['\u0048'] = (byte) 0xC8;
298        CHAR_TO_BYTE['\u0049'] = (byte) 0xC9;
299        CHAR_TO_BYTE['\u00AD'] = (byte) 0xCA;
300        CHAR_TO_BYTE['\u00F4'] = (byte) 0xCB;
301        CHAR_TO_BYTE['\u00A6'] = (byte) 0xCC;
302        CHAR_TO_BYTE['\u00F2'] = (byte) 0xCD;
303        CHAR_TO_BYTE['\u00F3'] = (byte) 0xCE;
304        CHAR_TO_BYTE['\u00F5'] = (byte) 0xCF;
305        CHAR_TO_BYTE['\u00FC'] = (byte) 0xD0;
306        CHAR_TO_BYTE['\u004A'] = (byte) 0xD1;
307        CHAR_TO_BYTE['\u004B'] = (byte) 0xD2;
308        CHAR_TO_BYTE['\u004C'] = (byte) 0xD3;
309        CHAR_TO_BYTE['\u004D'] = (byte) 0xD4;
310        CHAR_TO_BYTE['\u004E'] = (byte) 0xD5;
311        CHAR_TO_BYTE['\u004F'] = (byte) 0xD6;
312        CHAR_TO_BYTE['\u0050'] = (byte) 0xD7;
313        CHAR_TO_BYTE['\u0051'] = (byte) 0xD8;
314        CHAR_TO_BYTE['\u0052'] = (byte) 0xD9;
315        CHAR_TO_BYTE['\u00B9'] = (byte) 0xDA;
316        CHAR_TO_BYTE['\u00FB'] = (byte) 0xDB;
317        CHAR_TO_BYTE['\u007D'] = (byte) 0xDC;
318        CHAR_TO_BYTE['\u00F9'] = (byte) 0xDD;
319        CHAR_TO_BYTE['\u00FA'] = (byte) 0xDE;
320        CHAR_TO_BYTE['\u00FF'] = (byte) 0xDF;
321        CHAR_TO_BYTE['\u00D6'] = (byte) 0xE0;
322        CHAR_TO_BYTE['\u00F7'] = (byte) 0xE1;
323        CHAR_TO_BYTE['\u0053'] = (byte) 0xE2;
324        CHAR_TO_BYTE['\u0054'] = (byte) 0xE3;
325        CHAR_TO_BYTE['\u0055'] = (byte) 0xE4;
326        CHAR_TO_BYTE['\u0056'] = (byte) 0xE5;
327        CHAR_TO_BYTE['\u0057'] = (byte) 0xE6;
328        CHAR_TO_BYTE['\u0058'] = (byte) 0xE7;
329        CHAR_TO_BYTE['\u0059'] = (byte) 0xE8;
330        CHAR_TO_BYTE['\u005A'] = (byte) 0xE9;
331        CHAR_TO_BYTE['\u00B2'] = (byte) 0xEA;
332        CHAR_TO_BYTE['\u00D4'] = (byte) 0xEB;
333        CHAR_TO_BYTE[0x5C] = (byte) 0xEC;
334        CHAR_TO_BYTE['\u00D2'] = (byte) 0xED;
335        CHAR_TO_BYTE['\u00D3'] = (byte) 0xEE;
336        CHAR_TO_BYTE['\u00D5'] = (byte) 0xEF;
337        CHAR_TO_BYTE['\u0030'] = (byte) 0xF0;
338        CHAR_TO_BYTE['\u0031'] = (byte) 0xF1;
339        CHAR_TO_BYTE['\u0032'] = (byte) 0xF2;
340        CHAR_TO_BYTE['\u0033'] = (byte) 0xF3;
341        CHAR_TO_BYTE['\u0034'] = (byte) 0xF4;
342        CHAR_TO_BYTE['\u0035'] = (byte) 0xF5;
343        CHAR_TO_BYTE['\u0036'] = (byte) 0xF6;
344        CHAR_TO_BYTE['\u0037'] = (byte) 0xF7;
345        CHAR_TO_BYTE['\u0038'] = (byte) 0xF8;
346        CHAR_TO_BYTE['\u0039'] = (byte) 0xF9;
347        CHAR_TO_BYTE['\u00B3'] = (byte) 0xFA;
348        CHAR_TO_BYTE['\u00DB'] = (byte) 0xFB;
349        CHAR_TO_BYTE['\u005D'] = (byte) 0xFC;
350        CHAR_TO_BYTE['\u00D9'] = (byte) 0xFD;
351        CHAR_TO_BYTE['\u00DA'] = (byte) 0xFE;
352        CHAR_TO_BYTE['\u009F'] = (byte) 0xFF;
353    }
354 
355    /** Creates a new {@code IBM273CharsetProvider} instance. */
356    public IBM273CharsetProvider()
357    {
358        super();
359    }
360 
361    public Charset charsetForName( final String charsetName )
362    {
363        Charset ret = null;
364 
365        if ( charsetName != null )
366        {
367            final String lower = charsetName.toLowerCase();
368            for ( int i = 0; i < SUPPORTED_NAMES.length; i++ )
369            {
370                if ( SUPPORTED_NAMES[i].equals( lower ) )
371                {
372                    ret = new IBM273Charset();
373                    break;
374                }
375            }
376        }
377 
378        return ret;
379    }
380 
381    public Iterator charsets()
382    {
383        return new Iterator()
384        {
385 
386            private boolean hasNext = true;
387 
388            public boolean hasNext()
389            {
390                return this.hasNext;
391            }
392 
393            public Object next()
394            {
395                if ( this.hasNext )
396                {
397                    this.hasNext = false;
398                    return new IBM273Charset();
399                }
400                else
401                {
402                    throw new NoSuchElementException();
403                }
404 
405            }
406 
407            public void remove()
408            {
409                throw new UnsupportedOperationException();
410            }
411 
412        };
413    }
414 
415}
416 
417/** IBM273 {@code Charset} implementation. */
418class IBM273Charset extends Charset
419{
420 
421    public IBM273Charset()
422    {
423        super( IBM273CharsetProvider.COMMON_NAME, IBM273CharsetProvider.ALIAS_NAMES );
424    }
425 
426    public CharsetEncoder newEncoder()
427    {
428        return new IBM273CharsetEncoder( this );
429    }
430 
431    public CharsetDecoder newDecoder()
432    {
433        return new IBM273CharsetDecoder( this );
434    }
435 
436    public boolean contains( final Charset charset )
437    {
438        return false;
439    }
440 
441    static boolean isCharacterSupported( final char c )
442    {
443        return ( c >= '\u0000' && c <= '\u00AE' ) || ( c >= '\u00B0' && c <= '\u00FF' ) || c == '\u203E';
444    }
445 
446}
447 
448class IBM273CharsetEncoder extends CharsetEncoder
449{
450 
451    private final char[] charBuf = new char[ 65536 ];
452 
453    IBM273CharsetEncoder( final Charset charset )
454    {
455        super( charset, 1f, 1f );
456        this.onUnmappableCharacter( CodingErrorAction.REPLACE );
457    }
458 
459    protected CoderResult encodeLoop( final CharBuffer in, final ByteBuffer buf )
460    {
461        if ( in.hasArray() && buf.hasArray() )
462        {
463            return encodeLoopArray( in, buf );
464        }
465 
466        while ( in.hasRemaining() )
467        {
468            in.mark();
469 
470            final int len;
471            if ( in.remaining() < this.charBuf.length )
472            {
473                len = in.remaining();
474                in.get( this.charBuf, 0, in.remaining() );
475            }
476            else
477            {
478                in.get( this.charBuf, 0, this.charBuf.length );
479                len = this.charBuf.length;
480            }
481 
482            for ( int i = 0; i < len; i++ )
483            {
484                if ( !buf.hasRemaining() )
485                {
486                    in.reset();
487                    in.position( in.position() + i );
488                    return CoderResult.OVERFLOW;
489                }
490 
491                if ( !IBM273Charset.isCharacterSupported( this.charBuf[i] ) )
492                {
493                    in.reset();
494                    in.position( in.position() + i );
495                    return CoderResult.unmappableForLength( 1 );
496                }
497 
498                buf.put( IBM273CharsetProvider.CHAR_TO_BYTE[this.charBuf[i]] );
499            }
500        }
501 
502        return CoderResult.UNDERFLOW;
503    }
504 
505    private static CoderResult encodeLoopArray( final CharBuffer in, final ByteBuffer buf )
506    {
507        final int len = in.remaining();
508        for ( int i = 0; i < len; i++, in.position( in.position() + 1 ), buf.position( buf.position() + 1 ) )
509        {
510            if ( !buf.hasRemaining() )
511            {
512                return CoderResult.OVERFLOW;
513            }
514 
515            if ( !IBM273Charset.isCharacterSupported( in.array()[in.position() + in.arrayOffset()] ) )
516            {
517                return CoderResult.unmappableForLength( 1 );
518            }
519 
520            buf.array()[buf.position() + buf.arrayOffset()] =
521                IBM273CharsetProvider.CHAR_TO_BYTE[in.array()[in.position() + in.arrayOffset()]];
522 
523        }
524 
525        return CoderResult.UNDERFLOW;
526    }
527 
528}
529 
530class IBM273CharsetDecoder extends CharsetDecoder
531{
532 
533    private final byte[] byteBuf = new byte[ 65536 ];
534 
535    IBM273CharsetDecoder( final Charset charset )
536    {
537        super( charset, 1f, 1f );
538        this.onUnmappableCharacter( CodingErrorAction.REPLACE );
539    }
540 
541    protected CoderResult decodeLoop( final ByteBuffer in, final CharBuffer buf )
542    {
543        if ( in.hasArray() && buf.hasArray() )
544        {
545            return decodeLoopArray( in, buf );
546        }
547 
548        while ( in.hasRemaining() )
549        {
550            in.mark();
551 
552            final int len;
553            if ( in.remaining() < this.byteBuf.length )
554            {
555                len = in.remaining();
556                in.get( this.byteBuf, 0, in.remaining() );
557            }
558            else
559            {
560                in.get( this.byteBuf, 0, this.byteBuf.length );
561                len = this.byteBuf.length;
562            }
563 
564            for ( int i = 0; i < len; i++ )
565            {
566                if ( !buf.hasRemaining() )
567                {
568                    in.reset();
569                    in.position( in.position() + i );
570                    return CoderResult.OVERFLOW;
571                }
572 
573                buf.put( IBM273CharsetProvider.BYTE_TO_CHAR[this.byteBuf[i] & 0xFF] );
574            }
575        }
576 
577        return CoderResult.UNDERFLOW;
578    }
579 
580    private static CoderResult decodeLoopArray( final ByteBuffer in, final CharBuffer buf )
581    {
582        final int len = in.remaining();
583        for ( int i = 0; i < len; i++, in.position( in.position() + 1 ), buf.position( buf.position() + 1 ) )
584        {
585            if ( !buf.hasRemaining() )
586            {
587                return CoderResult.OVERFLOW;
588            }
589 
590            buf.array()[buf.position() + buf.arrayOffset()] =
591                IBM273CharsetProvider.BYTE_TO_CHAR[in.array()[in.position() + in.arrayOffset()] & 0xFF];
592 
593        }
594 
595        return CoderResult.UNDERFLOW;
596    }
597 
598}

[all classes][org.jdtaus.banking.charsets.spi]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov