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 * パラメーター変数({@XXXX})は、使用できません。 027 * 028 * @og.formSample 029 * ●形式:<og:comment title="・・・" version="・・・" date="・・・" author="・・・" ・・・ /> 030 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 031 * 032 * ●Tag定義: 033 * <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 * > ... Body ... 045 * </og:comment> 046 * 047 * ●使用例 048 * <og:comment 049 * title = "変更概要" 050 * version = "001" 051 * date = "YYYY/MM/DD" 052 * author = "Y.MATSUI(Hybs) " 053 * rdcCode = "RDC00001" 054 * text = "当処理中の変更内容を記述します。" 055 * /> 056 * 057 * <og:comment 058 * title = "変更概要" 059 * version = "001" 060 * date = "YYYY/MM/DD" 061 * author = "Y.MATSUI(Hybs) " 062 * rdcCode = "RDC00001" 063 * build = "ビルド番号" (必須属性では有りません。) 064 * > 065 * 当処理中の変更内容を記述します。 066 * </og:comment> 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 * Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。 115 * 116 * @og.rev 2.2.0.0 (2002/12/17) 中国語(国際化)対応 エンコードの取得方法変更 117 * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString 廃止 118 * @og.rev 3.1.1.0 (2003/03/28) ボディの内容を取得する処理を、CommonTagSupport で行う。 119 * 120 * @return 後続処理の指示(SKIP_BODY) 121 */ 122 @Override 123 public int doAfterBody() { 124 text = getBodyString(); 125 126 return SKIP_BODY ; 127 } 128 129 /** 130 * タグリブオブジェクトをリリースします。 131 * キャッシュされて再利用されるので、フィールドの初期設定を行います。 132 * 133 * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加 134 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。 135 * @og.rev 3.3.2.0 (2003/07/07) 設計変更要求コード(rdcCode)属性を追加。 136 * @og.rev 3.8.9.3 (2007/08/31) PGID(pgid)、システム名称(system)属性を追加。 137 * 138 */ 139 @Override 140 protected void release2() { 141 super.release2(); 142 rdcCode = null; 143 title = null; 144 version = null; 145 build = null; 146 date = null; 147 author = null; 148 text = null; 149 pgid = null; // 3.8.9.3 150 system = null; // 3.8.9.3 151 } 152 153 /** 154 * 【TAG】設計変更要求コードを設定します。 155 * 156 * @og.tag コメントの設計変更要求コードを設定します。 157 * 158 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 159 * 160 * @param val 設計変更要求コード 161 */ 162 public void setRdcCode( final String val ) { 163 rdcCode = val; 164 } 165 166 /** 167 * 【TAG】タイトルを設定します。 168 * 169 * @og.tag コメントのタイトルを設定します。 170 * 171 * @og.rev 2.2.0.0 (2002/12/17) 中国語(国際化)対応 エンコードの取得方法変更 172 * @og.rev 3.0.0.0 (2002/12/25) StringUtil#changeString 廃止 173 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 174 * 175 * @param val タイトル 176 */ 177 public void setTitle( final String val ) { 178 title = val; 179 } 180 181 /** 182 * 【TAG】バージョンを設定します。 183 * 184 * @og.tag コメントのバージョンを設定します 185 * 186 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 187 * 188 * @param val バージョン 189 */ 190 public void setVersion( final String val ) { 191 version = val; 192 } 193 194 /** 195 * 【TAG】ビルド番号を設定します。 196 * 197 * @og.tag コメントのビルド番号を設定します 198 * 199 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 200 * 201 * @param val ビルド番号 202 */ 203 public void setBuild( final String val ) { 204 build = val; 205 } 206 207 /** 208 * 【TAG】変更日付を設定します。 209 * 210 * @og.tag コメントの変更日付を設定します 211 * 212 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 213 * 214 * @param val 変更日付 215 */ 216 public void setDate( final String val ) { 217 date = val; 218 } 219 220 /** 221 * 【TAG】変更者を設定します。 222 * 223 * @og.tag コメントの変更者を設定します 224 * 225 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 226 * 227 * @param val 変更者 228 */ 229 public void setAuthor( final String val ) { 230 author = val; 231 } 232 233 /** 234 * 【TAG】内容を設定します。 235 * 236 * @og.tag コメントの内容を設定します。 237 * ここでの内容は、BODY部に記述することも可能です。 238 * 両方に記述した場合は、text属性を優先します。 239 * 240 * @og.rev 3.3.1.0 (2003/06/24) text 属性追加、パラメータ変数を使えないように変更。 241 * 242 * @param val コメントの内容 243 */ 244 public void setText( final String val ) { 245 text = val; 246 } 247 248 /** 249 * 【TAG】プログラムIDを指定します。 250 * 251 * @og.tag コメントのプログラムIDを設定します。 252 * 253 * @param val プログラムID 254 */ 255 public void setPgid( final String val ) { 256 pgid = val; 257 } 258 259 /** 260 * 【TAG】システム名称を設定します。 261 * 262 * @og.tag コメントのシステム名称を設定します。 263 * 264 * @param val システム名称 265 */ 266 public void setSystem( final String val ) { 267 system = val; 268 } 269 270 /** 271 * このオブジェクトの文字列表現を返します。 272 * 基本的にデバッグ目的に使用します。 273 * 274 * @return このクラスの文字列表現 275 * @og.rtnNotNull 276 */ 277 @Override 278 public String toString() { 279 return ToString.title( this.getClass().getName() ) 280 .println( "VERSION" ,VERSION ) 281 .println( "rdcCode" ,rdcCode ) 282 .println( "title" ,title ) 283 .println( "version" ,version ) 284 .println( "build" ,build ) 285 .println( "date" ,date ) 286 .println( "author" ,author ) 287 .println( "text" ,text ) 288 .println( "pgid" ,pgid ) 289 .println( "system" ,system ) 290 .println( "Other..." ,getAttributes().getAttribute() ) 291 .fixForm().toString() ; 292 } 293}