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 }