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 /** 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}