    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.hayabusa.taglib;
    017
    018/**
    019 * JSPアプリケーションに対してバージョン管理できるようにコメントを
    020 * 記述するためのタグです。
    021 *
    022 * バージョン、ビルド番号、日付、変更者、タイトルなどを記述できます。
    023 * 変更内容は、text属性か、BODY 部に記述します。
    024 * パラメーター変数({&#064;XXXX})は、使用できません。
    025 *
    026 * @og.formSample
    027 * ●形式：&lt;og:comment title="･･･" version="･･･" date="･･･" author="･･･" ･･･ /&gt;
    028 * ●body：あり(EVAL_BODY_BUFFERED:BODYを評価し、{&#064;XXXX} を解析します)
    029 *
    030 * ●Tag定義：
    031 *   &lt;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】コメントのプログラムIDを設定します
    041 *       system             【TAG】コメントのシステム名称を設定します
    042 *   &gt;   ... Body ...
    043 *   &lt;/og:comment&gt;
    044 *
    045 * ●使用例
    046 *     &lt;og:comment
    047 *         title   = "変更概要"
    048 *         version = "001"
    049 *         date    = "YYYY/MM/DD"
    050 *         author  = "Y.MATSUI(Hybs) "
    051 *         rdcCode = "RDC00001"
    052 *         text    = "当処理中の変更内容を記述します。"
    053 *     /&gt;
    054 *
    055 *     &lt;og:comment
    056 *         title   = "変更概要"
    057 *         version = "001"
    058 *         date    = "YYYY/MM/DD"
    059 *         author  = "Y.MATSUI(Hybs) "
    060 *         rdcCode = "RDC00001"
    061 *         build   = "ビルド番号"           (必須属性では有りません。)
    062 *     &gt;
    063 *       当処理中の変更内容を記述します。
    064 *     &lt;/og:comment&gt;
    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 */
    074public 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】コメントのプログラムIDを設定します。
    244         *
    245         * @og.tag コメントのプログラムIDを設定します。
    246         *
    247         * @param   val プログラムID
    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}