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    }