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 }