// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) braces deadcode fieldsfirst 
// Source File Name:   CharacterSetFactory.java
// Class Version:      45.3

package oracle.sql;

import java.io.PrintStream;
import java.sql.SQLException;

// Referenced classes of package oracle.sql:
//            CharacterSet

// flag ACC_SUPER is set
abstract class CharacterSetFactory
{
    // Constants:          132
    // Interfaces:         0
    // Fields:             5
    // Methods:            3
    // Class Attributes:   1


    public static final short DEFAULT_CHARSET = -1;
    public static final short ASCII_CHARSET = 1;
    public static final short ISO_LATIN_1_CHARSET = 31;
    public static final short UNICODE_1_CHARSET = 870;
    public static final short UNICODE_2_CHARSET = 871;

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 1626
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetFactory; At 0 5 Range 0 4 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type V At 0 5 Range 0 4 Init 0 fixed
    CharacterSetFactory()
    {
        super();
        return;
    }

    // Decompiling method: main  Signature: ([Ljava/lang/String;)V
    // Max stack: 5, #locals: 17, #params: 1
    // Code length: 633 bytes, Code offset: 1669
    // Exception table: 2 entries
    //           start  388 end 428 handler 431 type SQLException
    //           start  299 end 542 handler 545 type Exception
    // Line Number Table found: 75 entries
    // Parameter  0 added: Name args Type [Ljava/lang/String; At 0 633 Range 0 632 Init 0
    // RetValue  17 added: Name <returnValue> Type V At 0 633 Range 0 632 Init 0 fixed
    // LocalVar   1 added: Name characterset Type Loracle/sql/CharacterSet; At 6 584 Range 6 589 Init 6
    // LocalVar   2 added: Name ai Type [I At 31 597 Range 31 627 Init 31
    // LocalVar   3 added: Name flag Type Z At 33 594 Range 33 626 Init 33
    // LocalVar   3 chged: Name i Oname flag Type I At 626 1 Range 33 626 Init 33
    // LocalVar   4 added: Name characterset1 Type Loracle/sql/CharacterSet; At 43 546 Range 43 588 Init 43
    // LocalVar   5 added: Name s Type Ljava/lang/String; At 47 26 Range 47 72 Init 47
    // LocalVar   5 added: Name s1 Type Ljava/lang/String; At 79 26 Range 79 104 Init 79
    // LocalVar   5 added: Name s2 Type Ljava/lang/String; At 111 26 Range 111 136 Init 111
    // LocalVar   5 added: Name s3 Type Ljava/lang/String; At 143 26 Range 143 168 Init 143
    // LocalVar   5 added: Name s4 Type Ljava/lang/String; At 175 25 Range 175 199 Init 175
    // LocalVar   6 added: Name args1 Type [Ljava/lang/String; At 201 418 Range 201 618 Init 201
    // LocalVar   7 added: Name flag Type Z At 204 413 Range 204 616 Init 204
    // LocalVar   7 chged: Name j Oname flag Type I At 615 2 Range 204 616 Init 204
    // LocalVar   8 added: Name s5 Type Ljava/lang/String; At 214 296 Range 214 509 Init 214
    // LocalVar   9 added: Name s6 Type Ljava/lang/String; At 218 64 Range 218 281 Init 218
    // LocalVar  10 added: Name flag Type Z At 297 275 Range 297 571 Init 297
    // LocalVar  11 added: Name abyte0 Type [B At 306 9 Range 306 314 Init 306
    // LocalVar  12 added: Name s7 Type Ljava/lang/String; At 319 26 Range 319 344 Init 319
    // LocalVar  11 added: Name abyte1 Type [B At 328 9 Range 328 336 Init 328
    // LocalVar  13 added: Name s8 Type Ljava/lang/String; At 341 118 Range 341 458 Init 341
    // LocalVar  14 added: Name abyte2 Type [B At 395 9 Range 395 403 Init 395
    // LocalVar  15 added: Name s9 Type Ljava/lang/String; At 408 4 Range 408 411 Init 408
    // LocalVar  14 added: Name abyte3 Type [B At 477 10 Range 477 486 Init 477
    // LocalVar  15 added: Name abyte4 Type [B At 491 9 Range 491 499 Init 491
    // LocalVar  16 added: Name s10 Type Ljava/lang/String; At 504 26 Range 504 529 Init 504
    // LocalVar  11 added: Name exception Type Ljava/lang/Exception; At 545 16 Range 545 560 Init 545
    // LocalVar   5 name s1(Ljava/lang/String;) merged out into s(Ljava/lang/String;)
    // LocalVar   5 name s2(Ljava/lang/String;) merged out into s(Ljava/lang/String;)
    // LocalVar   5 name s3(Ljava/lang/String;) merged out into s(Ljava/lang/String;)
    // LocalVar   5 name s4(Ljava/lang/String;) merged out into s(Ljava/lang/String;)
    // LocalVar  11 name abyte1([B) merged out into abyte0([B)
    public static void main(String args[])
    {
        CharacterSet characterset = CharacterSet.make(871);
        int ai[] = {
            1, 31, 870, 871
        };
        for(int i = 0; i < ai.length; i++)
        {
            CharacterSet characterset1 = CharacterSet.make(ai[i]);
            String s = "longlonglonglong";
            s = s + s + s + s;
            s = s + s + s + s;
            s = s + s + s + s;
            s = s + s + s + s;
            String args1[] = {
                "abc", "ab\u0100c", "XY\000Z", s
            };
            for(int j = 0; j < args1.length; j++)
            {
                String s1 = args1[j];
                String s2 = s1;
                if(s1.length() > 16)
                {
                    s2 = s2.substring(0, 16) + "...";
                }
                System.out.println("testing " + characterset1 + " against <" + s2 + ">");
                boolean flag = true;
                try
                {
                    byte abyte0[] = characterset1.convertWithReplacement(s1);
                    String s3 = characterset1.toStringWithReplacement(abyte0, 0, abyte0.length);
                    abyte0 = characterset1.convert(s3);
                    String s4 = characterset1.toString(abyte0, 0, abyte0.length);
                    if(!s3.equals(s4))
                    {
                        System.out.println("    FAILED roundTrip " + s4);
                        flag = false;
                    }
                    if(characterset1.isLossyFrom(characterset))
                    {
                        try
                        {
                            byte abyte1[] = characterset1.convert(s1);
                            String s5 = characterset1.toString(abyte1, 0, abyte1.length);
                            if(!s5.equals(s4))
                            {
                                System.out.println("    FAILED roundtrip, no throw");
                            }
                        }
                        catch(SQLException _ex) { }
                    } else
                    {
                        if(!s4.equals(s1))
                        {
                            System.out.println("    FAILED roundTrip " + s4);
                            flag = false;
                        }
                        byte abyte2[] = characterset.convert(s1);
                        byte abyte3[] = characterset1.convert(characterset, abyte2, 0, abyte2.length);
                        String s6 = characterset1.toString(abyte3, 0, abyte3.length);
                        if(!s6.equals(s1))
                        {
                            System.out.println("    FAILED withoutReplacement " + s6);
                            flag = false;
                        }
                    }
                }
                catch(Exception exception)
                {
                    System.out.println("    FAILED with Exception " + exception);
                }
                if(flag)
                {
                    System.out.println("    PASSED " + (characterset1.isLossyFrom(characterset) ? "LOSSY" : ""));
                }
            }

        }

        return;
    }

    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetFactory; At 0 0 Range 0 4294967295 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 0 Range 0 4294967295 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/CharacterSet; At 0 0 Range 0 4294967295 Init 0 fixed
    public abstract CharacterSet make(int i);
}
