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 java.sql.SQLData;
019import java.sql.SQLInput;
020import java.sql.SQLOutput;
021import java.sql.SQLException;
022
023import org.opengion.fukurou.util.ErrMsg;
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         *  SQLタイプの文字列を返します。
084         *
085         * @return    SQLタイプの文字列
086         * @throws SQLException ※ この実装からは SQLException は、throw されません。
087         */
088        @Override       // SQLData
089        public String getSQLTypeName() throws SQLException {
090                return sqlType;
091        }
092
093        /**
094         *  データベース内部より内部属性を取得し、オブジェクトを構築します。
095         *
096         * @og.rev 2.0.0.4 (2002/09/27) エラーメッセージ表示の、行番号がおかしい件の修正。
097         *
098         * @param       stream  ストリーム
099         * @param    typeName SQLタイプの文字列
100         * @throws SQLException データベースアクセスエラー
101         */
102        @Override       // SQLData
103        public void readSQL( final SQLInput stream, final String typeName ) throws SQLException {
104                sqlType = typeName;
105
106                final int    no    = stream.readInt()+1;                // PLSQLでは、引数そのままの番号をセットする。
107                final int    kekka = stream.readInt();
108                final String id    = stream.readString();
109                final String arg0 = stream.readString();
110                final String arg1 = stream.readString();
111                final String arg2 = stream.readString();
112                final String arg3 = stream.readString();
113                final String arg4 = stream.readString();
114                final String pg    = stream.readString(); // 3.8.9.5 (2007/09/12)
115                final String step  = stream.readString(); // 3.8.9.5 (2007/09/12)
116
117                errMsg   = new ErrMsg( no,kekka,pg,step,id,arg0,arg1,arg2,arg3,arg4 );   // 3.8.9.5 (2007/09/12)
118        }
119
120        /**
121         *  データベース内部に内部属性を設定します。
122         *
123         * @param       stream  ストリーム
124         * @throws SQLException データベースアクセスエラー
125         */
126        @Override       // SQLData
127        public void writeSQL( final SQLOutput stream ) throws SQLException {
128                stream.writeInt(    errMsg.getNo()    );
129                stream.writeInt(    errMsg.getKekka() );
130                stream.writeString( errMsg.getId()    );
131                stream.writeString( errMsg.getArg(0) );
132                stream.writeString( errMsg.getArg(1) );
133                stream.writeString( errMsg.getArg(2) );
134                stream.writeString( errMsg.getArg(3) );
135                stream.writeString( errMsg.getArg(4) );
136                stream.writeString( errMsg.getPg()    );         // 3.8.9.5 (2007/09/12)
137                stream.writeString( errMsg.getStep()  );         // 3.8.9.5 (2007/09/12)
138        }
139}