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.fukurou.db.ConnectionFactory; 019 import org.opengion.hayabusa.common.HybsSystem; 020 import org.opengion.hayabusa.resource.UserInfo; 021 import org.opengion.hayabusa.resource.ResourceFactory; 022 import org.opengion.hayabusa.resource.CalendarFactory; 023 import org.opengion.hayabusa.db.SelectionFactory; 024 025 import static org.opengion.fukurou.util.StringUtil.nval ; 026 027 /** 028 * ã‚ャãƒ?‚·ãƒ¥ã—ã¦ã?‚‹å?¨®ãƒ??ã‚¿ã‚’å?期化(クリア)ã—ã¾ã™ã? 029 * 030 * ãƒ??タベã?スリソースを使用ã—ã¦ã?‚‹å ´åˆã?ã€ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã™ã‚‹ã“ã¨ã§ã€å?度 031 * èªã¿è¾¼ã¿ãªãŠã—ã¾ã™ã?ã§ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スã®å€¤ã‚’変更ã—ãŸå¾Œã«ã¯ã€ã‚¯ãƒªã‚¢ãŒå¿?¦ã§ã™ã? 032 * 033 * クリアã™ã‚‹å¯¾è±¡ã¯ã€connection,resource,gui,query,calendar ãŒã‚りã¾ã™ã? 034 * all ã¨ã?† ã‚ーワードã?ã€ä¸‹è¨˜ã?ã™ã¹ã¦ã®ãƒªã‚½ãƒ¼ã‚¹ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã™ã? 035 * <table border="1" frame="box" rules="all" > 036 * <caption>åˆæœŸåŒ?クリア)対象ã®ã‚ーワーãƒ?/caption> 037 * <tr><th>対象 </th><th>説æ˜?/th></tr> 038 * <tr><td>connection </td><td>コãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ã?リングã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’開放ã—ã¾ã™ã?</td></tr> 039 * <tr><td>resource </td><td>ユーザーã€ã‚·ã‚¹ãƒ?ƒ を除ãリソースã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã™ã?</td></tr> 040 * <tr><td>gui </td><td>GUIæƒ??ã®ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã™ã?</td></tr> 041 * <tr><td>calendar </td><td>äº‹æ¥æ‰?‚«ãƒ¬ãƒ³ãƒ?‚’å«ã‚?‚«ãƒ¬ãƒ³ãƒ?‚ªãƒ–ジェクトã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã™ã?</td></tr> 042 * </table> 043 * 044 * @og.formSample 045 * â—å½¢å¼ï¼?lt;og:engine connectionClear="[true|false]" ?¥?¥?¥ /> 046 * â—body?šãªã? 047 * 048 * â—Tag定義?? 049 * <og:engine 050 * allClear ã€TAG】ã™ã¹ã¦ã®ã‚ャãƒ?‚·ãƒ¥ãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false) 051 * connectionClear ã€TAG】データベã?スコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ã?ルã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’削除(開放)ã—ã¾ã?åˆæœŸå€¤:false) 052 * resourceClear ã€TAG】リソースãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false) 053 * guiClear ã€TAG】GUIæƒ??ã®ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã?åˆæœŸå€¤:false) 054 * userClear ã€TAG】Useræƒ??ã®ãƒ‘ラメータãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false) 055 * calendarClear ã€TAG】カレンãƒ?‚ªãƒ–ジェクトã?ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã?åˆæœŸå€¤:false) 056 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 057 * /> 058 * 059 * â—使用ä¾? 060 * <og:engine 061 * connectionClear = "true" åˆæœŸå€¤:false 062 * resourceClear = "true" åˆæœŸå€¤:false 063 * guiClear = "true" åˆæœŸå€¤:false 064 * userClear = "true" åˆæœŸå€¤:false 065 * calendarClear = "true" åˆæœŸå€¤:false 066 * /> 067 * 068 * <og:engine 069 * allClear = "true" 070 * /> 071 * 072 * @og.rev 3.6.0.0 (2004/09/17) æ–°è¦ä½œæ? 073 * @og.group ãƒã‚°ã‚¤ãƒ³åˆ¶å¾¡ 074 * 075 * @version 4.0 076 * @author Kazuhiko Hasegawa 077 * @since JDK5.0, 078 */ 079 public class EngineTag extends CommonTagSupport { 080 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 081 private static final String VERSION = "4.0.0.0 (2005/08/31)" ; 082 083 private static final long serialVersionUID = 400020050831L ; 084 085 private static final Object lock = new Object(); 086 087 private boolean allClear = false; 088 private boolean connectionClear = false; 089 private boolean resourceClear = false; 090 private boolean guiClear = false; 091 private boolean userClear = false; 092 private boolean calendarClear = false; 093 094 /** 095 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 096 * 097 * @return 後続å?ç??æŒ?¤º 098 */ 099 @Override 100 public int doEndTag() { 101 debugPrint(); // 4.0.0 (2005/02/28) 102 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 103 104 synchronized( lock ) { 105 if( connectionClear ) { 106 ConnectionFactory.realClose(); 107 buf.append( "Connection Factory Real Closed" ).append( HybsSystem.BR ); 108 System.out.println( "Connection Factory Real Closed" ); 109 } 110 111 if( calendarClear ) { 112 CalendarFactory.clear(); // 3.6.0.0 (2004/09/17) 113 buf.append( "Calendar Factory Cleared" ).append( HybsSystem.BR ); 114 System.out.println( "Calendar Factory Cleared" ); 115 } 116 117 if( guiClear ) { 118 ResourceFactory.guiClear(); 119 UserInfo userInfo = getUser(); 120 userInfo.clear(); 121 getResource().makeGUIInfos( userInfo ); 122 buf.append( "GUIInfo Data Cleared" ).append( HybsSystem.BR ); 123 System.out.println( "GUIInfo Data Cleared" ); 124 } 125 126 if( userClear ) { 127 UserInfo userInfo = getUser(); 128 userInfo.clear(); 129 buf.append( "UserInfo Parameter Data Cleared" ).append( HybsSystem.BR ); 130 System.out.println( "UserInfo Parameter Data Cleared" ); 131 } 132 133 if( resourceClear ) { 134 ResourceFactory.clear(); 135 SelectionFactory.clear(); // 4.0.0 (2006/11/17) 136 buf.append( "Resource Factory Cleared" ).append( HybsSystem.BR ); 137 System.out.println( "Resource Factory Cleared" ); 138 } 139 } 140 141 return(EVAL_PAGE); 142 } 143 144 /** 145 * タグリブオブジェクトをリリースã—ã¾ã™ã? 146 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 147 * 148 */ 149 @Override 150 protected void release2() { 151 super.release2(); 152 allClear = false; 153 connectionClear = false; 154 resourceClear = false; 155 guiClear = false; 156 userClear = false; 157 calendarClear = false; 158 } 159 160 /** 161 * ã€TAG】ã™ã¹ã¦ã®ã‚ャãƒ?‚·ãƒ¥ãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false)ã€? 162 * 163 * @og.tag 164 * connectionClear,resourceClear,guiClear,calendarClearã® 165 * ã™ã¹ã¦ã‚’ã?true ã«è¨å®šã™ã‚‹ã“ã¨ã¨åŒã˜ã§ã™ã? 166 * 167 * @param flag ã‚ャãƒ?‚·ãƒ¥ã‚¯ãƒªã‚¢[true:ã™ã¹ã¦/false:個別] 168 */ 169 public void setAllClear( final String flag ) { 170 allClear = nval( getRequestParameter( flag ),allClear ); 171 172 connectionClear = connectionClear || allClear ; 173 resourceClear = resourceClear || allClear ; 174 guiClear = guiClear || allClear ; 175 userClear = userClear || allClear ; 176 calendarClear = calendarClear || allClear ; 177 } 178 179 /** 180 * ã€TAG】データベã?スコãƒã‚¯ã‚·ãƒ§ãƒ³ãƒ—ã?ルã®ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’削除(開放)ã—ã¾ã?åˆæœŸå€¤:false)ã€? 181 * 182 * @og.tag ãƒ??タベã?スæ“作ãŒãŠã‹ã—ã„å ´åˆã?ã€ã‚¯ãƒªã‚¢ã—ã¦ã¿ã¦ãã ã•ã„ã€? 183 * 184 * @param flag コãƒã‚¯ã‚·ãƒ§ãƒ³å‰Šé™¤ã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:ã—ãªã„] 185 */ 186 public void setConnectionClear( final String flag ) { 187 connectionClear = nval( getRequestParameter( flag ),connectionClear ); 188 } 189 190 /** 191 * ã€TAG】リソースãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false)ã€? 192 * 193 * @og.tag 194 * ユーザーリソースã¨ã‚·ã‚¹ãƒ?ƒ リソースを除ãリソースã‚ャãƒ?‚·ãƒ¥ 195 * ãƒ??タをクリアã—ã¾ã™ã? 196 * 197 * @param flag リソースãƒ??タをクリアã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:ã—ãªã„] 198 */ 199 public void setResourceClear( final String flag ) { 200 resourceClear = nval( getRequestParameter( flag ),resourceClear ); 201 } 202 203 /** 204 * ã€TAG】Useræƒ??ã®ãƒ‘ラメータãƒ??タをクリアã—ã¾ã?åˆæœŸå€¤:false)ã€? 205 * 206 * @og.tag 207 * Useræƒ??ã®ãƒ‘ラメータãƒ??ã‚¿(GE16ã‹ã‚‰èªã¿è¾¼ã¿)ã«è¿½åŠ?æ›´æ–°/削除ãŒç™ºç”Ÿã—ãŸã¨ãã?ã€? 208 * ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 209 * Useræƒ??ã®ãƒ‘ラメータãƒ??ã‚¿ã¯ã€{@USER.XXXX}ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãる値ã§ã¯ãªãã? 210 * シスãƒ?ƒ パラメータ {@SYS.XXXX}ã¨ã—ã¦ã‚¢ã‚¯ã‚»ã‚¹ã§ãるユーザー個別æƒ??ã®ã“ã¨ã§ã™ã? 211 * 212 * @param flag パラメータãƒ??タをクリアã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:ã—ãªã„] 213 */ 214 public void setUserClear( final String flag ) { 215 userClear = nval( getRequestParameter( flag ),userClear ); 216 } 217 218 /** 219 * ã€TAG】GUIæƒ??ã®ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã?åˆæœŸå€¤:false)ã€? 220 * 221 * @og.tag 222 * GUIæƒ??ã®è¿½åŠ?æ›´æ–°/削除ãŒç™ºç”Ÿã—ãŸã¨ãã?ã€ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 223 * 224 * @param flag GUIæƒ??ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:ã—ãªã„] 225 */ 226 public void setGuiClear( final String flag ) { 227 guiClear = nval( getRequestParameter( flag ),guiClear ); 228 } 229 230 /** 231 * ã€TAG】カレンãƒ?‚ªãƒ–ジェクトã?ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ã¾ã?åˆæœŸå€¤:false)ã€? 232 * 233 * @og.tag 234 * カレンãƒ?‚ªãƒ–ジェクトã?ã€äº‹æ¥æ‰?‚«ãƒ¬ãƒ³ãƒ?例:GE13)毎ã«ã‚ªãƒ–ジェクトを 235 * 作æ?ã—ã¾ã™ã?ã‚ャãƒ?‚·ãƒ¥ã«æŒã£ã¦ã?‚‹ãŸã‚ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スを更新ã™ã‚‹ãŸã?ã«ã€? 236 * ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã—ãªãŠã™å¿?¦ãŒã‚りã¾ã™ã? 237 * 238 * @param flag カレンãƒ??ã‚ャãƒ?‚·ãƒ¥ã‚’クリアã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:ã—ãªã„] 239 */ 240 public void setCalendarClear( final String flag ) { 241 calendarClear = nval( getRequestParameter( flag ),calendarClear ); 242 } 243 244 /** 245 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 246 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 247 * 248 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 249 */ 250 @Override 251 public String toString() { 252 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 253 .println( "VERSION" ,VERSION ) 254 .println( "allClear" ,allClear ) 255 .println( "connectionClear" ,connectionClear) 256 .println( "resourceClear" ,resourceClear ) 257 .println( "guiClear" ,guiClear ) 258 .println( "userClear" ,userClear ) 259 .println( "calendarClear" ,calendarClear ) 260 .println( "Other..." ,getAttributes().getAttribute() ) 261 .fixForm().toString() ; 262 } 263 }