// 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:   OracleLog.java
// Class Version:      45.3

package oracle.jdbc.driver;

import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Date;

// Referenced classes of package oracle.jdbc.driver:
//            OracleConnection

// flag ACC_SUPER is set
public class OracleLog
{
    // Constants:          427
    // Interfaces:         0
    // Fields:             71
    // Methods:            36
    // Class Attributes:   1


    public static final int MASK_ALL_SET = 0xfffffff;
    public static final int MAX_VECTOR_BITS = 32;
    public static final int MAX_MODULES = 32;
    public static final int MODULE_ALL = 0xfffffff;
    public static final int MODULE_DRIVER = 1;
    public static final int MODULE_DBACCESS = 2;
    public static final int MODULE_DBCONV = 4;
    public static final int MODULE_JOLT = 8;
    public static final int MODULE_PICKLE = 16;
    public static final int MODULE_JTTC = 32;
    public static final int MODULE_DATUM = 64;
    public static final int MODULE_KPRB = 128;
    public static final int MODULE_XA = 256;
    public static final int MODULE_TOTAL = 9;
    public static final String ModuleName[] = {
        "DRVR ", "DBAC ", "DBCV ", "JOLT ", "PIKL ", "JTTC ", "DATM ", "KPRB ", "XA   "
    };
    public static final int SUBMOD_ALL = 0xfffffff;
    public static final int SUBMOD_DEFAULT = 1;
    public static final int SUBMOD_DRVR_LOG = 2;
    public static final int SUBMOD_DRVR_ERR = 4;
    public static final int SUBMOD_DRVR_CONN = 8;
    public static final int SUBMOD_DRVR_STMT = 16;
    public static final int SUBMOD_DRVR_RSET = 32;
    public static final int SUBMOD_DRVR_UTIL = 64;
    public static final int SUBMOD_DRVR_SQL = 128;
    public static final int SUBMOD_DBAC_DATA = 2;
    public static final int SUBMOD_PCKL_INIT = 2;
    public static final int SUBMOD_PCKL_TYPE = 4;
    public static final int SUBMOD_PCKL_PCKL = 8;
    public static final int SUBMOD_PCKL_UNPK = 16;
    public static final int SUBMOD_PCKL_CONV = 32;
    public static final int SUBMOD_PCKL_DESC = 64;
    public static final int SUBMOD_JOLT_COMM = 2;
    public static final int SUBMOD_JOLT_BASE = 4;
    public static final int SUBMOD_JOLT_JDBC = 8;
    public static final int SUBMOD_JTTC_BASE = 2;
    public static final int SUBMOD_JTTC_TX = 4;
    public static final int SUBMOD_JTTC_RX = 8;
    public static final int CATEGORY_ALL = 0xfffffff;
    public static final int USER_OPER = 1;
    public static final int PROG_ERROR = 2;
    public static final int ERROR = 4;
    public static final int WARNING = 8;
    public static final int FUNCTION = 16;
    public static final int DEBUG1 = 32;
    public static final int DEBUG2 = 64;
    public static final int CATEGORY_TOTAL = 7;
    public static final String CategoryName[] = {
        "OPER ", "PERR ", "ERRO ", "WARN ", "FUNC ", "DBG1 ", "DBG2 "
    };
    public static final int CATEGORY_LOW_VOL = 15;
    public static final int CATEGORY_MED_VOL = 63;
    public static final int CATEGORY_HIGH_VOL = 0xfffffff;
    public static final int FIELD_NONE = 0;
    public static final int FIELD_ALL = 0xfffffff;
    public static final int FIELD_NUMBER = 1;
    public static final int FIELD_TIME = 2;
    public static final int FIELD_MODULE = 4;
    public static final int FIELD_SUBMOD = 8;
    public static final int FIELD_CATEGORY = 16;
    public static final int FIELD_CONN = 32;
    public static final int FIELD_THREAD = 64;
    public static final int FIELD_DEFAULT = 20;
    public static final boolean TRACE = false;
    private static boolean m_initialized = false;
    private static PrintWriter m_logWriter = null;
    private static PrintStream m_logStream = null;
    private static int m_printMask = 20;
    private static int m_moduleMask = 0xfffffff;
    private static int m_submodMasks[];
    private static int m_categoryMask = 0xfffffff;
    private static int m_maxPrintBytes = 200;
    private static boolean m_warningEnabled = true;
    private static int m_msgNumber = 0;

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 6253
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/jdbc/driver/OracleLog; 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
    public OracleLog()
    {
        super();
        return;
    }

