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 import java.util.List;
019 import java.util.ArrayList;
020
021
022 /**
023 * エラーメãƒ?‚»ージを受け渡すときに使用するクラスですã?
024 * 結果値としてã€?:正常 1:警å‘?2:異常 8:EXCEPTION 9:ORACLEエラー を持ってã�?�¾すã?
025 *
026 * @og.group エラー処ç�?
027 *
028 * @version 4.0
029 * @author Kazuhiko Hasegawa
030 * @since JDK5.0,
031 */
032 public final class ErrorMessage {
033 /** 改行コーãƒ?*/
034 public static final String CR = System.getProperty("line.separator"); // 5.1.9.0 (2010/08/01) 追åŠ?
035
036 /** バッファの初期容量を通常より多い目に設定しますã? {@value} */
037 public static final int BUFFER_MIDDLE = 200; // 5.1.9.0 (2010/08/01) 追åŠ?
038
039 /** 結果値 0:正常 {@value} */
040 public static final int OK = 0;
041 /** 結果値 1:警å‘?{@value} */
042 public static final int WARNING = 1;
043 /** 結果値 2:異常 {@value} */
044 public static final int NG = 2;
045 /** 結果値 8:EXCEPTION {@value} */
046 public static final int EXCEPTION = 8;
047 /** 結果値 9:ORACLEエラー {@value} */
048 public static final int ORCL_ERR = 9;
049
050 private int maxKekka = OK;
051 private String title = "";
052 private final List<ErrMsg> list = new ArrayList<ErrMsg>();
053
054 private boolean setPgStep = false; // 3.8.9.5 (2007/09/12)
055
056 /**
057 * ãƒ?ƒ•ォルトコンストラクター
058 * 詳細メãƒ?‚»ージを指定しなã�?�§ ErrorMessage を構築しますã?
059 * (明示しなã�?�¨、引き通付きコンストラクタのみのクラスになってしまã�?�¾すã?)
060 */
061 public ErrorMessage() {
062 setTitle( "NO TITLE" );
063 }
064
065 /**
066 * タイトルを指定して ErrorMessage を構築しますã?
067 *
068 * @param title タイトル
069 */
070 public ErrorMessage( final String title ) {
071 setTitle( title );
072 }
073
074 /**
075 * æŒ?®šされたエラーæƒ??を追åŠ?™»録しますã?
076 * これは、行番号?�ã?結果?šNG IDは無ã�?ゼロæ–?—å?)ですã?
077 *
078 * @param args String... メãƒ?‚»ージの引数(可変引数)
079 */
080 public void addMessage( final String... args ) {
081 addMessage( 0,NG,"",args );
082 }
083
084 /**
085 * æŒ?®šされたエラーæƒ??を追åŠ?™»録しますã?
086 *
087 * @param no 行番号
088 * @param kekka 結果 0:正常 1:警å‘?2:異常
089 * @param id メãƒ?‚»ージID
090 * @param args String... メãƒ?‚»ージの引数(可変引数)
091 */
092 public void addMessage( final int no,final int kekka,final String id,final String... args ) {
093 if( id != null ) {
094 ErrMsg msg = new ErrMsg( no,kekka,null,null,id,args );
095 list.add( msg );
096 if( maxKekka < kekka ) { maxKekka = kekka; }
097 }
098 }
099
100 /**
101 * æŒ?®šされたエラーオブジェクトを追åŠ?™»録しますã?
102 * 追åŠ?�™るErrMsgがã?å†?ƒ¨の結果値より大きい場合ã?、その結果値にセãƒ?ƒˆしますã?
103 * つまりã?å†?ƒ¨結果値は、登録されたすべてのエラーオブジェクトã?æœ?¤§値ですã?
104 *
105 * @param msg エラーオブジェクãƒ?
106 */
107 public void addMessage( final ErrMsg msg ) {
108 list.add( msg );
109 if( maxKekka < msg.getKekka() ) { maxKekka = msg.getKekka(); }
110 if( msg.getPg() != null || msg.getStep() != null ) { setPgStep = true; } // 3.8.9.5 (2007/09/12)
111 }
112
113 /**
114 * æŒ?®šされた ErrorMessageオブジェクトを追åŠ?™»録しますã?
115 * タイトルはå…??まま変わりませんã€?
116 * 現状の ErrorMessage の続きに、追åŠ?�—てã�?��ますã?
117 * 引数の ErrorMessageオブジェクãƒ?ã�?null の場合ã?,何もしませんã€?
118 *
119 * @param msg ErrorMessageオブジェクãƒ?
120 */
121 public void append( final ErrorMessage msg ) {
122 if( msg != null ) {
123 if( maxKekka < msg.getKekka() ) { maxKekka = msg.getKekka(); }
124
125 ErrMsg[] emsg = msg.toArray();
126 for( int i=0; i<emsg.length; i++ ) {
127 list.add( emsg[i] );
128 }
129 }
130 }
131
132 /**
133 * æŒ?®šされた ErrorMessageオブジェクトを行番号æŒ?®šで追åŠ?™»録しますã?
134 * タイトルはå…??まま変わりませんã€?
135 * 現状の ErrorMessage の続きに、追åŠ?�—てã�?��ますã?
136 * 引数の ErrorMessageオブジェクãƒ?ã�?null の場合ã?,何もしませんã€?
137 *
138 * @param no 行番号
139 * @param msg ErrorMessageオブジェクãƒ?
140 */
141 public void append( final int no,final ErrorMessage msg ) {
142 if( msg != null ) {
143 if( maxKekka < msg.getKekka() ) { maxKekka = msg.getKekka(); }
144
145 ErrMsg[] emsg = msg.toArray();
146 for( int i=0; i<emsg.length; i++ ) {
147 list.add( emsg[i].copy( no ) );
148 }
149 }
150 }
151
152 /**
153 * こã?リストå?の要ç´?‚’適åˆ?�ªé ?º�で繰り返し処ç�?�™る反復子を返しますã?
154 *
155 * @og.rev 4.0.0.0 (2004/12/31) 新規追åŠ?
156 * @og.rev 4.3.2.0 (2008/09/11) private â‡?public に変更ã€?
157 *
158 * @return すべての要ç´?‚’正しいé ?º�で保持するErrMsg配å?
159 */
160 // private ErrMsg[] toArray() {
161 public ErrMsg[] toArray() {
162 return list.toArray( new ErrMsg[list.size()] ) ;
163 }
164
165 /**
166 * リストå?のキーと値のマッピングの数を返しますã?
167 *
168 * @return リストå?の size
169 */
170 public int size() {
171 return list.size() ;
172 }
173
174 /**
175 * タイトルを返しますã?
176 *
177 * @return タイトル
178 */
179 public String getTitle() {
180 return title;
181 }
182
183 /**
184 * タイトルをセãƒ?ƒˆしますã?
185 *
186 * @param title タイトル
187 */
188 public void setTitle( final String title ) {
189 this.title = title;
190 }
191
192 /**
193 * æŒ?®šã?行ã?位置のエラー行番号を返しますã?
194 *
195 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
196 *
197 * @param row 行ã?位置
198 *
199 * @return 行番号
200 */
201 // public int getNo( final int row ) {
202 // return list.get(row).getNo();
203 // }
204
205 /**
206 * æŒ?®šã?行ã?位置のエラーオブジェクトを返しますã?
207 *
208 * @og.rev 4.0.0.0 (2004/12/31) 新規追åŠ?
209 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
210 *
211 * @param row 行ã?位置
212 *
213 * @return エラーオブジェクãƒ?
214 */
215 // public ErrMsg getErrMsg( final int row ) {
216 // return list.get(row);
217 // }
218
219 /**
220 * こã?エラーメãƒ?‚»ージの中で、最大の結果値(エラーのæœ?¤§レベル)を返しますã?
221 *
222 * @return 結果 OK, WARNING, NG, ORCL_ERR
223 */
224 public int getKekka() {
225 return maxKekka;
226 }
227
228 /**
229 * æŒ?®šã?行ã?位置の結果を返しますã?
230 *
231 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
232 *
233 * @param row 行ã?位置
234 *
235 * @return 結果 OK, WARNING, NG, EXCEPTION , ORCL_ERR
236 */
237 // public int getKekka( final int row ) {
238 // return list.get(row).getKekka();
239 // }
240
241 /**
242 * すべてのメãƒ?‚»ージã�?正常(OK)かを返しますã?
243 *
244 * @return 結果 すべてOK?štrue / それ以å¤?false
245 */
246 public boolean isOK() {
247 return ( maxKekka == OK );
248 }
249
250 /**
251 * æŒ?®šã?行ã?位置のエラーコードIDを返しますã?
252 *
253 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
254 *
255 * @param row 行ã?位置
256 *
257 * @return エラーコードID
258 */
259 // public String getId( final int row ) {
260 // return list.get(row).getId();
261 // }
262
263 /**
264 * æŒ?®šã?行ã?位置のPG名を返しますã?
265 *
266 * @og.rev 3.8.9.5 (2007/09/12) 新規作æ?
267 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
268 *
269 * @param row 行ã?位置
270 *
271 * @return PG�
272 */
273 // public String getPg( final int row ) {
274 //// return ((ErrMsg)list.get(row)).getPg();
275 // return (list.get(row)).getPg(); // 4.0.0.0 (2007/09/25)
276 // }
277
278 /**
279 * æŒ?®šã?行ã?位置のスãƒ?ƒƒプ名を返しますã?
280 *
281 * @og.rev 3.8.9.5 (2007/09/12) 新規作æ?
282 * @og.rev 4.3.2.0 (2008/09/11) å»?¢
283 *
284 * @param row 行ã?位置
285 *
286 * @return スãƒ?ƒƒプ名
287 */
288 // public String getStep( final int row ) {
289 //// return ((ErrMsg)list.get(row)).getStep();
290 // return (list.get(row)).getStep(); // 4.0.0.0 (2007/09/25)
291 // }
292
293 /**
294 * 配å?中にPG名またã?スãƒ?ƒƒプ名が設定されてã�?‚‹かを返しますã?
295 *
296 * @og.rev 3.8.9.5 (2007/09/12) 新規作æ?
297 *
298 * @return PG名またã?スãƒ?ƒƒプ名が設定されてã�?‚‹ã�?
299 */
300 public boolean isSetPgStep() {
301 return setPgStep;
302 }
303
304 /**
305 * メãƒ?‚»ージの連結リストを返しますã?
306 *
307 * @return メãƒ?‚»ージの連結リスãƒ?
308 */
309 @Override
310 public String toString() {
311 // StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
312 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE );
313 // rtn.append( getTitle() ).append( HybsSystem.CR );
314 rtn.append( getTitle() ).append( CR );
315 ErrMsg[] msg = list.toArray( new ErrMsg[list.size()] );
316 for( int i=0; i<msg.length; i++ ) {
317 rtn.append( msg[i] );
318 // rtn.append( HybsSystem.CR );
319 rtn.append( CR );
320 }
321 return rtn.toString();
322 }
323 }