1 21 22 package org.apache.derby.client.net; 23 24 import org.apache.derby.client.am.SqlException; 25 import org.apache.derby.client.am.ClientMessageId; 26 import org.apache.derby.shared.common.reference.SQLState; 27 28 33 public class EbcdicCcsidManager extends CcsidManager { 34 35 private static final int[] conversionArrayToEbcdic = { 36 0x0000, 0x0001, 0x0002, 0x0003, 0x0037, 0x002d, 0x002e, 0x002f 37 , 0x0016, 0x0005, 0x0025, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f 38 , 0x0010, 0x0011, 0x0012, 0x0013, 0x003c, 0x003d, 0x0032, 0x0026 39 , 0x0018, 0x0019, 0x003f, 0x0027, 0x001c, 0x001d, 0x001e, 0x001f 40 , 0x0040, 0x004f, 0x007f, 0x007b, 0x005b, 0x006c, 0x0050, 0x007d 41 , 0x004d, 0x005d, 0x005c, 0x004e, 0x006b, 0x0060, 0x004b, 0x0061 42 , 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7 43 , 0x00f8, 0x00f9, 0x007a, 0x005e, 0x004c, 0x007e, 0x006e, 0x006f 44 , 0x007c, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7 45 , 0x00c8, 0x00c9, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6 46 , 0x00d7, 0x00d8, 0x00d9, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6 47 , 0x00e7, 0x00e8, 0x00e9, 0x004a, 0x00e0, 0x005a, 0x005f, 0x006d 48 , 0x0079, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087 49 , 0x0088, 0x0089, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096 50 , 0x0097, 0x0098, 0x0099, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6 51 , 0x00a7, 0x00a8, 0x00a9, 0x00c0, 0x00bb, 0x00d0, 0x00a1, 0x0007 52 , 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0015, 0x0006, 0x0017 53 , 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x0009, 0x000a, 0x001b 54 , 0x0030, 0x0031, 0x001a, 0x0033, 0x0034, 0x0035, 0x0036, 0x0008 55 , 0x0038, 0x0039, 0x003a, 0x003b, 0x0004, 0x0014, 0x003e, 0x00ff 56 , 0x0041, 0x00aa, 0x00b0, 0x00b1, 0x009f, 0x00b2, 0x006a, 0x00b5 57 , 0x00bd, 0x00b4, 0x009a, 0x008a, 0x00ba, 0x00ca, 0x00af, 0x00bc 58 , 0x0090, 0x008f, 0x00ea, 0x00fa, 0x00be, 0x00a0, 0x00b6, 0x00b3 59 , 0x009d, 0x00da, 0x009b, 0x008b, 0x00b7, 0x00b8, 0x00b9, 0x00ab 60 , 0x0064, 0x0065, 0x0062, 0x0066, 0x0063, 0x0067, 0x009e, 0x0068 61 , 0x0074, 0x0071, 0x0072, 0x0073, 0x0078, 0x0075, 0x0076, 0x0077 62 , 0x00ac, 0x0069, 0x00ed, 0x00ee, 0x00eb, 0x00ef, 0x00ec, 0x00bf 63 , 0x0080, 0x00fd, 0x00fe, 0x00fb, 0x00fc, 0x00ad, 0x00ae, 0x0059 64 , 0x0044, 0x0045, 0x0042, 0x0046, 0x0043, 0x0047, 0x009c, 0x0048 65 , 0x0054, 0x0051, 0x0052, 0x0053, 0x0058, 0x0055, 0x0056, 0x0057 66 , 0x008c, 0x0049, 0x00cd, 0x00ce, 0x00cb, 0x00cf, 0x00cc, 0x00e1 67 , 0x0070, 0x00dd, 0x00de, 0x00db, 0x00dc, 0x008d, 0x008e, 0x00df 68 }; 69 70 private static final int[] conversionArrayToUCS2 = { 71 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F 72 , 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F 73 , 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087 74 , 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F 75 , 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B 76 , 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007 77 , 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004 78 , 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A 79 , 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5 80 , 0x00E7, 0x00F1, 0x005B, 0x002E, 0x003C, 0x0028, 0x002B, 0x0021 81 , 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF 82 , 0x00EC, 0x00DF, 0x005D, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E 83 , 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5 84 , 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F 85 , 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF 86 , 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022 87 , 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067 88 , 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1 89 , 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070 90 , 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4 91 , 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078 92 , 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE 93 , 0x00A2, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC 94 , 0x00BD, 0x00BE, 0x00AC, 0x007C, 0x00AF, 0x00A8, 0x00B4, 0x00D7 95 , 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047 96 , 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5 97 , 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050 98 , 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF 99 , 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058 100 , 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5 101 , 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037 102 , 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F 103 }; 104 105 public EbcdicCcsidManager() { 106 super((byte) 0x40, (byte) 0x4B, 108 new byte[]{ (byte) 0xf0, (byte) 0xf1, (byte) 0xf2, (byte) 0xf3, (byte) 0xf4, 111 (byte) 0xf5, (byte) 0xf6, (byte) 0xf7, (byte) 0xf8, (byte) 0xf9, 113 (byte) 0xc1, (byte) 0xc2, (byte) 0xc3, (byte) 0xc4, (byte) 0xc5, 115 (byte) 0xc6}, 117 new byte[]{ 118 (byte) 0xc7, (byte) 0xc8, (byte) 0xc9, (byte) 0xd1, (byte) 0xd2, 120 (byte) 0xd3, (byte) 0xd4, (byte) 0xd5, (byte) 0xd6, (byte) 0xd7, 122 (byte) 0xc1, (byte) 0xc2, (byte) 0xc3, (byte) 0xc4, (byte) 0xc5, 124 (byte) 0xc6} ); 127 } 128 129 public byte[] convertFromUCS2(String sourceString, org.apache.derby.client.am.Agent agent) throws SqlException { 130 byte[] bytes = new byte[sourceString.length()]; 131 convertFromUCS2(sourceString, bytes, 0, agent); 132 return bytes; 133 } 134 135 public int convertFromUCS2(String sourceString, 136 byte[] buffer, 137 int offset, 138 org.apache.derby.client.am.Agent agent) throws SqlException { 139 for (int i = 0; i < sourceString.length(); i++) { 140 char c = sourceString.charAt(i); 141 if (c > 0xff) 142 { 144 throw new SqlException(agent.logWriter_, 145 new ClientMessageId(SQLState.CANT_CONVERT_UNICODE_TO_EBCDIC)); 146 } else { 147 buffer[offset++] = (byte) (conversionArrayToEbcdic[c]); 148 } 149 ; 150 } 151 return offset; 152 } 153 154 String convertToUCS2(byte[] sourceBytes) { 155 int i = 0; 156 char[] theChars = new char[sourceBytes.length]; 157 int num = 0; 158 159 for (i = 0; i < sourceBytes.length; i++) { 160 num = (sourceBytes[i] < 0) ? (sourceBytes[i] + 256) : sourceBytes[i]; 161 theChars[i] = (char) conversionArrayToUCS2[num]; 162 } 163 164 return new String (theChars); 165 } 166 167 String convertToUCS2(byte[] sourceBytes, int offset, int numToConvert) { 168 int i = 0, j = 0; 169 char[] theChars = new char[numToConvert]; 170 int num = 0; 171 172 for (i = offset; i < (offset + numToConvert); i++) { 173 num = (sourceBytes[i] < 0) ? (sourceBytes[i] + 256) : sourceBytes[i]; 174 theChars[j] = (char) conversionArrayToUCS2[num]; 175 j++; 176 } 177 return new String (theChars); 178 } 179 180 181 char convertToUCS2Char(byte sourceByte) { 182 return (char) conversionArrayToUCS2[(sourceByte < 0) ? (sourceByte + 256) : sourceByte]; 183 } 184 185 } 186 187 | Popular Tags |