⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trace.java

📁 用JAVA实现了,将DB装入内存,内存由DBMS控制,实现简单数据库的创建、数据表的创建、记录插入、查询以及表的删除。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.kdb;

import org.kdb.util.BundleHandler;

import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;

/**

 * Date: 2007-10-29
 * Time: 11:27:53
 */
public class Trace {

    public static boolean TRACE = false;
    public static boolean TRACESYSTEMOUT = false;
    public static final boolean STOP = false;
    public static final boolean DOASSERT = false;

    //
    static String errPropsName = "sql-error-messages";
    static int bundleHandle = BundleHandler.getBundleHandle(errPropsName,
            null);

    //
    public static final int

            //
            DATABASE_ALREADY_IN_USE = 1,
            CONNECTION_IS_CLOSED = 2,
            CONNECTION_IS_BROKEN = 3,
            DATABASE_IS_SHUTDOWN = 4,
            COLUMN_COUNT_DOES_NOT_MATCH = 5,
            DIVISION_BY_ZERO = 6,
            INVALID_ESCAPE = 7,
            INTEGRITY_CONSTRAINT_VIOLATION = 8,
            VIOLATION_OF_UNIQUE_INDEX = 9,
            TRY_TO_INSERT_NULL = 10,
            UNEXPECTED_TOKEN = 11,
            UNEXPECTED_END_OF_COMMAND = 12,
            UNKNOWN_FUNCTION = 13,
            NEED_AGGREGATE = 14,
            SUM_OF_NON_NUMERIC = 15,
            WRONG_DATA_TYPE = 16,
            CARDINALITY_VIOLATION_NO_SUBCLASS = 17,
            SERIALIZATION_FAILURE = 18,
            TRANSFER_CORRUPTED = 19,
            FUNCTION_NOT_SUPPORTED = 20,
            TABLE_ALREADY_EXISTS = 21,
            TABLE_NOT_FOUND = 22,
            INDEX_ALREADY_EXISTS = 23,
            SECOND_PRIMARY_KEY = 24,
            DROP_PRIMARY_KEY = 25,
            INDEX_NOT_FOUND = 26,
            COLUMN_ALREADY_EXISTS = 27,
            COLUMN_NOT_FOUND = 28,
            FILE_IO_ERROR = 29,
            WRONG_DATABASE_FILE_VERSION = 30,
            DATABASE_IS_READONLY = 31,
            DATA_IS_READONLY = 32,
            ACCESS_IS_DENIED = 33,
            INPUTSTREAM_ERROR = 34,
            NO_DATA_IS_AVAILABLE = 35,
            USER_ALREADY_EXISTS = 36,
            USER_NOT_FOUND = 37,
            ASSERT_FAILED = 38,
            EXTERNAL_STOP = 39,
            GENERAL_ERROR = 40,
            WRONG_OUT_PARAMETER = 41,
            FUNCTION_NOT_FOUND = 42,
            TRIGGER_NOT_FOUND = 43,
            SAVEPOINT_NOT_FOUND = 44,
            LABEL_REQUIRED = 45,
            WRONG_DEFAULT_CLAUSE = 46,
            FOREIGN_KEY_NOT_ALLOWED = 47,
            UNKNOWN_DATA_SOURCE = 48,
            BAD_INDEX_CONSTRAINT_NAME = 49,
            DROP_FK_INDEX = 50,
            RESULTSET_FORWARD_ONLY = 51,
            VIEW_ALREADY_EXISTS = 52,
            VIEW_NOT_FOUND = 53,
            NOT_USED_54 = 54,
            NOT_A_TABLE = 55,
            SYSTEM_INDEX = 56,
            COLUMN_TYPE_MISMATCH = 57,
            BAD_ADD_COLUMN_DEFINITION = 58,
            DROP_SYSTEM_CONSTRAINT = 59,
            CONSTRAINT_ALREADY_EXISTS = 60,
            CONSTRAINT_NOT_FOUND = 61,
            INVALID_JDBC_ARGUMENT = 62,
            DATABASE_IS_MEMORY_ONLY = 63,
            OUTER_JOIN_CONDITION = 64,
            NUMERIC_VALUE_OUT_OF_RANGE = 65,
            MISSING_SOFTWARE_MODULE = 66,
            NOT_IN_AGGREGATE_OR_GROUP_BY = 67,
            INVALID_GROUP_BY = 68,
            INVALID_HAVING = 69,
            INVALID_ORDER_BY = 70,
            INVALID_ORDER_BY_IN_DISTINCT_SELECT = 71,
            OUT_OF_MEMORY = 72,
            OPERATION_NOT_SUPPORTED = 73,
            INVALID_IDENTIFIER = 74,
            TEXT_TABLE_SOURCE = 75,
            TEXT_FILE = 76,
            NOT_USED_77 = 77,
            ERROR_IN_SCRIPT_FILE = 78,
            NULL_IN_VALUE_LIST = 79,
            SOCKET_ERROR = 80,
            INVALID_CHARACTER_ENCODING = 81,
            NOT_USED_82 = 82,
            NOT_USED_83 = 83,
            NOT_USED_84 = 84,
            UNEXPECTED_EXCEPTION = 85,
            NOT_USED_86 = 86,
            NOT_USED_87 = 87,
            NOT_USED_88 = 88,
            NOT_USED_89 = 89,
            NOT_USED_90 = 90,
            NOT_USED_91 = 91,
            NOT_USED_92 = 92,
            NOT_USED_93 = 93,
            DATABASE_NOT_EXISTS = 94,
            INVALID_CONVERSION = 95,
            ERROR_IN_BINARY_SCRIPT_1 = 96,
            ERROR_IN_BINARY_SCRIPT_2 = 97,
            GENERAL_IO_ERROR = 98,
            EXPRESSION_NOT_SUPPORTED = 99,
            Constraint_violation = 100,
            Database_dropTable = 101,
            ERROR_IN_CONSTRAINT_COLUMN_LIST = 102,
            TABLE_HAS_NO_PRIMARY_KEY = 103,
            VIOLATION_OF_UNIQUE_CONSTRAINT = 104,
            NO_DEFAULT_VALUE_FOR_COLUMN = 105,
            NOT_A_CONDITION = 106,
            DatabaseManager_getDatabase = 107,
            NOT_USED_108 = 108,
            NOT_USED_109 = 109,
            NOT_USED_110 = 110,
            NOT_USED_111 = 111,
            NOT_USED_112 = 112,
            DatabaseScriptReader_readDDL = 113,
            DatabaseScriptReader_readExistingData = 114,
            Message_Pair = 115,
            LOAD_SAVE_PROPERTIES = 116,
            INVALID_TRANSACTION_STATE_NO_SUBCLASS = 117,
            JDBC_INVALID_BRI_SCOPE = 118,
            JDBC_NO_RESULT_SET_METADATA = 119,
            JDBC_NO_RESULT_SET = 120,
            MISSING_CLOSEBRACKET = 121,
            ITSNS_OVERWRITE = 122,
            COLUMN_IS_IN_INDEX = 123,
            STRING_DATA_TRUNCATION = 124,
            QUOTED_IDENTIFIER_REQUIRED = 125,
            STATEMENT_IS_CLOSED = 126,
            NOT_USED_127 = 127,
            NOT_USED_128 = 128,
            DATA_FILE_ERROR = 129,
            NOT_USED_130 = 130,
            HsqlDateTime_null_string = 131,
            NOT_USED_132 = 132,
            HsqlDateTime_null_date = 133,
            NOT_USED_134 = 134,
            HsqlProperties_load = 135,
            HsqlSocketFactorySecure_verify = 136,
            HsqlSocketFactorySecure_verify2 = 137,
            jdbcConnection_nativeSQL = 138,
            HsqlSocketFactorySecure_verify3 = 139,
            NOT_USED_140 = 140,
            NOT_USED_141 = 141,
            jdbcStatement_executeUpdate = 142,
            LockFile_checkHeartbeat = 143,
            LockFile_checkHeartbeat2 = 144,
            TEXT_STRING_HAS_NEWLINE = 145,
            Result_Result = 146,
            SERVER_NO_DATABASE = 147,
            Server_openServerSocket = 148,
            Server_openServerSocket2 = 149,
            TEXT_TABLE_HEADER = 150,
            NOT_USED_151 = 151,
            JDBC_PARAMETER_NOT_SET = 152,
            INVALID_LIMIT = 153,
            JDBC_STATEMENT_NOT_ROW_COUNT = 154,
            JDBC_STATEMENT_NOT_RESULTSET = 155,
            AMBIGUOUS_COLUMN_REFERENCE = 156,
            CHECK_CONSTRAINT_VIOLATION = 157,
            JDBC_RESULTSET_IS_CLOSED = 158,
            SINGLE_COLUMN_EXPECTED = 159,
            TOKEN_REQUIRED = 160,
            NOT_USED_161 = 161,
            NOT_USED_162 = 162,
            ORDER_LIMIT_REQUIRED = 163,
            TRIGGER_ALREADY_EXISTS = 164,
            ASSERT_DIRECT_EXEC_WITH_PARAM = 165,
            NOT_USED_166 = 166,
            Expression_compareValues = 167,
            INVALID_LIMIT_EXPRESSION = 168,
            INVALID_TOP_EXPRESSION = 169,
            SQL_CONSTRAINT_REQUIRED = 170,
            TableWorks_dropConstraint = 171,
            TEXT_TABLE_SOURCE_FILENAME = 172,
            TEXT_TABLE_SOURCE_VALUE_MISSING = 173,
            TEXT_TABLE_SOURCE_SEPARATOR = 174,
            UNSUPPORTED_PARAM_CLASS = 175,
            JDBC_NULL_STREAM = 176,
            INTEGRITY_CONSTRAINT_VIOLATION_NOPARENT = 177,
            NOT_USED_178 = 178,
            NOT_USED_179 = 179,
            QuotedTextDatabaseRowInput_getField = 180,
            QuotedTextDatabaseRowInput_getField2 = 181,
            TextDatabaseRowInput_getField = 182,
            TextDatabaseRowInput_getField2 = 183,
            TextDatabaseRowInput_getField3 = 184,
            Parser_ambiguous_between1 = 185,
            SEQUENCE_REFERENCED_BY_VIEW = 186,
            NOT_USED_187 = 187,
            TextCache_openning_file_error = 188,
            TextCache_closing_file_error = 189,
            TextCache_purging_file_error = 190,
            SEQUENCE_NOT_FOUND = 191,
            SEQUENCE_ALREADY_EXISTS = 192,
            TABLE_REFERENCED_CONSTRAINT = 193,
            TABLE_REFERENCED_VIEW = 194,
            NOT_USED_195 = 195,
            TEXT_SOURCE_EXISTS = 196,
            COLUMN_IS_REFERENCED = 197,
            FUNCTION_CALL_ERROR = 198,
            TRIGGERED_DATA_CHANGE = 199,
            INVALID_FUNCTION_ARGUMENT = 200,
            UNSUPPORTED_INTERNAL_OPERATION = 201,
            NOT_USED_202 = 202,
            INVALID_PREPARED_STATEMENT = 203,
            CREATE_TRIGGER_COMMAND_1 = 204,
            TRIGGER_FUNCTION_CLASS_NOT_FOUND = 205,
            NOT_USED_206 = 206,
            NOT_USED_207 = 207,
            INVALID_COLLATION_NAME_NO_SUBCLASS = 208,
            DataFileCache_makeRow = 209,
            DataFileCache_open = 210,
            DataFileCache_close = 211,
            Expression_resolveTypes1 = 212,
            Expression_resolveTypes2 = 213,
            Expression_resolveTypes3 = 214,
            Expression_resolveTypes4 = 215,
            UNRESOLVED_PARAMETER_TYPE = 216,
            Expression_resolveTypes6 = 217,
            Expression_resolveTypes7 = 218,
            Expression_resolveTypeForLike = 219,
            NOT_USED_220 = 220,
            Expression_resolveTypeForIn2 = 221,
            Session_execute = 222,
            NOT_USED_223 = 223,
            NOT_USED_224 = 224,
            DATA_FILE_IS_FULL = 225,
            THREE_PART_IDENTIFIER = 226,
            INVALID_SCHEMA_NAME_NO_SUBCLASS = 227,
            DEPENDENT_DATABASE_OBJECT_EXISTS = 228,
            NO_SUCH_ROLE_GRANT = 229,
            NO_SUCH_ROLE_REVOKE = 230,
            NONMOD_ACCOUNT = 231,
            NO_SUCH_GRANTEE = 232,
            MISSING_SYSAUTH = 233,
            MISSING_GRANTEE = 234,
            CHANGE_GRANTEE = 235,
            NULL_NAME = 236,
            ILLEGAL_ROLE_NAME = 237,
            ROLE_ALREADY_EXISTS = 238,
            NO_SUCH_ROLE = 239,
            MISSING_ROLEMANAGER = 240,
            GRANTEE_ALREADY_EXISTS = 241,
            MISSING_PUBLIC_GRANTEE = 242,
            NONMOD_GRANTEE = 243,
            CIRCULAR_GRANT = 244,
            ALREADY_HAVE_ROLE = 245,
            DONT_HAVE_ROLE = 246,
            NOT_USED_247 = 247,
            RETRIEVE_NEST_ROLE_FAIL = 248,
            NO_SUCH_RIGHT = 249,
            IN_SCHEMA_DEFINITION = 250,
            PRIMARY_KEY_NOT_ALLOWED = 251,
            COLUMN_IS_IN_CONSTRAINT = 252,
            COLUMN_SIZE_REQUIRED = 253,
            INVALID_SIZE_PRECISION = 254,
            CANNOT_CONNECT_TABLE = 255,
            LAST_ERROR_HANDLE = 256;

