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 */ 016 package org.opengion.hayabusa.taglib; 017 018 import org.opengion.hayabusa.common.HybsSystem; 019 import org.opengion.fukurou.util.Attributes; 020 import org.opengion.hayabusa.html.ViewMarker; 021 import org.opengion.hayabusa.html.ViewLink_LINK; 022 023 import java.util.Locale ; 024 import java.io.ObjectOutputStream; 025 import java.io.ObjectInputStream; 026 import java.io.IOException; 027 028 /** 029 * HTML のaタグと同等?リンクを作?するタグで、さらに国際化対応と引数の受け渡しが可能です? 030 * 031 * DBTableModelオブジェクトを表示する、?通オブジェクトです? 032 * こ?オブジェクトに???タ(DBTableModel)と、コントローラ(EntryTagForm)を与えて? 033 * 外部からコントロールすることで、各種形式で ??タ(DBTableModel)を表示させること? 034 * 可能です? 035 * 036 * @og.formSample 037 * ●形式?lt;og:viewLink command="…" > <og:link name="…" ... /> </og:viewLink > 038 * ●body?あ?EVAL_BODY_BUFFERED:BODYを評価し?{@XXXX} を解析しま? 039 * 040 * ●Tag定義?? 041 * <og:viewLink 042 * command ○?TAG】コマン?NEW,RENEW,RESET,REVIEW)をセ?しま???)? 043 * viewLinkId 【TAG?通常使?せん)requestから取得す?ViewLink に対応す?Attributes オブジェクト? ID 044 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false) 045 * > ... Body ... 046 * </og:viewLink> 047 * 048 * ●使用? 049 * QueryTagとViewTagの間にviewLinkを使?す? 050 * <og:viewLink command="{@command}"> 051 * <og:link column="NOSYN" gamenId="01PATTERN1" href="query.jsp" target="QUERY" 052 * keys="NOSYN,NMSYN,CDBK" value="[NOSYN],[NMSYN],[CDBK]" /> 053 * <og:link column="NMSYN" gamenId="01PATTERN1" href="query.jsp" target="QUERY" 054 * keys="NMSYN" value="[NMSYN]" /> 055 * <og:link column="CDBK" gamenId="01PATTERN1" href="query.jsp" target="QUERY" 056 * keys="NOSYN,NMSYN" value="[NOSYN],[NMSYN]" /> 057 * </og:viewLink> 058 * 059 * @og.group 画面表示 060 * 061 * @version 4.0 062 * @author Kazuhiko Hasegawa 063 * @since JDK5.0, 064 */ 065 public class ViewLinkTag extends CommonTagSupport { 066 //* こ?プログラ??VERSION??を設定します? {@value} */ 067 private static final String VERSION = "5.1.9.0 (2010/08/01)" ; 068 069 private static final long serialVersionUID = 519020100801L ; 070 071 /** command 引数に渡す事?出来?コマン? 新?{@value} */ 072 public static final String CMD_NEW = "NEW" ; 073 /** command 引数に渡す事?出来?コマン? 再検索 {@value} */ 074 public static final String CMD_RENEW = "RENEW" ; 075 /** command 引数に渡す事?出来?コマン? リセ? {@value} */ 076 public static final String CMD_RESET = "RESET" ; // 3.5.4.0 (2003/11/25) 077 /** command 引数に渡す事?出来?コマン? 再表示 {@value} */ 078 public static final String CMD_REVIEW = "REVIEW" ; // 3.5.4.0 (2003/11/25) 079 080 /** command 引数に渡す事?出来?コマン?リス? */ 081 private static final String[] COMMAND_LIST = new String[] { 082 CMD_NEW , CMD_RENEW ,CMD_RESET , CMD_REVIEW }; // 3.5.4.0 (2003/11/25) 083 084 private String viewLinkId = HybsSystem.VIEWLINK_KEY; 085 private String command = null; 086 private transient ViewMarker viewMarker = new ViewLink_LINK(); 087 088 /** 089 * Taglibの開始タグが見つかったときに処??doStartTag() ?オーバ?ライドします? 090 * 091 * @og.rev 5.1.9.0 (2010/08/01) 戻り?を?EVAL_BODY_INCLUDE ?EVAL_BODY_BUFFERED に変更 092 * 093 * @return 後続???? 094 */ 095 @Override 096 public int doStartTag() { 097 // if( check( command, COMMAND_LIST ) ) { return( EVAL_BODY_INCLUDE ); } 098 if( check( command, COMMAND_LIST ) ) { return( EVAL_BODY_BUFFERED ); } // 5.1.9.0 (2010/08/01) 変更 099 else { return( SKIP_BODY ); } 100 } 101 102 /** 103 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします? 104 * 105 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 106 * 107 * @return 後続???? 108 */ 109 @Override 110 public int doEndTag() { 111 debugPrint(); // 4.0.0 (2005/02/28) 112 if( check( command, COMMAND_LIST ) ) { 113 setRequestAttribute( viewLinkId,viewMarker ); 114 } 115 116 return(EVAL_PAGE); 117 } 118 119 /** 120 * タグリブオブジェクトをリリースします? 121 * キャ?ュされて再利用される?で、フィールド?初期設定を行います? 122 * 123 * @og.rev 2.0.0.4 (2002/09/27) カスタ?グの release() メソ?を?追? 124 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応?release2() ?doEndTag()で呼ぶ? 125 * 126 */ 127 @Override 128 protected void release2() { 129 super.release2(); 130 viewLinkId = HybsSystem.VIEWLINK_KEY; 131 command = null; 132 viewMarker = new ViewLink_LINK(); 133 } 134 135 /** 136 * ?タグの LinkTag より、???カラ??値を書き換える 為の 137 * リンク??を受け取る? 138 * 139 * ?の値を受け取って、後ほど、すべてのカラ?対して処?行います? 140 * 141 * @og.rev 3.1.2.0 (2003/04/07) taglib パッケージ?で使用して???protected 化する? 142 * @og.rev 4.0.0.0 (2005/08/31) 同?ラ???登録を許可します? 143 * 144 * @param attri リンクアトリビュー? 145 */ 146 protected void addAttribute( final Attributes attri ) { 147 viewMarker.addAttribute( attri ); 148 } 149 150 /** 151 * 【TAG】コマン?NEW,RENEW,RESET,REVIEW)をセ?します? 152 * 153 * @og.tag 154 * コマンド?,HTMLから(get/post)?されます?で,CMD_xxx で設定される 155 * フィールド定数値の?れかを??できます? 156 * 157 * @param cmd コマン?public static final 宣?れて???) 158 * @see <a href="{@docRoot}/constant-values.html#org.opengion.hayabusa.taglib.ViewLinkTag.CMD_NEW">コマンド定数</a> 159 */ 160 public void setCommand( final String cmd ) { 161 String cmd2 = getRequestParameter( cmd ); 162 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); } 163 } 164 165 /** 166 * 【TAG?通常使?せん)requestから取得す?ViewLink に対応す?Attributes オブジェクト? ID? 167 * 168 * @og.tag 169 * ViewLink オブジェクトをこ?キーで、登録することにより? 170 * ViewForm オブジェクトで、リンク??を付加して表示させる? 171 * 初期値は、HybsSystem.VIEWLINK_KEY です? 172 * 173 * @og.rev 3.1.4.0 (2003/04/18) 新規追? 174 * @og.rev 3.5.6.3 (2004/07/12) {@XXXX} 変数を使用できるように変更? 175 * @og.rev 3.5.6.4 (2004/07/16) LINK_ID を付加して、他?id と混同しな??します? 176 * 177 * @param id オブジェク?D 178 */ 179 public void setViewLinkId( final String id ) { 180 String temp = getRequestParameter( id ) ; 181 if( temp != null && temp.length() > 0 ) { 182 viewLinkId = temp + TaglibUtil.LINK_ID; 183 } 184 } 185 186 /** 187 * シリアライズ用のカスタ?リアライズ書き込みメソ? 188 * 189 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 190 * @serialData 191 * 192 * @param strm ObjectOutputStreamオブジェク? 193 */ 194 private void writeObject( final ObjectOutputStream strm ) throws IOException { 195 strm.defaultWriteObject(); 196 } 197 198 /** 199 * シリアライズ用のカスタ?リアライズ読み込みメソ? 200 * 201 * ここでは、transient 宣?れた?変数の??初期化が?なフィールド?み設定します? 202 * 203 * @og.rev 4.0.0.0 (2006/09/31) 新規追? 204 * @serialData 205 * 206 * @param strm ObjectInputStreamオブジェク? 207 * @see #release2() 208 */ 209 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 210 strm.defaultReadObject(); 211 viewMarker = new ViewLink_LINK(); 212 } 213 214 /** 215 * こ?オブジェクト???表現を返します? 216 * 基本???目?使用します? 217 * 218 * @return こ?クラスの??表現 219 */ 220 @Override 221 public String toString() { 222 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 223 .println( "VERSION" ,VERSION ) 224 .println( "viewLinkId" ,viewLinkId ) 225 .println( "command" ,command ) 226 .println( "Other..." ,getAttributes().getAttribute() ) 227 .fixForm().toString() ; 228 } 229 }