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.hayabusa.resource.ResourceManager;
020 import org.opengion.hayabusa.resource.ResourceFactory;
021
022 import static org.opengion.fukurou.util.StringUtil.nval ;
023
024 import javax.servlet.jsp.PageContext;
025
026 /**
027 * ローカルリソースを構築しま?有効?は、?ージスコー????
028 *
029 * ペ?ジスコープ?で使用されます?で、主に、?ージ先?にて、ローカルリソースの
030 * 設定を行います?そ?ペ?ジ?は、ここで定義した ResourceManager が使用されます?
031 * これは、シス?IDの異なる画面を?リソースを?離した形で使用できるようになります?
032 * 例えば、systemId="ZY" のシス?に、systemId="MR" の画面を?込??合に?
033 * そ?画面で?MR" のリソースをそのままそ?画面に適用することで、同?ラ?に
034 * 対して、異な?そ?画面?、特別な)リソースを適用することが?来ます?
035 *
036 * @og.formSample
037 * ●形式?lt;og:localResource systemId="GE" lang="zh" initLoad="false" />
038 * ●body?な?
039 *
040 * ●Tag定義??
041 * <og:localResource
042 * systemId 【TAG】ローカルリソース設定用のシス?ID をセ?しま?
043 * lang 【TAG】ローカルリソースを構築する?合?、??lang)を指定しま?
044 * initLoad 【TAG】リソース??の先読み込みの可否をセ?しま?初期値:false)
045 * remove 【TAG】?ージスコープ?のResourceManager を削除しま?初期値:false)
046 * debug 【TAG】デバッグ??を?力するかど?[true/false]を指定しま?初期値:false)
047 * />
048 *
049 * ●使用?
050 * こ?設定以降?ペ?ジにローカルリソースを適用します?
051 * ・<og:localResource
052 * systemId ="GE" シス?ID
053 * lang ="zh" ??ja,en,zh)
054 * initLoad ="false" 初期読み込み可否(true:先読み込みする/false:しな?
055 * />
056 *
057 * ペ?ジの途中でローカルリソースを??ます?
058 * ・<og:localResource
059 * remove ="true" ペ?ジスコープ?のResourceManager を削除します?
060 * />
061 *
062 * @og.group 画面制御
063 *
064 * @version 4.0
065 * @author Kazuhiko Hasegawa
066 * @since JDK5.0,
067 */
068 public class LocalResourceTag extends CommonTagSupport {
069 //* こ?プログラ??VERSION??を設定します? {@value} */
070 private static final String VERSION = "4.0.0.0 (2005/01/31)" ;
071
072 private static final long serialVersionUID = 400020050131L ;
073
074 private String systemId = null; // シス?ID
075 private String lang = null; // ??
076 private boolean initLoad = false; // リソース初期読み込み可否(true:先読み込みする)
077 private boolean remove = false; // ペ?ジスコープ?のリソースを削除します?
078
079 /**
080 * Taglibの終?グが見つかったときに処??doEndTag() ?オーバ?ライドします?
081 *
082 * @return 後続????
083 */
084 @Override
085 public int doEndTag() {
086 debugPrint(); // 4.0.0 (2005/02/28)
087 if( remove ) {
088 pageContext.removeAttribute( HybsSystem.LOCAL_RES_KEY,PageContext.PAGE_SCOPE );
089 }
090 else {
091 lang = nval( lang,getLanguage() );
092
093 final ResourceManager resource ;
094 if( systemId == null ) {
095 resource = ResourceFactory.newInstance( lang );
096 }
097 else {
098 resource = ResourceFactory.newInstance( systemId,lang,initLoad );
099 }
100
101 pageContext.setAttribute( HybsSystem.LOCAL_RES_KEY,resource );
102 }
103
104 return(EVAL_PAGE);
105 }
106
107 /**
108 * タグリブオブジェクトをリリースします?
109 * キャ?ュされて再利用される?で、フィールド?初期設定を行います?
110 *
111 */
112 @Override
113 protected void release2() {
114 super.release2();
115 systemId = null;
116 lang = null;
117 initLoad = false;
118 remove = false;
119 }
120
121 /**
122 * 【TAG】ローカルリソース設定用のシス?ID をセ?します?
123 *
124 * @og.tag
125 * こ?シス?IDを利用して、ResourceManager を構築します?
126 * ??な??合?、シス?プロパティーの SYSTEM_ID パラメータ値です?
127 *
128 * @og.rev 4.0.0.0 (2005/01/31) 新規追?
129 *
130 * @param sysId シス?ID
131 */
132 public void setSystemId( final String sysId ) {
133 systemId = nval( getRequestParameter( sysId ),systemId );
134 }
135
136 /**
137 * 【TAG】ローカルリソースを構築する?合?、??lang)を指定します?
138 *
139 * @og.tag ここで?を?しな??合?、language 属?が使用されます?
140 *
141 * @param lng ??
142 */
143 public void setLang( final String lng ) {
144 lang= nval( getRequestParameter( lng ),lang );
145 }
146
147 /**
148 * 【TAG】リソース??の先読み込みの可否をセ?しま?初期値:false)?
149 *
150 * @og.tag
151 * リソース??は、FGLOADフラグ?1'の??を?読み込みします?
152 * ローカルリソースは、?リソースを使用することはな?め?通常?
153 * 先読み込みする??ありません。また??読み込んだリソースは?
154 * ?でキャ?ュされるため???の使用時?み、DBアクセスが発生します?
155 * (先読み込みは、Tomcat起動時の、?めてのアクセス時に行われます?)
156 * 初期値は、?読みしな?false)です?
157 *
158 * @og.rev 4.0.0.0 (2005/01/31) 新規追?
159 *
160 * @param inLoad リソース??タの先読み可否(false:先読みしな?
161 */
162 public void setInitLoad( final String inLoad ) {
163 initLoad = nval( getRequestParameter( inLoad ),initLoad );
164 }
165
166 /**
167 * 【TAG】?ージスコープ?のResourceManager を削除しま?初期値:false)?
168 *
169 * @og.tag
170 * ペ?ジスコープ?のResourceManager を削除すると、?期化されます?
171 * これは、?ージ??部?にリソースを適用する場合に、使用します?
172 * 初期値は、削除しな?false)です?
173 *
174 * @og.rev 4.0.0.0 (2005/01/31) 新規追?
175 *
176 * @param flag リソースの削除(初期値:削除しな?
177 */
178 public void setRemove( final String flag ) {
179 remove = nval( getRequestParameter( flag ),remove );
180 }
181
182 /**
183 * こ?オブジェクト???表現を返します?
184 * 基本???目?使用します?
185 *
186 * @return こ?クラスの??表現
187 */
188 @Override
189 public String toString() {
190 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
191 .println( "VERSION" ,VERSION )
192 .println( "systemId" ,systemId )
193 .println( "lang" ,lang )
194 .println( "initLoad" ,initLoad )
195 .println( "remove" ,remove )
196 .println( "Other..." ,getAttributes().getAttribute() )
197 .fixForm().toString() ;
198 }
199 }