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.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 */ 032public 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}