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 * <tr><th>対象 </th><th>説æ˜?/th></tr>
037 * <tr><td>connection </td><td>コネクションプã?リングのコネクションを開放しますã?</td></tr>
038 * <tr><td>resource </td><td>ユーザー、シスãƒ?ƒ を除くリソースキャãƒ?‚·ュをクリアしますã?</td></tr>
039 * <tr><td>gui </td><td>GUIæƒ??のキャãƒ?‚·ュをクリアしますã?</td></tr>
040 * <tr><td>calendar </td><td>事業æ‰?‚«レンãƒ?‚’含ã‚?‚«レンãƒ?‚ªブジェクトキャãƒ?‚·ュをクリアしますã?</td></tr>
041 * </table>
042 *
043 * @og.formSample
044 * ●形式ï¼?lt;og:engine connectionClear="[true|false]" ?¥?¥?¥ />
045 * ●body?šなã�?
046 *
047 * ●Tag定義??
048 * <og:engine
049 * allClear 【TAG】すべてのキャãƒ?‚·ュãƒ??タをクリアしまã�?初期値:false)
050 * connectionClear 【TAG】データベã?スコネクションプã?ルのコネクションを削除(開放)しまã�?初期値:false)
051 * resourceClear 【TAG】リソースãƒ??タをクリアしまã�?初期値:false)
052 * guiClear 【TAG】GUIæƒ??のキャãƒ?‚·ュをクリアしまã�?初期値:false)
053 * userClear 【TAG】Useræƒ??のパラメータãƒ??タをクリアしまã�?初期値:false)
054 * calendarClear 【TAG】カレンãƒ?‚ªブジェクトã?キャãƒ?‚·ュをクリアしまã�?初期値:false)
055 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
056 * />
057 *
058 * ●使用ä¾?
059 * <og:engine
060 * connectionClear = "true" 初期値:false
061 * resourceClear = "true" 初期値:false
062 * guiClear = "true" 初期値:false
063 * userClear = "true" 初期値:false
064 * calendarClear = "true" 初期値:false
065 * />
066 *
067 * <og:engine
068 * allClear = "true"
069 * />
070 *
071 * @og.rev 3.6.0.0 (2004/09/17) 新規作æ?
072 * @og.group ログイン制御
073 *
074 * @version 4.0
075 * @author Kazuhiko Hasegawa
076 * @since JDK5.0,
077 */
078 public class EngineTag extends CommonTagSupport {
079 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
080 private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
081
082 private static final long serialVersionUID = 400020050831L ;
083
084 private static final Object lock = new Object();
085
086 private boolean allClear = false;
087 private boolean connectionClear = false;
088 private boolean resourceClear = false;
089 private boolean guiClear = false;
090 private boolean userClear = false;
091 private boolean calendarClear = false;
092
093 /**
094 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
095 *
096 * @return 後続å?ç�??æŒ?¤º
097 */
098 @Override
099 public int doEndTag() {
100 debugPrint(); // 4.0.0 (2005/02/28)
101 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL );
102
103 synchronized( lock ) {
104 if( connectionClear ) {
105 ConnectionFactory.realClose();
106 buf.append( "Connection Factory Real Closed" ).append( HybsSystem.BR );
107 System.out.println( "Connection Factory Real Closed" );
108 }
109
110 if( calendarClear ) {
111 CalendarFactory.clear(); // 3.6.0.0 (2004/09/17)
112 buf.append( "Calendar Factory Cleared" ).append( HybsSystem.BR );
113 System.out.println( "Calendar Factory Cleared" );
114 }
115
116 if( guiClear ) {
117 ResourceFactory.guiClear();
118 UserInfo userInfo = getUser();
119 userInfo.clear();
120 getResource().makeGUIInfos( userInfo );
121 buf.append( "GUIInfo Data Cleared" ).append( HybsSystem.BR );
122 System.out.println( "GUIInfo Data Cleared" );
123 }
124
125 if( userClear ) {
126 UserInfo userInfo = getUser();
127 userInfo.clear();
128 buf.append( "UserInfo Parameter Data Cleared" ).append( HybsSystem.BR );
129 System.out.println( "UserInfo Parameter Data Cleared" );
130 }
131
132 if( resourceClear ) {
133 ResourceFactory.clear();
134 SelectionFactory.clear(); // 4.0.0 (2006/11/17)
135 buf.append( "Resource Factory Cleared" ).append( HybsSystem.BR );
136 System.out.println( "Resource Factory Cleared" );
137 }
138 }
139
140 return(EVAL_PAGE);
141 }
142
143 /**
144 * タグリブオブジェクトをリリースしますã?
145 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
146 *
147 */
148 @Override
149 protected void release2() {
150 super.release2();
151 allClear = false;
152 connectionClear = false;
153 resourceClear = false;
154 guiClear = false;
155 userClear = false;
156 calendarClear = false;
157 }
158
159 /**
160 * 【TAG】すべてのキャãƒ?‚·ュãƒ??タをクリアしまã�?初期値:false)ã€?
161 *
162 * @og.tag
163 * connectionClear,resourceClear,guiClear,calendarClearの
164 * すべてをã?true に設定することと同じですã?
165 *
166 * @param flag キャãƒ?‚·ュクリア[true:すべて/false:個別]
167 */
168 public void setAllClear( final String flag ) {
169 allClear = nval( getRequestParameter( flag ),allClear );
170
171 connectionClear = connectionClear || allClear ;
172 resourceClear = resourceClear || allClear ;
173 guiClear = guiClear || allClear ;
174 userClear = userClear || allClear ;
175 calendarClear = calendarClear || allClear ;
176 }
177
178 /**
179 * 【TAG】データベã?スコネクションプã?ルのコネクションを削除(開放)しまã�?初期値:false)ã€?
180 *
181 * @og.tag ãƒ??タベã?ス操作がおかしい場合ã?、クリアしてみてくださいã€?
182 *
183 * @param flag コネクション削除するかどã�?�‹[true:する/false:しない]
184 */
185 public void setConnectionClear( final String flag ) {
186 connectionClear = nval( getRequestParameter( flag ),connectionClear );
187 }
188
189 /**
190 * 【TAG】リソースãƒ??タをクリアしまã�?初期値:false)ã€?
191 *
192 * @og.tag
193 * ユーザーリソースとシスãƒ?ƒ リソースを除くリソースキャãƒ?‚·ュ
194 * ãƒ??タをクリアしますã?
195 *
196 * @param flag リソースãƒ??タをクリアするかどã�?�‹[true:する/false:しない]
197 */
198 public void setResourceClear( final String flag ) {
199 resourceClear = nval( getRequestParameter( flag ),resourceClear );
200 }
201
202 /**
203 * 【TAG】Useræƒ??のパラメータãƒ??タをクリアしまã�?初期値:false)ã€?
204 *
205 * @og.tag
206 * Useræƒ??のパラメータãƒ??タ(GE16から読み込み)に追åŠ?更新/削除が発生したときã?ã€?
207 * キャãƒ?‚·ュをクリアするå¿?¦�がありますã?
208 * Useræƒ??のパラメータãƒ??タは、{@USER.XXXX}でアクセスできる値ではなくã?
209 * シスãƒ?ƒ パラメータ {@SYS.XXXX}としてアクセスできるユーザー個別æƒ??のことですã?
210 *
211 * @param flag パラメータãƒ??タをクリアするかどã�?�‹[true:する/false:しない]
212 */
213 public void setUserClear( final String flag ) {
214 userClear = nval( getRequestParameter( flag ),userClear );
215 }
216
217 /**
218 * 【TAG】GUIæƒ??のキャãƒ?‚·ュをクリアしまã�?初期値:false)ã€?
219 *
220 * @og.tag
221 * GUIæƒ??の追åŠ?更新/削除が発生したときã?、キャãƒ?‚·ュをクリアするå¿?¦�がありますã?
222 *
223 * @param flag GUIæƒ??キャãƒ?‚·ュをクリアするかどã�?�‹[true:する/false:しない]
224 */
225 public void setGuiClear( final String flag ) {
226 guiClear = nval( getRequestParameter( flag ),guiClear );
227 }
228
229 /**
230 * 【TAG】カレンãƒ?‚ªブジェクトã?キャãƒ?‚·ュをクリアしまã�?初期値:false)ã€?
231 *
232 * @og.tag
233 * カレンãƒ?‚ªブジェクトã?、事業æ‰?‚«レンãƒ?例:GE13)毎にオブジェクトを
234 * 作æ?しますã?キャãƒ?‚·ュに持ってã�?‚‹ため、データベã?スを更新するたã?にã€?
235 * キャãƒ?‚·ュをクリアしなおすå¿?¦�がありますã?
236 *
237 * @param flag カレンãƒ??キャãƒ?‚·ュをクリアするかどã�?�‹[true:する/false:しない]
238 */
239 public void setCalendarClear( final String flag ) {
240 calendarClear = nval( getRequestParameter( flag ),calendarClear );
241 }
242
243 /**
244 * こã?オブジェクトã?æ–?—å?表現を返しますã?
245 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
246 *
247 * @return こã?クラスのæ–?—å?表現
248 */
249 @Override
250 public String toString() {
251 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
252 .println( "VERSION" ,VERSION )
253 .println( "allClear" ,allClear )
254 .println( "connectionClear" ,connectionClear)
255 .println( "resourceClear" ,resourceClear )
256 .println( "guiClear" ,guiClear )
257 .println( "userClear" ,userClear )
258 .println( "calendarClear" ,calendarClear )
259 .println( "Other..." ,getAttributes().getAttribute() )
260 .fixForm().toString() ;
261 }
262 }