    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.hayabusa.db;
    017
    018import org.opengion.fukurou.util.ErrMsg;
    019
    020import java.sql.SQLData;
    021import java.sql.SQLInput;
    022import java.sql.SQLOutput;
    023import java.sql.SQLException;
    024
    025/**
    026 * SQLData インターフェースを継承した システム変数の受け渡し用オブジェクトです。
    027 * 行番号情報と改廃コード[A:追加/C:変更/D:削除]を持っています。
    028 *
    029 * @og.group エラー処理
    030 *
    031 * @version  4.0
    032 * @author   Kazuhiko Hasegawa
    033 * @since    JDK5.0,
    034 */
    035public class DBErrMsg implements SQLData {
    036        private String sqlType ;
    037        private ErrMsg errMsg   ;
    038
    039        /**
    040         *  デフォルトコンストラクター
    041         */
    042        public DBErrMsg() {
    043                sqlType = null;
    044                errMsg   = null;
    045        }
    046
    047        /**
    048         *  すべての属性情報を指定して、新しい DBErrMsg オブジェクトを作成します。
    049         *
    050         * @param    type データベースタイプ文字列
    051         * @param    no 行番号
    052         * @param    keka 結果 0:正常 1:警告 2:異常
    053         * @param    errCD メッセージID
    054         * @param    arg0 メッセージの引数0
    055         * @param    arg1 メッセージの引数1
    056         * @param    arg2 メッセージの引数2
    057         * @param    arg3 メッセージの引数3
    058         * @param    arg4 メッセージの引数4
    059         * @param    pg PG名
    060         * @param    step ステップ名
    061         */
    062        public DBErrMsg( final String type,final int no,final int keka,final String errCD,
    063                        final String arg0,final String arg1,final String arg2,final String arg3,final String arg4,
    064                        final String pg,final String step) {
    065                sqlType = type;
    066                errMsg   = new ErrMsg( no,keka,pg,step,errCD,arg0,arg1,arg2,arg3,arg4 ); // 3.8.9.5 (2007/09/12)
    067        }
    068
    069        /**
    070         *  内部のエラーメッセージオブジェクトを返します。
    071         *
    072         * @return   エラーメッセージ
    073         */
    074        public ErrMsg getErrMsg() {
    075                return errMsg;
    076        }
    077
    078        // ============================================================
    079        // implements SQLData
    080        // ============================================================
    081
    082        /**
    083         *  ＳＱＬタイプの文字列を返します。
    084         *
    085         * @return    ＳＱＬタイプの文字列
    086         * @throws SQLException ※ この実装からは SQLException は、throw されません。
    087         */
    088        public String getSQLTypeName() throws SQLException {
    089                return sqlType;
    090        }
    091
    092        /**
    093         *  データベース内部より内部属性を取得し、オブジェクトを構築します。
    094         *
    095         * @og.rev 2.0.0.4 (2002/09/27) エラーメッセージ表示の、行番号がおかしい件の修正。
    096         *
    097         * @param       stream  ストリーム
    098         * @param    typeName ＳＱＬタイプの文字列
    099         * @throws SQLException データベースアクセスエラー
    100         */
    101        public void readSQL( final SQLInput stream, final String typeName ) throws SQLException {
    102                sqlType = typeName;
    103
    104                final int    no    = stream.readInt()+1;                // PLSQLでは、引数そのままの番号をセットする。
    105                final int    kekka = stream.readInt();
    106                final String id    = stream.readString();
    107                final String arg0 = stream.readString();
    108                final String arg1 = stream.readString();
    109                final String arg2 = stream.readString();
    110                final String arg3 = stream.readString();
    111                final String arg4 = stream.readString();
    112                final String pg    = stream.readString(); // 3.8.9.5 (2007/09/12)
    113                final String step  = stream.readString(); // 3.8.9.5 (2007/09/12)
    114
    115                errMsg   = new ErrMsg( no,kekka,pg,step,id,arg0,arg1,arg2,arg3,arg4 );   // 3.8.9.5 (2007/09/12)
    116        }
    117
    118        /**
    119         *  データベース内部に内部属性を設定します。
    120         *
    121         * @param       stream  ストリーム
    122         * @throws SQLException データベースアクセスエラー
    123         */
    124        public void writeSQL( final SQLOutput stream ) throws SQLException {
    125                stream.writeInt(    errMsg.getNo()    );
    126                stream.writeInt(    errMsg.getKekka() );
    127                stream.writeString( errMsg.getId()    );
    128                stream.writeString( errMsg.getArg(0) );
    129                stream.writeString( errMsg.getArg(1) );
    130                stream.writeString( errMsg.getArg(2) );
    131                stream.writeString( errMsg.getArg(3) );
    132                stream.writeString( errMsg.getArg(4) );
    133                stream.writeString( errMsg.getPg()    );         // 3.8.9.5 (2007/09/12)
    134                stream.writeString( errMsg.getStep()  );         // 3.8.9.5 (2007/09/12)
    135        }
    136}