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    }