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.hayabusa.taglib;
017    
018    /**
019     * JSPアプリケーションに対してバ?ジョン管?きるようにコメントを
020     * 記述するためのタグです?
021     *
022     * バ?ジョン、ビルド番号、日付?変更??タイトルなどを記述できます?
023     * 変更?は、text属?か?BODY 部に記述します?
024     * パラメーター変数({@XXXX})は、使用できません?
025     *
026     * @og.formSample
027     * ●形式?lt;og:comment title="???" version="???" date="???" author="???" ??? />
028     * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま?
029     *
030     * ●Tag定義??
031     *   <og:comment
032     *       rdcCode            【TAG】コメント?設計変更要求コードを設定しま?
033     *       title            ○?TAG】コメント?タイトルを設定しま???)?
034     *       version          ○?TAG】コメント?バ?ジョンを設定しま???)?
035     *       build              【TAG】コメント?ビルド番号を設定しま?
036     *       date             ○?TAG】コメント?変更日付を設定しま???)?
037     *       author           ○?TAG】コメント?変更?設定しま???)?
038     *       text               【TAG】コメント??を設定しま?
039     *       debug              【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false)
040     *       pgid               【TAG】コメント?プログラ?Dを設定しま?
041     *       system             【TAG】コメント?シス?名称を設定しま?
042     *   >   ... Body ...
043     *   </og:comment>
044     *
045     * ●使用?
046     *     <og:comment
047     *         title   = "変更概?
048     *         version = "001"
049     *         date    = "YYYY/MM/DD"
050     *         author  = "Y.MATSUI(Hybs) "
051     *         rdcCode = "RDC00001"
052     *         text    = "当??の変更?を記述します?"
053     *     />
054     *
055     *     <og:comment
056     *         title   = "変更概?
057     *         version = "001"
058     *         date    = "YYYY/MM/DD"
059     *         author  = "Y.MATSUI(Hybs) "
060     *         rdcCode = "RDC00001"
061     *         build   = "ビルド番号"           (??属?では有りません?
062     *     >
063     *       当??の変更?を記述します?
064     *     </og:comment>
065     *
066     * @og.rev 2.1.3.0 (2002/12/12) JSP画面の管?に、画面に変更履歴を持たせる為のタグを新規作?
067     * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
068     * @og.group 画面部?
069     *
070     * @version  4.0
071     * @author   Kazuhiko Hasegawa
072     * @since    JDK5.0,
073     */
074    public class CommentTag extends CommonTagSupport {
075            //* こ?プログラ??VERSION??を設定します?       {@value} */
076            private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
077    
078            private static final long serialVersionUID = 400020050831L ;
079    
080            private String rdcCode  = null;
081            private String title    = null;
082            private String version  = null;
083            private String build    = null;
084            private String date             = null;
085            private String author   = null;
086            private String text             = null;
087            private String pgid             = null; // 3.8.9.3
088            private String system           = null; // 3.8.9.3
089    
090            /**
091             * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします?
092             *
093             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
094             *
095             * @return      後続????
096             */
097            @Override
098            public int doStartTag() {
099                    if( text == null ) {
100                            return( EVAL_BODY_BUFFERED );   // Body を評価する? extends BodyTagSupport ?
101                    }
102                    else {
103                            return(SKIP_BODY);                              // Body を評価しな?
104                    }
105            }
106    
107            /**
108             * Taglibのタグ本体を処??doAfterBody() ?オーバ?ライドします?
109             *
110             * @og.rev 2.2.0.0 (2002/12/17) 中国?国際化)対?エンコード?取得方法変更
111             * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString ?
112             * @og.rev 3.1.1.0 (2003/03/28) ボディの?を取得する??、CommonTagSupport で行う?
113             *
114             * @return      後続????(SKIP_BODY)
115             */
116            @Override
117            public int doAfterBody() {
118                    text = getBodyString();
119    
120                    return(SKIP_BODY);
121            }
122    
123            /**
124             * タグリブオブジェクトをリリースします?
125             * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
126             *
127             * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追?
128             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ?
129             * @og.rev 3.3.2.0 (2003/07/07) 設計変更要求コー?rdcCode)属?を追??
130             * @og.rev 3.8.9.3 (2007/08/31) PGID(pgid)、シス?名称(system)属?を追??
131             *
132             */
133            @Override
134            protected void release2() {
135                    super.release2();
136                    rdcCode         = null;
137                    title           = null;
138                    version         = null;
139                    build           = null;
140                    date            = null;
141                    author          = null;
142                    text            = null;
143                    pgid            = null; // 3.8.9.3
144                    system          = null; // 3.8.9.3
145            }
146    
147            /**
148             * 【TAG】コメント?設計変更要求コードを設定します?
149             *
150             * @og.tag コメント?設計変更要求コードを設定します?
151             *
152             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
153             *
154             * @param   val 設計変更要求コー?
155             */
156            public void setRdcCode( final String val ) {
157                    rdcCode = val;
158            }
159    
160            /**
161             * 【TAG】コメント?タイトルを設定します?
162             *
163             * @og.tag コメント?タイトルを設定します?
164             *
165             * @og.rev 2.2.0.0 (2002/12/17) 中国?国際化)対?エンコード?取得方法変更
166             * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString ?
167             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
168             *
169             * @param   val タイトル
170             */
171            public void setTitle( final String val ) {
172                    title = val;
173            }
174    
175            /**
176             * 【TAG】コメント?バ?ジョンを設定します?
177             *
178             * @og.tag コメント?バ?ジョンを設定しま?
179             *
180             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
181             *
182             * @param   val バ?ジョン
183             */
184            public void setVersion( final String val ) {
185                    version = val;
186            }
187    
188            /**
189             * 【TAG】コメント?ビルド番号を設定します?
190             *
191             * @og.tag コメント?ビルド番号を設定しま?
192             *
193             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
194             *
195             * @param   val ビルド番号
196             */
197            public void setBuild( final String val ) {
198                    build = val;
199            }
200    
201            /**
202             * 【TAG】コメント?変更日付を設定します?
203             *
204             * @og.tag コメント?変更日付を設定しま?
205             *
206             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
207             *
208             * @param   val 変更日?
209             */
210            public void setDate( final String val ) {
211                    date = val;
212            }
213    
214            /**
215             * 【TAG】コメント?変更?設定します?
216             *
217             * @og.tag コメント?変更?設定しま?
218             *
219             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
220             *
221             * @param   val 変更?
222             */
223            public void setAuthor( final String val ) {
224                    author = val;
225            }
226    
227            /**
228             * 【TAG】コメント??を設定します?
229             *
230             * @og.tag コメント??を設定します?
231             * ここでの?は、BODY部に記述することも可能です?
232             * 両方に記述した場合?、text属?を優先します?
233             *
234             * @og.rev 3.3.1.0 (2003/06/24) text 属?追??パラメータ変数を使えな??変更?
235             *
236             * @param   val コメント??
237             */
238            public void setText( final String val ) {
239                    text = val;
240            }
241    
242            /**
243             * 【TAG】コメント?プログラ?Dを設定します?
244             *
245             * @og.tag コメント?プログラ?Dを設定します?
246             *
247             * @param   val プログラ?D
248             */
249            public void setPgid( final String val ) {
250                    pgid = val;
251            }
252    
253            /**
254             * 【TAG】コメント?シス?名称を設定します?
255             *
256             * @og.tag コメント?シス?名称を設定します?
257             *
258             * @param   val シス?名称
259             */
260            public void setSystem( final String val ) {
261                    system = val;
262            }
263    
264            /**
265             * こ?オブジェクト???表現を返します?
266             * 基本???目?使用します?
267             *
268             * @return こ?クラスの??表現
269             */
270            @Override
271            public String toString() {
272                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
273                                    .println( "VERSION"             ,VERSION        )
274                                    .println( "rdcCode"             ,rdcCode        )
275                                    .println( "title"               ,title          )
276                                    .println( "version"             ,version        )
277                                    .println( "build"               ,build          )
278                                    .println( "date"                ,date           )
279                                    .println( "author"              ,author         )
280                                    .println( "text"                ,text           )
281                                    .println( "pgid"                ,pgid           )
282                                    .println( "system"              ,system         )
283                                    .println( "Other..."    ,getAttributes().getAttribute() )
284                                    .fixForm().toString() ;
285            }
286    }