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     */
016    package org.opengion.fukurou.util;
017    
018    
019    /**
020     * 個ã?のエラーメãƒ?‚»ージを持っておくためのオブジェクトですã?
021     * こã?オブジェクトã?、不変オブジェクトですã?
022     * å†?ƒ¨には、行番号とIDと結果と、メãƒ?‚»ージリソースで使用される引数を持ってã�?�¾すã?
023     * 結果は 0:正常 1:警å‘?2:異常 8:EXCEPTION 9:ORACLEエラーでã€?
024     * ErrorMessageクラスの public static 変数で定義されてã�?‚‹値を使用しますã?
025     *
026     * @og.group エラー処ç�?
027     *
028     * @version  4.0
029     * @author   Kazuhiko Hasegawa
030     * @since    JDK5.0,
031     */
032    public final class ErrMsg {
033            /** バッファの初期容量を通常より多い目に設定しますã?  {@value}  */
034            public static final int BUFFER_MIDDLE = 200;                                                    // 5.1.9.0 (2010/08/01) 追åŠ?
035    
036            private final int no;                   // 行番号
037            private final int kekka;                // 結果 0:正常 1:警å‘?2:異常 8:EXCEPTION 9:ORACLEエラー
038            private final String id;                // メãƒ?‚»ージID
039            private final String[] args ;   // メãƒ?‚»ージの引数配å?
040            private final String pg;                // PG�3.8.9.5 (2007/09/12)
041            private final String step;              // スãƒ?ƒƒプ名 3.8.9.5 (2007/09/12)
042    
043            /**
044             *  å¿?¦�な引数をすべて設定して、ErrMsg オブジェクトを構築しますã?
045             *
046             * @param       no      行番号
047             * @param       kekka   結果 0:正常 1:警å‘?2:異常 8:EXCEPTION 9:ORACLEエラー
048             * @param    pg PG�
049             * @param    step STEP�
050             * @param       id      メãƒ?‚»ージID
051             * @param    inArgs String... メãƒ?‚»ージIDの引数
052             */
053            public ErrMsg( final int no,final int kekka,
054                                            final String pg,final String step,
055                                            final String id,final String... inArgs) {
056                    this.no = no;
057                    this.kekka = kekka;
058                    this.id = id;
059                    int cnt = inArgs.length;
060                    args = new String[cnt];
061                    for( int i=0; i<cnt; i++ ) {
062                            args[i] = argIn( inArgs[i] );
063                    }
064                    this.pg = pg;           // 3.8.9.5 (2007/09/12)
065                    this.step = step;       // 3.8.9.5 (2007/09/12)
066            }
067    
068            /**
069             *  行番号のみ異なるã?新しい ErrMsg オブジェクトを作æ?しますã?
070             *
071             * @param    newNo 行番号
072             *
073             * @return   行番号のみ異なるã?新しい ErrMsgオブジェクãƒ?
074             */
075            public ErrMsg copy( final int newNo ) {
076    //              return new ErrMsg( newNo,kekka,id,args );
077                    return new ErrMsg( newNo,kekka,pg,step,id,args );
078            }
079    
080            /**
081             *  行番号を返しますã?
082             *
083             * @return   行番号
084             */
085            public int getNo() { return no; }
086    
087            /**
088             *  結果を返しますã?
089             *
090             * @return   結果 0:正常 1:警å‘?2:異常 8:EXCEPTION 9:ORACLEエラー
091             */
092            public int getKekka() { return kekka; }
093    
094            /**
095             *  メãƒ?‚»ージIDを返しますã?
096             *
097             * @return   メãƒ?‚»ージID
098             */
099            public String getId() { return id; }
100    
101            /**
102             *  メãƒ?‚»ージ引数を返しますã?
103             *
104             * @param    no 引数アドレス
105             *
106             * @return   メãƒ?‚»ージ引数
107             */
108            public String getArg( final int no ) { return args[no]; }
109    
110            /**
111             *  メãƒ?‚»ージ引数配å?を返しますã?
112             *
113             * @return   メãƒ?‚»ージ引数配å?
114             */
115            public String[] getArgs() { return args.clone(); }
116    
117            /**
118             * 引数につã�?�¦、{#XXXX} æ–?­—å?の場合ã?#XXXX に変換しますã?
119             * こã?、{#XXXX} æ–?­—å?は、メãƒ?‚»ージリソースの引数に、XXXX の
120             * ラベルリソースを適用させるå?合に使用しますã?
121             * こã?処ç�??、メãƒ?‚»ージリソースでの処ç�?�§互換性を確保する為ですã?
122             * なおã?こã?変更のために、普通にã€?YYYY とæŒ?®šした文字å?もã?
123             * ラベルキーとして処ç�?�•れるようになりますã?で、ご注意くã�?�•ã�??
124             *
125             * @og.rev 4.0.0.0 (2005/01/31) 新規作æ?
126             *
127             * @param    arg        入力引数
128             *
129             * @return   変換後引数
130             */
131            private String argIn( final String arg ) {
132                    if( arg != null && arg.startsWith( "{#" ) ) {
133                            return arg.substring( 1,arg.length()-1 ) ;
134                    }
135                    else {
136                            return arg ;
137                    }
138            }
139    
140            /**
141             *  PG名を返しますã?
142             *
143             * @og.rev  3.8.9.5 (2007/09/12) 新規作æ?
144             *
145             * @return   PG�
146             */
147            public String getPg() { return pg; }
148    
149            /**
150             *  スãƒ?ƒƒプ名を返しますã?
151             *
152             * @og.rev  3.8.9.5 (2007/09/12) 新規作æ?
153             *
154             * @return   スãƒ?ƒƒプ名
155             */
156            public String getStep() { return step; }
157    
158            /**
159             *  ãƒ?ƒ�ãƒ?‚°用のオブジェクトã?å†?ƒ¨表現のæ–?­—å?を返しますã?
160             *
161             * @og.rev 4.0.0.0 (2004/12/31) å†?ƒ¨表現を文字ã?みとするã€?
162             *
163             * @return   å†?ƒ¨表現のæ–?­—å?
164             */
165            @Override
166            public String toString() {
167    //              StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
168                    StringBuilder buf = new StringBuilder( BUFFER_MIDDLE );
169                    buf.append( "id=[" ).append( id ).append( "] no=[" ).append( no ).append( "]" );
170                    buf.append( " kekka=[" ).append( kekka ).append( "] values={" );
171                    for( int i=0; i<args.length; i++ ) {
172                            if( args[i] != null ) {
173                                    buf.append( " " ).append( args[i] );
174                            }
175                    }
176                    buf.append( " }" );
177                    return buf.toString();
178            }
179    }