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 * パラメーター変数({@XXXX})は、使用できません。 025 * 026 * @og.formSample 027 * ●形式:<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】コメントのプログラムIDを設定します 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 */ 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}