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