    // Decompiling method: byteToHexString  Signature: (B)Ljava/lang/String;
    // Max stack: 3, #locals: 3, #params: 1
    // Code length: 53 bytes, Code offset: 6296
    // Line Number Table found: 8 entries
    // Parameter  0 added: Name byte0 Type B At 0 53 Range 0 52 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/String; At 0 53 Range 0 52 Init 0 fixed
    // LocalVar   1 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 9 40 Range 9 48 Init 9
    // LocalVar   2 added: Name i Type I At 15 26 Range 15 40 Init 15
    public static String byteToHexString(byte byte0)
    {
        StringBuffer stringbuffer = new StringBuffer("");
        int i = 0xff & byte0;
        if(i <= 15)
        {
            stringbuffer.append("0x0");
        } else
        {
            stringbuffer.append("0x");
        }
        stringbuffer.append(Integer.toHexString(i));
        return stringbuffer.toString();
    }

    // Decompiling method: bytesToFormattedStr  Signature: ([BILjava/lang/String;)Ljava/lang/String;
    // Max stack: 4, #locals: 6, #params: 3
    // Code length: 222 bytes, Code offset: 6415
    // Line Number Table found: 23 entries
    // Parameter  0 added: Name abyte0 Type [B At 0 222 Range 0 221 Init 0
    // Parameter  1 added: Name i Type I At 0 222 Range 0 221 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 222 Range 0 221 Init 0
    // RetValue   6 added: Name <returnValue> Type Ljava/lang/String; At 0 222 Range 0 221 Init 0 fixed
    // LocalVar   5 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 9 209 Range 9 217 Init 9
    // LocalVar   3 added: Name flag Type Z At 51 161 Range 51 211 Init 51
    // LocalVar   3 chged: Name j Oname flag Type I At 211 1 Range 51 211 Init 51
    // LocalVar   4 added: Name k Type I At 162 25 Range 162 186 Init 162
    public static String bytesToFormattedStr(byte abyte0[], int i, String s)
    {
        StringBuffer stringbuffer = new StringBuffer("");
        if(s == null)
        {
            s = new String("");
        }
        stringbuffer.append(s);
        if(abyte0 == null)
        {
            stringbuffer.append("byte [] is null");
            return stringbuffer.toString();
        }
        for(int j = 0; j < i; j++)
        {
            if(j >= m_maxPrintBytes)
            {
                stringbuffer.append("\n" + s + "... last " + (i - m_maxPrintBytes) + " bytes were not printed to limit the output size");
                break;
            }
            if(j > 0 && j % 20 == 0)
            {
                stringbuffer.append("\n" + s);
            }
            if(j % 20 == 10)
            {
                stringbuffer.append(" ");
            }
            int k = 0xff & abyte0[j];
            if(k <= 15)
            {
                stringbuffer.append("0");
            }
            stringbuffer.append(Integer.toHexString(k) + " ");
        }

        return stringbuffer.toString();
    }

    // Decompiling method: bytesToPrintableForm  Signature: (Ljava/lang/String;[B)Ljava/lang/String;
    // Max stack: 3, #locals: 3, #params: 2
    // Code length: 18 bytes, Code offset: 6763
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 18 Range 0 17 Init 0
    // Parameter  1 added: Name abyte0 Type [B At 0 18 Range 0 17 Init 0
    // RetValue   3 added: Name <returnValue> Type Ljava/lang/String; At 0 18 Range 0 17 Init 0 fixed
    // LocalVar   2 added: Name i Type I At 10 4 Range 10 13 Init 10
    public static String bytesToPrintableForm(String s, byte abyte0[])
    {
        int i = abyte0 != null ? abyte0.length : 0;
        return bytesToPrintableForm(s, abyte0, i);
    }

    // Decompiling method: bytesToPrintableForm  Signature: (Ljava/lang/String;[BI)Ljava/lang/String;
    // Max stack: 4, #locals: 4, #params: 3
    // Code length: 71 bytes, Code offset: 6823
    // Line Number Table found: 8 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 71 Range 0 70 Init 0
    // Parameter  1 added: Name abyte0 Type [B At 0 71 Range 0 70 Init 0
    // Parameter  2 added: Name i Type I At 0 71 Range 0 70 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 71 Range 0 70 Init 0 fixed
    // LocalVar   3 added: Name obj Type A At 1 1 Range 1 1 Init 1
    // LocalVar   3 added: Name s1 Type Ljava/lang/String; At 25 45 Range 25 69 Init 25
    // LocalVar   3 chged: Name s2 Oname obj Type Ljava/lang/String; At 1 1 Range 1 1 Init 1
    // LocalVar   3 name s1(Ljava/lang/String;) merged out into s2(Ljava/lang/String;)
    public static String bytesToPrintableForm(String s, byte abyte0[], int i)
    {
        String s1 = null;
        if(abyte0 == null)
        {
            s1 = s + ": null";
        } else
        {
            s1 = s + " (" + abyte0.length + " bytes):\n" + bytesToFormattedStr(abyte0, i, "  ");
        }
        return s1;
    }

    // Decompiling method: charsToUcs2Bytes  Signature: ([C)[B
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 13 bytes, Code offset: 6960
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name ac Type [C At 0 13 Range 0 12 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 13 Range 0 12 Init 0 fixed
    public static byte[] charsToUcs2Bytes(char ac[])
    {
        if(ac == null)
        {
            return null;
        } else
        {
            return charsToUcs2Bytes(ac, ac.length);
        }
    }

    // Decompiling method: charsToUcs2Bytes  Signature: ([CI)[B
    // Max stack: 4, #locals: 5, #params: 2
    // Code length: 70 bytes, Code offset: 7019
    // Line Number Table found: 10 entries
    // Parameter  0 added: Name ac Type [C At 0 70 Range 0 69 Init 0
    // Parameter  1 added: Name i Type I At 0 70 Range 0 69 Init 0
    // RetValue   5 added: Name <returnValue> Type [B At 0 70 Range 0 69 Init 0 fixed
    // LocalVar   4 added: Name abyte0 Type [B At 17 52 Range 17 68 Init 17
    // LocalVar   3 added: Name flag Type Z At 20 43 Range 20 62 Init 20
    // LocalVar   2 added: Name flag1 Type Z At 22 28 Range 22 49 Init 22
    // LocalVar   3 chged: Name j Oname flag Type I At 62 1 Range 20 62 Init 20
    // LocalVar   2 chged: Name k Oname flag1 Type I At 29 3 Range 22 49 Init 22
    public static byte[] charsToUcs2Bytes(char ac[], int i)
    {
        if(ac == null)
        {
            return null;
        }
        if(i < 0)
        {
            return null;
        }
        byte abyte0[] = new byte[2 * i];
        int k = 0;
        int j = 0;
        for(; k < i; k++)
        {
            abyte0[j++] = (byte)(ac[k] >> 8 & 0xff);
            abyte0[j++] = (byte)(ac[k] & 0xff);
        }

        return abyte0;
    }

    // Decompiling method: config  Signature: (III)V
    // Max stack: 6, #locals: 3, #params: 3
    // Code length: 73 bytes, Code offset: 7163
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name i Type I At 0 73 Range 0 72 Init 0
    // Parameter  1 added: Name j Type I At 0 73 Range 0 72 Init 0
    // Parameter  2 added: Name k Type I At 0 73 Range 0 72 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 73 Range 0 72 Init 0 fixed
    public static void config(int i, int j, int k)
    {
        m_printMask = i;
        m_moduleMask = j;
        m_categoryMask = k;
        print(1, 2, 1, "Set logging masks (printMask " + getMaskHexStr(m_printMask) + ", moduleMask " + getMaskHexStr(m_moduleMask) + ", categoryMask " + getMaskHexStr(m_categoryMask) + ")");
        return;
    }

    // Decompiling method: enableWarning  Signature: (Z)V
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 5 bytes, Code offset: 7306
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name flag Type Z At 0 5 Range 0 4 Init 0
    // RetValue   1 added: Name <returnValue> Type V At 0 5 Range 0 4 Init 0 fixed
    public static void enableWarning(boolean flag)
    {
        m_warningEnabled = flag;
        return;
    }

    // Decompiling method: getBitNumFromVector  Signature: (I)I
    // Max stack: 2, #locals: 4, #params: 1
    // Code length: 35 bytes, Code offset: 7353
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name i Type I At 0 35 Range 0 34 Init 0
    // RetValue   4 added: Name <returnValue> Type I At 0 35 Range 0 34 Init 0 fixed
    // LocalVar   1 added: Name flag Type Z At 1 33 Range 1 33 Init 1
    // LocalVar   2 added: Name flag1 Type Z At 3 18 Range 3 20 Init 3
    // LocalVar   3 added: Name flag2 Type Z At 5 23 Range 5 27 Init 5
    // LocalVar   3 chged: Name j Oname flag2 Type I At 27 1 Range 5 27 Init 5
    // LocalVar   1 chged: Name k Oname flag Type I At 33 1 Range 1 33 Init 1
    // LocalVar   2 chged: Name l Oname flag1 Type I At 20 1 Range 3 20 Init 3
    public static int getBitNumFromVector(int i)
    {
        int j = 0;
        int k = 1;
        for(int l = 0; l < 32; l++)
        {
            if((i & k) != 0)
            {
                j = l;
                break;
            }
            k <<= 1;
        }

        return j;
    }

    // Decompiling method: getCategoryName  Signature: (I)Ljava/lang/String;
    // Max stack: 2, #locals: 4, #params: 1
    // Code length: 39 bytes, Code offset: 7458
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name i Type I At 0 39 Range 0 38 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name obj Type A At 1 37 Range 1 37 Init 1
    // LocalVar   2 added: Name flag Type Z At 3 22 Range 3 24 Init 3
    // LocalVar   3 added: Name flag1 Type Z At 5 27 Range 5 31 Init 5
    // LocalVar   3 chged: Name j Oname flag1 Type I At 31 1 Range 5 31 Init 5
    // LocalVar   1 chged: Name s Oname obj Type Ljava/lang/String; At 37 1 Range 1 37 Init 1
    // LocalVar   2 chged: Name k Oname flag Type I At 24 1 Range 3 24 Init 3
    public static String getCategoryName(int i)
    {
        String s = null;
        int j = 1;
        for(int k = 0; k < 7; k++)
        {
            if((j & i) != 0)
            {
                s = CategoryName[k];
                break;
            }
            j <<= 1;
        }

        return s;
    }

    // Decompiling method: getCurrTimeStr  Signature: ()Ljava/lang/String;
    // Max stack: 3, #locals: 1, #params: 0
    // Code length: 31 bytes, Code offset: 7567
    // Line Number Table found: 2 entries
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 31 Range 0 30 Init 0 fixed
    // LocalVar   0 added: Name date Type Ljava/util/Date; At 7 6 Range 7 12 Init 7
    private static String getCurrTimeStr()
    {
        Date date = new Date();
        return date.toString() + " ";
    }

    // Decompiling method: getLogStream  Signature: ()Ljava/io/PrintStream;
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 4 bytes, Code offset: 7640
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Ljava/io/PrintStream; At 0 4 Range 0 3 Init 0 fixed
    public static PrintStream getLogStream()
    {
        return m_logStream;
    }

    // Decompiling method: getLogWriter  Signature: ()Ljava/io/PrintWriter;
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 4 bytes, Code offset: 7682
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Ljava/io/PrintWriter; At 0 4 Range 0 3 Init 0 fixed
    public static PrintWriter getLogWriter()
    {
        return m_logWriter;
    }

    // Decompiling method: getMaskHexStr  Signature: (I)Ljava/lang/String;
    // Max stack: 5, #locals: 6, #params: 1
    // Code length: 78 bytes, Code offset: 7724
    // Line Number Table found: 8 entries
    // Parameter  0 added: Name i Type I At 0 78 Range 0 77 Init 0
    // RetValue   6 added: Name <returnValue> Type Ljava/lang/String; At 0 78 Range 0 77 Init 0 fixed
    // LocalVar   1 added: Name byte0 Type B At 2 7 Range 2 8 Init 2
    // LocalVar   2 added: Name s Type Ljava/lang/String; At 7 61 Range 7 67 Init 7
    // LocalVar   3 added: Name ac Type [C At 16 28 Range 16 43 Init 16
    // LocalVar   4 added: Name flag Type Z At 18 16 Range 18 33 Init 18
    // LocalVar   4 chged: Name j Oname flag Type I At 32 2 Range 18 33 Init 18
    // LocalVar   5 added: Name s1 Type Ljava/lang/String; At 47 17 Range 47 63 Init 47
    private static String getMaskHexStr(int i)
    {
        byte byte0 = 8;
        String s = Integer.toHexString(i);
        char ac[] = new char[byte0 - s.length()];
        for(int j = 0; j < ac.length; j++)
        {
            ac[j] = '0';
        }

        String s1 = new String(ac);
        return new String("0x" + s1 + s);
    }

    // Decompiling method: getMessageNumber  Signature: ()Ljava/lang/String;
    // Max stack: 3, #locals: 6, #params: 0
    // Code length: 106 bytes, Code offset: 7868
    // Exception table: 1 entries
    //           start  18 end 45 handler 51 type any
    // Line Number Table found: 16 entries
    // RetValue   6 added: Name <returnValue> Type Ljava/lang/String; At 0 106 Range 0 105 Init 0 fixed
    // LocalVar   1 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 9 93 Range 9 101 Init 9
    // LocalVar   5 added: Name printwriter Type Ljava/io/PrintWriter; At 13 40 Range 13 52 Init 13
    // LocalVar   2 added: Name i Type I At 44 12 Range 44 55 Init 44
    // LocalVar   0 added: Name s Type Ljava/lang/String; At 59 31 Range 59 89 Init 59
    // LocalVar   3 added: Name j Type I At 64 2 Range 64 65 Init 64
    // LocalVar   4 added: Name k Type I At 66 17 Range 66 82 Init 66
    private static String getMessageNumber()
    {
        StringBuffer stringbuffer = new StringBuffer("");
        int i;
        synchronized(m_logWriter)
        {
            if(m_msgNumber == 0x7fffffff)
            {
                m_msgNumber = 0;
            } else
            {
                m_msgNumber++;
            }
            i = m_msgNumber;
        }
        String s = Integer.toString(i);
        int j = s.length();
        for(int k = j; k < 10; k++)
        {
            stringbuffer.append("0");
        }

        stringbuffer.append(s);
        stringbuffer.append(" ");
        return stringbuffer.toString();
    }

    // Decompiling method: getModuleName  Signature: (I)Ljava/lang/String;
    // Max stack: 2, #locals: 4, #params: 1
    // Code length: 39 bytes, Code offset: 8080
    // Line Number Table found: 9 entries
    // Parameter  0 added: Name i Type I At 0 39 Range 0 38 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 39 Range 0 38 Init 0 fixed
    // LocalVar   1 added: Name obj Type A At 1 37 Range 1 37 Init 1
    // LocalVar   2 added: Name flag Type Z At 3 22 Range 3 24 Init 3
    // LocalVar   3 added: Name flag1 Type Z At 5 27 Range 5 31 Init 5
    // LocalVar   3 chged: Name j Oname flag1 Type I At 31 1 Range 5 31 Init 5
    // LocalVar   1 chged: Name s Oname obj Type Ljava/lang/String; At 37 1 Range 1 37 Init 1
    // LocalVar   2 chged: Name k Oname flag Type I At 24 1 Range 3 24 Init 3
    public static String getModuleName(int i)
    {
        String s = null;
        int j = 1;
        for(int k = 0; k < 9; k++)
        {
            if((j & i) != 0)
            {
                s = ModuleName[k];
                break;
            }
            j <<= 1;
        }

        return s;
    }

    // Decompiling method: info  Signature: ()Ljava/lang/String;
    // Max stack: 3, #locals: 1, #params: 0
    // Code length: 57 bytes, Code offset: 8189
    // Line Number Table found: 11 entries
    // RetValue   1 added: Name <returnValue> Type Ljava/lang/String; At 0 57 Range 0 56 Init 0 fixed
    // LocalVar   0 added: Name obj Type A At 1 1 Range 1 1 Init 1
    // LocalVar   0 added: Name s Type Ljava/lang/String; At 48 8 Range 48 55 Init 48
    // LocalVar   0 chged: Name s1 Oname obj Type Ljava/lang/String; At 1 1 Range 1 1 Init 1
    // LocalVar   0 name s(Ljava/lang/String;) merged out into s1(Ljava/lang/String;)
    public static String info()
    {
        String s = null;
        if(isEnabled())
        {
            s = "Enabled logging (moduleMask " + getMaskHexStr(m_moduleMask) + ", categoryMask " + getMaskHexStr(m_categoryMask) + ")";
        } else
        {
            s = "Disabled logging";
        }
        return s;
    }

    // Decompiling method: initialize  Signature: ()Z
    // Max stack: 4, #locals: 3, #params: 0
    // Code length: 262 bytes, Code offset: 8324
    // Exception table: 1 entries
    //           start  112 end 254 handler 257 type SecurityException
    // Line Number Table found: 40 entries
    // RetValue   3 added: Name <returnValue> Type Z At 0 262 Range 0 261 Init 0 fixed
    // LocalVar   0 added: Name flag Type Z At 1 260 Range 1 260 Init 1
    // LocalVar   1 added: Name obj Type A At 113 1 Range 113 113 Init 113
    // LocalVar   1 added: Name s Type Ljava/lang/String; At 119 6 Range 119 124 Init 119
    // LocalVar   1 added: Name s1 Type Ljava/lang/String; At 144 6 Range 144 149 Init 144
    // LocalVar   1 added: Name s2 Type Ljava/lang/String; At 161 6 Range 161 166 Init 161
    // LocalVar   1 added: Name s3 Type Ljava/lang/String; At 178 6 Range 178 183 Init 178
    // LocalVar   2 added: Name flag1 Type Z At 191 41 Range 191 231 Init 191
    // LocalVar   2 chged: Name i Oname flag1 Type I At 231 1 Range 191 231 Init 191
    // LocalVar   1 added: Name s4 Type Ljava/lang/String; At 242 6 Range 242 247 Init 242
    // LocalVar   1 added: Name s5 Type Ljava/lang/String; At 214 10 Range 214 223 Init 214
    // LocalVar   1 chged: Name s6 Oname obj Type Ljava/lang/String; At 113 1 Range 113 113 Init 113
    // LocalVar   1 name s(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    // LocalVar   1 name s1(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    // LocalVar   1 name s2(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    // LocalVar   1 name s3(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    // LocalVar   1 name s4(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    // LocalVar   1 name s5(Ljava/lang/String;) merged out into s6(Ljava/lang/String;)
    private static boolean initialize()
    {
        boolean flag = false;
        if(m_initialized)
        {
            return flag;
        }
        m_initialized = true;
        if(ModuleName.length != 9)
        {
            System.out.println("ERROR: OracleLog.ModuleName[] has " + ModuleName.length + " items (expected " + 9 + ")");
        }
        if(CategoryName.length != 7)
        {
            System.out.println("ERROR: OracleLog.CategoryName[] has " + ModuleName.length + " items (expected " + 9 + ")");
        }
        try
        {
            String s = null;
            s = System.getProperty("JdbcTrace");
            if(s != null && s.compareTo("true") == 0)
            {
                setLogStream(System.out);
            }
            s = System.getProperty("PrintMask");
            if(s != null)
            {
                m_printMask = Integer.parseInt(s);
            }
            s = System.getProperty("ModuleMask");
            if(s != null)
            {
                m_moduleMask = Integer.parseInt(s);
            }
            s = System.getProperty("CategoryMask");
            if(s != null)
            {
                m_categoryMask = Integer.parseInt(s);
            }
            for(int i = 0; i < 32; i++)
            {
                s = System.getProperty("SubmodMask" + i);
                if(s != null)
                {
                    m_submodMasks[i] = Integer.parseInt(s);
                }
            }

            s = System.getProperty("MaxPrintBytes");
            if(s != null)
            {
                m_maxPrintBytes = Integer.parseInt(s);
            }
        }
        catch(SecurityException _ex)
        {
            flag = true;
        }
        return flag;
    }

    // Decompiling method: isEnabled  Signature: ()Z
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 2 bytes, Code offset: 8788
    // Line Number Table found: 1 entries
    // RetValue   0 added: Name <returnValue> Type Z At 0 2 Range 0 1 Init 0 fixed
    public static boolean isEnabled()
    {
        return false;
    }

    // Decompiling method: print  Signature: (IIILjava/lang/String;)V
    // Max stack: 5, #locals: 4, #params: 4
    // Code length: 9 bytes, Code offset: 8828
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name i Type I At 0 9 Range 0 8 Init 0
    // Parameter  1 added: Name j Type I At 0 9 Range 0 8 Init 0
    // Parameter  2 added: Name k Type I At 0 9 Range 0 8 Init 0
    // Parameter  3 added: Name s Type Ljava/lang/String; At 0 9 Range 0 8 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public static void print(int i, int j, int k, String s)
    {
        print(null, i, j, k, s);
        return;
    }

    // Decompiling method: print  Signature: (IILjava/lang/String;)V
    // Max stack: 5, #locals: 3, #params: 3
    // Code length: 9 bytes, Code offset: 8879
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name i Type I At 0 9 Range 0 8 Init 0
    // Parameter  1 added: Name j Type I At 0 9 Range 0 8 Init 0
    // Parameter  2 added: Name s Type Ljava/lang/String; At 0 9 Range 0 8 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public static void print(int i, int j, String s)
    {
        print(null, i, 1, j, s);
        return;
    }

    // Decompiling method: print  Signature: (Loracle/jdbc/driver/OracleConnection;IIILjava/lang/String;)V
    // Max stack: 4, #locals: 7, #params: 5
    // Code length: 261 bytes, Code offset: 8930
    // Line Number Table found: 31 entries
    // Parameter  0 added: Name oracleconnection Type Loracle/jdbc/driver/OracleConnection; At 0 261 Range 0 260 Init 0
    // Parameter  1 added: Name i Type I At 0 261 Range 0 260 Init 0
    // Parameter  2 added: Name j Type I At 0 261 Range 0 260 Init 0
    // Parameter  3 added: Name k Type I At 0 261 Range 0 260 Init 0
    // Parameter  4 added: Name s Type Ljava/lang/String; At 0 261 Range 0 260 Init 0
    // RetValue   7 added: Name <returnValue> Type V At 0 261 Range 0 260 Init 0 fixed
    // LocalVar   5 added: Name flag Type Z At 8 62 Range 8 69 Init 8
    // LocalVar   6 added: Name stringbuffer Type Ljava/lang/StringBuffer; At 82 166 Range 82 247 Init 82
    public static void print(OracleConnection oracleconnection, int i, int j, int k, String s)
    {
        if(m_logWriter == null)
        {
            return;
        }
        boolean flag = false;
        if((i & m_moduleMask) != 0 && (j & m_submodMasks[getBitNumFromVector(i)]) != 0 && (k & m_categoryMask) != 0)
        {
            flag = true;
        }
        if((k & 0x4) != 0)
        {
            flag = true;
        }
        if(m_warningEnabled && (k & 0x8) != 0)
        {
            flag = true;
        }
        if(flag)
        {
            StringBuffer stringbuffer = new StringBuffer("");
            if((m_printMask & 0x1) != 0)
            {
                stringbuffer.append(getMessageNumber());
            }
            if((m_printMask & 0x2) != 0)
            {
                stringbuffer.append(getCurrTimeStr());
            }
            if((m_printMask & 0x4) != 0)
            {
                stringbuffer.append(getModuleName(i));
            }
            if((m_printMask & 0x8) != 0)
            {
                stringbuffer.append(getBitNumFromVector(j) + " ");
            }
            if((m_printMask & 0x10) != 0)
            {
                stringbuffer.append(getCategoryName(k));
            }
            int _tmp = m_printMask;
            if((m_printMask & 0x40) != 0)
            {
                stringbuffer.append(Thread.currentThread().getName() + " ");
            }
            stringbuffer.append(s);
            m_logWriter.println(stringbuffer.toString());
            m_logWriter.flush();
        }
        return;
    }

    // Decompiling method: print  Signature: (Loracle/jdbc/driver/OracleConnection;IILjava/lang/String;)V
    // Max stack: 5, #locals: 4, #params: 4
    // Code length: 9 bytes, Code offset: 9349
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name oracleconnection Type Loracle/jdbc/driver/OracleConnection; At 0 9 Range 0 8 Init 0
    // Parameter  1 added: Name i Type I At 0 9 Range 0 8 Init 0
    // Parameter  2 added: Name j Type I At 0 9 Range 0 8 Init 0
    // Parameter  3 added: Name s Type Ljava/lang/String; At 0 9 Range 0 8 Init 0
    // RetValue   4 added: Name <returnValue> Type V At 0 9 Range 0 8 Init 0 fixed
    public static void print(OracleConnection oracleconnection, int i, int j, String s)
    {
        print(oracleconnection, i, 1, j, s);
        return;
    }

    // Decompiling method: setLogStream  Signature: (Ljava/io/PrintStream;)V
    // Max stack: 3, #locals: 1, #params: 1
    // Code length: 27 bytes, Code offset: 9400
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name printstream Type Ljava/io/PrintStream; At 0 27 Range 0 26 Init 0
    // RetValue   1 added: Name <returnValue> Type V At 0 27 Range 0 26 Init 0 fixed
    public static void setLogStream(PrintStream printstream)
    {
        if(printstream == null)
        {
            setLogWriter(null);
        } else
        {
            setLogWriter(new PrintWriter(printstream));
        }
        m_logStream = printstream;
        return;
    }

    // Decompiling method: setLogVolume  Signature: (I)V
    // Max stack: 6, #locals: 2, #params: 1
    // Code length: 109 bytes, Code offset: 9485
    // Line Number Table found: 17 entries
    // Parameter  0 added: Name i Type I At 0 109 Range 0 108 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 109 Range 0 108 Init 0 fixed
    // LocalVar   1 added: Name byte0 Type B At 24 1 Range 24 24 Init 24
    // LocalVar   1 added: Name byte1 Type B At 54 51 Range 54 104 Init 54
    // LocalVar   1 chged: Name j Oname byte1 Type I At 66 39 Range 54 104 Init 54
    // LocalVar   1 chged: Name k Oname byte0 Type I At 24 1 Range 24 24 Init 24
    // LocalVar   1 name j(I) merged out into k(I)
    public static void setLogVolume(int i)
    {
        print(1, 2, 1, "Set logging volume level to " + i);
        int j = 15;
        switch(i)
        {
        case 1: // '\001'
            j = 15;
            break;

        case 2: // '\002'
            j = 63;
            break;

        case 3: // '\003'
            j = 0xfffffff;
            break;

        default:
            print(1, 2, 4, "Logging volume level " + i + " is not in the range of 1 to 3");
            return;
        }
        config(m_printMask, m_moduleMask, j);
        return;
    }

    // Decompiling method: setLogWriter  Signature: (Ljava/io/PrintWriter;)V
    // Max stack: 4, #locals: 2, #params: 1
    // Code length: 59 bytes, Code offset: 9696
    // Line Number Table found: 14 entries
    // Parameter  0 added: Name printwriter Type Ljava/io/PrintWriter; At 0 59 Range 0 58 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 59 Range 0 58 Init 0 fixed
    // LocalVar   1 added: Name flag Type Z At 3 43 Range 3 45 Init 3
    public static void setLogWriter(PrintWriter printwriter)
    {
        boolean flag = initialize();
        if(printwriter == null)
        {
            setTrace(false);
            print(1, 2, 1, info());
            m_logWriter = printwriter;
        } else
        {
            setTrace(true);
            m_logWriter = printwriter;
            print(1, 2, 1, info());
            if(flag)
            {
                print(1, 2, 32, "Properties were ignored in an applet environment");
            }
        }
        return;
    }

    // Decompiling method: setMaxPrintBytes  Signature: (I)V
    // Max stack: 6, #locals: 1, #params: 1
    // Code length: 33 bytes, Code offset: 9845
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name i Type I At 0 33 Range 0 32 Init 0
    // RetValue   1 added: Name <returnValue> Type V At 0 33 Range 0 32 Init 0 fixed
    public static void setMaxPrintBytes(int i)
    {
        if(i > 0)
        {
            m_maxPrintBytes = i;
        }
        print(1, 2, 1, "Set the maximum number of bytes to be printed to " + m_maxPrintBytes);
        return;
    }

    // Decompiling method: setSubmodMask  Signature: (II)V
    // Max stack: 6, #locals: 3, #params: 2
    // Code length: 60 bytes, Code offset: 9940
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name i Type I At 0 60 Range 0 59 Init 0
    // Parameter  1 added: Name j Type I At 0 60 Range 0 59 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 60 Range 0 59 Init 0 fixed
    // LocalVar   2 added: Name k Type I At 4 34 Range 4 37 Init 4
    public static void setSubmodMask(int i, int j)
    {
        int k = getBitNumFromVector(i);
        m_submodMasks[k] = j;
        print(1, 2, 1, "Set logging sub-mask for module " + getMaskHexStr(m_moduleMask) + "(number " + k + ") to " + getMaskHexStr(j));
        return;
    }

    // Decompiling method: setTrace  Signature: (Z)V
    // Max stack: 1, #locals: 2, #params: 1
    // Code length: 3 bytes, Code offset: 10062
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name flag Type Z At 0 3 Range 0 2 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 3 Range 0 2 Init 0 fixed
    // LocalVar   1 added: Name flag1 Type Z At 1 1 Range 1 1 Init 1
    private static void setTrace(boolean flag)
    {
        boolean flag1 = flag;
        return;
    }

    // Decompiling method: startLogging  Signature: ()V
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 7 bytes, Code offset: 10107
    // Line Number Table found: 2 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 7 Range 0 6 Init 0 fixed
    public static void startLogging()
    {
        setLogStream(System.out);
        return;
    }

    // Decompiling method: stopLogging  Signature: ()V
    // Max stack: 1, #locals: 0, #params: 0
    // Code length: 5 bytes, Code offset: 10156
    // Line Number Table found: 2 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 5 Range 0 4 Init 0 fixed
    public static void stopLogging()
    {
        setLogStream(null);
        return;
    }

    // Decompiling method: strToUcs2Bytes  Signature: (Ljava/lang/String;)[B
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 14 bytes, Code offset: 10203
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 14 Range 0 13 Init 0
    // RetValue   1 added: Name <returnValue> Type [B At 0 14 Range 0 13 Init 0 fixed
    public static byte[] strToUcs2Bytes(String s)
    {
        if(s == null)
        {
            return null;
        } else
        {
            return charsToUcs2Bytes(s.toCharArray());
        }
    }

    // Decompiling method: test  Signature: ()V
    // Max stack: 3, #locals: 0, #params: 0
    // Code length: 23 bytes, Code offset: 10263
    // Line Number Table found: 8 entries
    // RetValue   0 added: Name <returnValue> Type V At 0 23 Range 0 22 Init 0 fixed
    public static void test()
    {
        setLogStream(System.out);
        enableWarning(true);
        config(20, 1, 0xfffffff);
        setLogStream(null);
        return;
    }

    // Decompiling method: toPrintableStr  Signature: (Ljava/lang/String;I)Ljava/lang/String;
    // Max stack: 6, #locals: 2, #params: 2
    // Code length: 51 bytes, Code offset: 10352
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name s Type Ljava/lang/String; At 0 51 Range 0 50 Init 0
    // Parameter  1 added: Name i Type I At 0 51 Range 0 50 Init 0
    // RetValue   2 added: Name <returnValue> Type Ljava/lang/String; At 0 51 Range 0 50 Init 0 fixed
    public static String toPrintableStr(String s, int i)
    {
        if(s == null)
        {
            return "null";
        }
        if(s.length() > i)
        {
            return s.substring(0, i - 1) + "\n ... the actual length was " + s.length();
        } else
        {
            return s;
        }
    }

    // Decompiling method: <clinit>  Signature: ()V
    // Max stack: 4, #locals: 1, #params: 0
    // Code length: 174 bytes, Code offset: 5849
    // Line Number Table found: 49 entries
    // RetValue   1 added: Name <returnValue> Type V At 0 174 Range 0 173 Init 0 fixed
    // LocalVar   0 added: Name flag Type Z At 153 15 Range 153 167 Init 153
    // LocalVar   0 chged: Name i Oname flag Type I At 167 1 Range 153 167 Init 153
    static 
    {
        /* ModuleName = (new String[] {
            "DRVR ", "DBAC ", "DBCV ", "JOLT ", "PIKL ", "JTTC ", "DATM ", "KPRB ", "XA   "
        }); */
        /* CategoryName = (new String[] {
            "OPER ", "PERR ", "ERRO ", "WARN ", "FUNC ", "DBG1 ", "DBG2 "
        }); */
        /* m_initialized = false; */
        /* m_logWriter = null; */
        /* m_logStream = null; */
        /* m_printMask = 20; */
        /* m_moduleMask = 0xfffffff; */
        m_submodMasks = null;
        /* m_categoryMask = 0xfffffff; */
        /* m_maxPrintBytes = 200; */
        /* m_warningEnabled = true; */
        /* m_msgNumber = 0; */
        m_submodMasks = new int[32];
        for(int i = 0; i < 32; i++)
        {
            m_submodMasks[i] = 0xfffffff;
        }

    }
}
