All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cubrid.jdbc.jci.UError Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2008 Search Solution Corporation. All rights reserved by Search Solution. 
 *
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met: 
 *
 * - Redistributions of source code must retain the above copyright notice, 
 *   this list of conditions and the following disclaimer. 
 *
 * - Redistributions in binary form must reproduce the above copyright notice, 
 *   this list of conditions and the following disclaimer in the documentation 
 *   and/or other materials provided with the distribution. 
 *
 * - Neither the name of the  nor the names of its contributors 
 *   may be used to endorse or promote products derived from this software without 
 *   specific prior written permission. 
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE. 
 *
 */

/**
 * Title:        CUBRID Java Client Interface

* Description: CUBRID Java Client Interface

* @version 2.0 */ package cubrid.jdbc.jci; public class UError { public final static int METHOD_USER_ERROR_BASE = -100000; private UConnection connection = null; private int jciErrorCode; private int serverErrorCode; private String errorMessage; private StackTraceElement[] stackTrace; UError(UConnection c) { connection = c; jciErrorCode = UErrorCode.ER_NO_ERROR; } public UError(UError src) { copyValue(src); } public int getErrorCode() { return jciErrorCode; } private int getSessionNumber(byte[] session) { int ch1 = session[8]; int ch2 = session[9]; int ch3 = session[10]; int ch4 = session[11]; return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); } public String getErrorMsg(boolean include_con_info) { if (connection != null && include_con_info) { String sessionInfo = ""; if (connection.protoVersionIsAbove(UConnection.PROTOCOL_V3)) { sessionInfo = String.format("[SESSION-%d],", getSessionNumber(connection.sessionId)); } else { sessionInfo = String.format("[SESSION-%d],", connection.oldSessionId); } String infoType = ""; if (connection.isConnectedToProxy()) { sessionInfo = ""; infoType = "PROXY INFO"; } else { infoType = "CAS INFO"; } if (connection.protoVersionIsAbove(UConnection.PROTOCOL_V4)) { return String.format( "%s[%s-%s:%d,%d,%d],%s[URL-%s].", errorMessage, infoType, connection.CASIp, connection.CASPort, connection.casId, connection.processId, sessionInfo, connection.url); } else { return String.format( "%s[%s-%s:%d,%d],%s[URL-%s].", errorMessage, infoType, connection.CASIp, connection.CASPort, connection.processId, sessionInfo, connection.url); } } return errorMessage; } public int getJdbcErrorCode() { if (jciErrorCode == UErrorCode.ER_NO_ERROR) return UErrorCode.ER_NO_ERROR; else if (jciErrorCode == UErrorCode.ER_DBMS) return serverErrorCode; else return (jciErrorCode); } void copyValue(UError object) { connection = object.connection; jciErrorCode = object.jciErrorCode; errorMessage = object.errorMessage; serverErrorCode = object.serverErrorCode; stackTrace = object.stackTrace; } synchronized void setDBError(int code, String message) { jciErrorCode = UErrorCode.ER_DBMS; serverErrorCode = code; errorMessage = message; } synchronized void setErrorCode(int code) { jciErrorCode = code; if (code != UErrorCode.ER_NO_ERROR) { errorMessage = UErrorCode.codeToMessage(code); } } void setErrorMessage(int code, String addMessage) { setErrorCode(code); errorMessage += ":" + addMessage; } void clear() { jciErrorCode = UErrorCode.ER_NO_ERROR; } public void setStackTrace(StackTraceElement[] stackTrace) { this.stackTrace = stackTrace; } public void changeStackTrace(Throwable t) { if (stackTrace != null) { t.setStackTrace(stackTrace); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy