001: /*
002:
003: Derby - Class org.apache.derby.impl.jdbc.EmbedSQLWarning
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.jdbc;
023:
024: import org.apache.derby.iapi.services.i18n.MessageService;
025: import org.apache.derby.iapi.error.ExceptionSeverity;
026:
027: import org.apache.derby.iapi.error.StandardException;
028:
029: import java.sql.SQLWarning;
030:
031: /**
032: This class understands the message protocol and looks up
033: SQLExceptions based on keys, so that the Local JDBC driver's
034: messages can be localized.
035:
036: REMIND: May want to investigate putting some of this in the protocol
037: side, for the errors that any Cloudscape JDBC driver might return.
038:
039: The ASSERT mechanism is a wrapper of the basic services,
040: to ensure that failed asserts at this level will behave
041: well in a JDBC environment.
042:
043: @author ames
044: */
045: public class EmbedSQLWarning extends SQLWarning {
046:
047: /*
048: ** instance fields
049: */
050:
051: /*
052: ** Constructor
053: */
054:
055: /**
056: * Because SQLWarning does not have settable fields,
057: * the caller of the constructor must do message lookup,
058: * and pass the appropriate values here for message and SQLState,
059: */
060: protected EmbedSQLWarning(String message, String sqlstate) {
061:
062: super (message, sqlstate, ExceptionSeverity.WARNING_SEVERITY);
063: }
064:
065: /*
066: ** Methods of Throwable
067: */
068:
069: /*
070: ** Methods of Object
071: */
072:
073: /**
074: Override Throwable's toString() to avoid the class name
075: appearing in the message.
076: */
077: public String toString() {
078: return "SQL Warning: " + getMessage();
079: }
080:
081: // class implementation
082: public static SQLWarning newEmbedSQLWarning(String messageId) {
083: return newEmbedSQLWarning(messageId, null);
084: }
085:
086: /**
087: This looks up the message and sqlstate values and generates
088: the appropriate exception off of them.
089: */
090: public static SQLWarning newEmbedSQLWarning(String messageId,
091: Object arg) {
092: return new EmbedSQLWarning(MessageService.getCompleteMessage(
093: messageId, new Object[] { arg }), StandardException
094: .getSQLStateFromIdentifier(messageId));
095: }
096:
097: /** Generate an SQL Warning from a Standard Exception
098: * @param se Exception to convert to a warning
099: * @return new SQLWarning with message and SQLState of the se
100: */
101: public static SQLWarning generateCsSQLWarning(StandardException se) {
102: return new EmbedSQLWarning(se.getMessage(), se.getSQLState());
103: }
104:
105: }
|