    //
    static String MESSAGE_TAG = "$$";

    //

    /** Used during tests. */
    static {
        try {
            TRACE = TRACE || Boolean.getBoolean("hsqldb.trace");
            TRACESYSTEMOUT = TRACESYSTEMOUT
                    || Boolean.getBoolean("hsqldb.tracesystemout");
        } catch (Exception e) {
        }

        if (!"LAST".equals(BundleHandler.getString(bundleHandle,
                String.valueOf(LAST_ERROR_HANDLE)))) {
            throw new RuntimeException();
        }
    }

    /**
     * Compose error message by inserting the strings in the add parameters
     * in placeholders within the error message. The message string contains
     * $$ markers for each context variable. Context variables are supplied in
     * the add parameters.
     *
     * @param code    main error code
     * @param subCode sub error code (if 0 => no subMessage!)
     * @param add     optional parameters
     * @return an <code>KdbException</code>
     */
    public static KdbException error(int code, int subCode,
                                     final Object[] add) {

        // in case of negative code
        code = Math.abs(code);

        String mainErrorMessage = getMessage(code);
        String state = "S1000";

        if (mainErrorMessage.length() >= 5) {
            state = mainErrorMessage.substring(0, 5);
            mainErrorMessage = mainErrorMessage.substring(6);
        }

        if (subCode != 0) {
            mainErrorMessage += getMessage(Math.abs(subCode));
        }

        StringBuffer sb = new StringBuffer(mainErrorMessage.length() + 32);
        int lastIndex = 0;
        int escIndex = mainErrorMessage.length();

        if (add != null) {

            // removed test: i < add.length
            // because if mainErrorMessage is equal to "blabla $$"
            // then the statement escIndex = mainErrorMessage.length();
            // is never reached!  ???
            for (int i = 0; i < add.length; i++) {
                escIndex = mainErrorMessage.indexOf(MESSAGE_TAG, lastIndex);

                if (escIndex == -1) {
                    break;
                }

                sb.append(mainErrorMessage.substring(lastIndex, escIndex));
                sb.append(add[i] == null ? "null exception message"
                        : add[i].toString());

                lastIndex = escIndex + MESSAGE_TAG.length();
            }
        }

        escIndex = mainErrorMessage.length();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -