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 }