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.common.HybsSystemException;
020 import org.opengion.hayabusa.resource.GUIInfo;
021 import org.opengion.fukurou.db.Transaction;
022 import org.opengion.fukurou.db.TransactionReal;
023 import org.opengion.fukurou.util.FileUtil;
024 import org.opengion.fukurou.util.Closer ;
025 import org.opengion.fukurou.util.StringUtil;
026 import org.opengion.fukurou.xml.HybsXMLSave ;
027
028 import static org.opengion.fukurou.util.StringUtil.nval ;
029
030 import java.sql.Connection;
031
032 import java.io.File;
033 import java.io.BufferedReader;
034 import java.util.Map;
035 import java.util.HashMap;
036
037 /**
038 * æŒ?®šã?æ‹¡å¼µXDKå½¢å¼ãƒ•ァイルを直接ãƒ??タベã?スã«ç™»éŒ²ã™ã‚‹ãƒ??タ入力タグã§ã™ã?
039 *
040 * ã“ã?クラスã¯ã€ã‚ªãƒ©ã‚¯ãƒ« XDKã® oracle.xml.sql.dml.OracleXMLSave クラスã¨
041 * ã»ã¼åŒæ§˜ã?ç›®çš?§ä½¿ç”¨ã§ãã‚‹ org.opengion.fukurou.xml.HybsXMLSave ã®ãƒ©ãƒ?ƒ‘ークラスã§ã™ã?
042 * æ‹¡å¼µXDKå½¢å¼ã?XMLファイルをèªã¿è¾¼ã¿ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?ス㫠INSERT ã—ã¾ã™ã?
043 * æ‹¡å¼µXDKå½¢å¼ã?å…?¨ãªã‚?オラクル XDK(Oracle XML Developer's Kit)ã«ã¤ã?¦ã¯ã€ä»¥ä¸‹ã?
044 * リンクをå‚照願ã„ã¾ã™ã?
045 * <a href="http://otn.oracle.co.jp/software/tech/xml/xdk/index.html" target="_blank" >
046 * XDK(Oracle XML Developer's Kit)</a>
047 *
048 * ã“ã?ã‚¿ã‚°ã§ã¯ã€keys,vals を登録ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€MLファイルã«å˜åœ¨ã—ãªã?‚«ãƒ©ãƒ?‚’
049 * 追åŠ?—ãŸã‚Šã€XMLãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ??ã‚’æ›¸ãæ›ãˆã‚‹ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
050 * 例ãˆã°ã€ç™»éŒ²æ—¥ã‚??登録è€??ã¾ãŸã?ã€ãƒ†ãƒ³ãƒ—レートよりå„シスãƒ?ƒ ID毎ã«
051 * 登録ã™ã‚‹ãªã©ã§ã™ã?
052 *
053 * æ‹¡å¼µXDKå½¢å¼ã¨ã¯ã€ROW 以外ã«ã€SQL処ç?”¨ã‚¿ã‚°(EXEC_SQL)ã‚’æŒã¤ XML ファイルã§ã™ã?
054 * ã¾ãŸã?登録ã™ã‚‹ãƒ??ブル(table)ã‚?ROWSETã‚¿ã‚°ã®å±žæ?æƒ??ã¨ã—ã¦ä»˜ä¸Žã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
055 * (大æ–?—å°æ–‡å—ã«æ³¨æ„?
056 * ã“れã¯ã€ã‚ªãƒ©ã‚¯ãƒ«XDKã§å‡¦ç?™ã‚‹å?åˆã?無視ã•れã¾ã™ã?ã§ã€åŒæ§˜ã«æ‰±ã?“ã¨ãŒå?æ¥ã¾ã™ã?
057 * ã“ã?ã€EXEC_SQL ã¯ã€ãれãれã? XMLãƒ??タをデータベã?スã«ç™»éŒ²ã™ã‚‹éš›ã«ã€?
058 * SQL処ç?‚’è‡ªå‹•çš„ã«æµã™ç‚ºã®ã€SQLæ–?‚’記載ã—ã¾ã™ã?
059 * ã“ã?処ç??ã€ã‚¤ãƒ™ãƒ³ãƒˆæ¯Žã«å®Ÿè¡Œã•れる為ã€ãã®é…ç½®é ??é‡è¦ã§ã™ã?
060 * ã“ã?ã‚¿ã‚°ã¯ã€è¤?•°è¨˜è¿°ã™ã‚‹ã“ã¨ã‚‚å?æ¥ã¾ã™ãŒã€BODY部ã«ã¯ã€?¼‘ã¤ã®SQLæ–??ã¿è¨˜è¿°ã—ã¾ã™ã?
061 *
062 * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã?
063 *
064 * <ROWSET tableName="XX" >
065 * <EXEC_SQL> æœ??ã«è¨˜è¼‰ã—ã¦ã€å?期å?ç?ãƒ??タクリアç?を実行ã•ã›ã‚‹ã€?
066 * delete from GEXX where YYYYY
067 * </EXEC_SQL>
068 * <MERGE_SQL> ã“ã?SQLæ–?§ UPDATEã—ã¦ã€çµæžœãŒï¼ä»¶ãªã‚‰INSERTを行ã„ã¾ã™ã?
069 * update GEXX set AA=[AA] , BB=[BB] where CC=[CC]
070 * </MERGE_SQL>
071 * <ROW num="1">
072 * <カラ�>値1</カラ�>
073 * ?¥?¥?¥
074 * <カラ�>値n</カラ�>
075 * </ROW>
076 * ?¥?¥?¥
077 * <ROW num="n">
078 * ?¥?¥?¥
079 * </ROW>
080 * <EXEC_SQL> æœ?¾Œã«è¨˜è¼‰ã—ã¦ã€??ç›®ã®è¨å®?æ•´åˆæ?登録)を行ã†ã€?
081 * update GEXX set AA='XX' , BB='XX' where YYYYY
082 * </EXEC_SQL>
083 * <ROWSET>
084 *
085 * @og.formSample
086 * â—å½¢å¼ï¼?lt;og:directXMLSave filename="[?¥?¥?¥]" ?¥?¥?¥ />
087 * â—body?šãªã?
088 *
089 * â—Tag定義??
090 * <og:directXMLSave
091 * dbid ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)検索時ã?DB接続IDを指定ã—ã¾ã?åˆæœŸå€¤:DEFAULT)
092 * fileURL ã€TAG】èªã¿å–りå…?ƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã‚’æŒ?®šã—ã¾ã?(åˆæœŸå€¤:FILE_URL[=filetemp/])
093 * filename ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?(åˆæœŸå€¤:FILE_FILENAME[=file.xls])
094 * displayMsg ã€TAG】query ã®çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0040[ã€?»¶ç™»éŒ²ã—ã¾ã—ãŸ])
095 * keys ã€TAG】XMLファイルをèªã¿å–ã£ãŸå¾Œã§æŒ?®šã™ã‚‹ã‚ーをCSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
096 * vals ã€TAG】XMLファイルをèªã¿å–ã£ãŸå¾Œã§æŒ?®šã™ã‚‹å?ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
097 * caseKey ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚ーを指定ã—ã¾ã?åˆæœŸå€¤:null)
098 * caseVal ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
099 * caseNN ã€TAG】指定ã?値ãŒã?null/ã‚¼ãƒæ–?—å? ã§ãªã??å?Not Null=NN)ã¯ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true)
100 * caseNull ã€TAG】指定ã?値ãŒã?null/ã‚¼ãƒæ–?—å? ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true)
101 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
102 * />
103 *
104 * â—使用ä¾?
105 * <og:directXMLSave
106 * dbid = "ORCL" 接続データベã?スID(åˆæœŸå€¤:DEFAULT)
107 * fileURL = "{@USER.ID}" èªã¿å–りå…?ƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå?
108 * filename = "{@filename}" èªã¿å–りå…?ƒ•ァイルå?
109 * displayMsg = "MSG0040" 登録完äº?¾Œã?メãƒ?‚»ãƒ¼ã‚¸
110 * />
111 *
112 * @og.group ファイル入�
113 * @og.rev 4.0.0.0 (2007/03/08) æ–°è¦è¿½åŠ?
114 *
115 * @version 4.0
116 * @author Kazuhiko Hasegawa
117 * @since JDK5.0,
118 */
119 public class DirectXMLSaveTag extends CommonTagSupport {
120 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */
121 private static final String VERSION = "5.6.7.0 (2013/07/27)" ;
122
123 private static final long serialVersionUID = 567020130727L ;
124
125 private static final String ENCODE = "UTF-8";
126 // 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
127 // private String dbid = "DEFAULT";
128 private String dbid = null;
129 private String fileURL = HybsSystem.sys( "FILE_URL" ); // 4.0.0 (2005/01/31)
130 private String filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå?
131 private String displayMsg = "MSG0040"; // ã€?»¶ç™»éŒ²ã—ã¾ã—ãŸã€?
132 private String[] keys = null;
133 private String[] vals = null;
134 private long dyStart = 0; // 実行時間測定用ã®DIVè¦ç´?‚’出力ã—ã¾ã™ã?
135
136 /**
137 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
138 *
139 * @og.rev 5.6.6.1 (2013/07/12) caseKey ã€caseVal 属æ?対å¿?
140 *
141 * @return 後続å?ç??æŒ?¤º( SKIP_BODY )
142 */
143 @Override
144 public int doStartTag() {
145 // 5.6.6.1 (2013/07/12) caseKey ã€caseVal 属æ?対å¿?
146 if( useTag() ) {
147 dyStart = System.currentTimeMillis(); // 時間測定用
148 }
149 return( SKIP_BODY ); // Body を評価ã—ãªã?
150 }
151
152 /**
153 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
154 *
155 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹çµ±å? getResource().getMessage â‡?getResource().getLabel )
156 * @og.rev 4.0.0.1 (2007/12/03) try ??catch ??finally ã‚’ãã¡ã‚“ã¨è¡Œã†ã€?
157 * @og.rev 5.1.9.0 (2010/08/01) Transaction 対�
158 * @og.rev 5.3.7.0 (2011/07/01) TransactionReal ã®å¼•数変更
159 * @og.rev 5.5.2.6 (2012/05/25) findbugs対応ã?例外経路㧠null 値を利用ã™ã‚‹ã“ã¨ãŒä¿è¨¼ã•れã¦ã?¾ã™ã?
160 * @og.rev 5.6.6.1 (2013/07/12) caseKey ã€caseVal 属æ?対å¿?
161 * @og.rev 5.6.7.0 (2013/07/27) DDL?ˆãƒ‡ãƒ¼ã‚¿å®šç¾©è¨?ªžï¼šData Definition Language?‰ã?処ç?»¶æ•°è¿½åŠ?
162 *
163 * @return 後続å?ç??æŒ?¤º
164 */
165 @Override
166 public int doEndTag() {
167 debugPrint(); // 4.0.0 (2005/02/28)
168 // 5.6.6.1 (2013/07/12) caseKey ã€caseVal 属æ?対å¿?
169 if( !useTag() ) { return(EVAL_PAGE); }
170
171 BufferedReader reader = null;
172 final int insCnt ;
173 final int updCnt ;
174 final int delCnt ;
175 final int ddlCnt ; // 5.6.7.0 (2013/07/27) DDL処ç?»¶æ•°è¿½åŠ?
176 boolean errFlag = true;
177 // Connection conn = null;
178 Transaction tran = null; // 5.1.9.0 (2010/08/01) Transaction 対�
179 try {
180 // 5.1.9.0 (2010/08/01) Transaction 対�
181 TransactionTag tranTag = (TransactionTag)findAncestorWithClass( this,TransactionTag.class );
182 if( tranTag == null ) {
183 // tran = new TransactionReal( dbid,getApplicationInfo() );
184 tran = new TransactionReal( getApplicationInfo() ); // 5.3.7.0 (2011/07/01) 引数変更
185 }
186 else {
187 tran = tranTag.getTransaction();
188 }
189 // conn = ConnectionFactory.connection( dbid,getApplicationInfo() ); // 3.8.7.0 (2006/12/15)
190
191 Connection conn = tran.getConnection( dbid ); // 5.1.9.0 (2010/08/01) Transaction 対�
192 HybsXMLSave save = new HybsXMLSave( conn );
193 if( keys != null ) { save.setAfterMap( getAfterMap() ); }
194
195 reader = getBufferedReader();
196 save.insertXML( reader );
197 insCnt = save.getInsertCount();
198 updCnt = save.getUpdateCount();
199 delCnt = save.getDeleteCount();
200 ddlCnt = save.getDDLCount(); // 5.6.7.0 (2013/07/27) DDL処ç?»¶æ•°è¿½åŠ?
201 // Closer.commit( conn );
202 tran.commit(); // 5.1.9.0 (2010/08/01) Transaction 対�
203 errFlag = false; // エラーã§ã¯ãªã?
204 }
205 catch( Throwable ex ) {
206 // Closer.rollback( conn );
207 if( tran != null ) { // 5.5.2.6 (2012/05/25) findbugs対�
208 tran.rollback(); // 5.1.9.0 (2010/08/01) Transaction 対�
209 }
210 throw new HybsSystemException( ex );
211 }
212 finally {
213 if( tran != null ) { // 5.5.2.6 (2012/05/25) findbugs対�
214 tran.close( errFlag );
215 }
216 // if( errFlag ) { ConnectionFactory.remove( conn,dbid ); } // 削除
217 // else { ConnectionFactory.close( conn,dbid ); } // è¿”å´
218 // Closer.connClose( conn );
219 Closer.ioClose( reader );
220 }
221
222 // 実行件数ã®è¡¨ç¤º
223 // 4.0.0 (2005/11/30) 出力é?ã®å¤‰æ›´ã€‚ä¸?•ªæœ??ã«å‡ºåŠ›ã—ã¾ã™ã?
224 if( displayMsg != null && displayMsg.length() > 0 ) {
225 StringBuilder buf = new StringBuilder();
226 buf.append( "INS:" ).append( insCnt );
227 buf.append( " / UPD:" ).append( updCnt );
228 buf.append( " / DEL:" ).append( delCnt );
229 buf.append( " / DDL:" ).append( ddlCnt ); // 5.6.7.0 (2013/07/27) DDL処ç?»¶æ•°è¿½åŠ?
230 // buf.append( getResource().getMessage( displayMsg ) );
231 buf.append( getResource().getLabel( displayMsg ) );
232 buf.append( HybsSystem.BR );
233
234 jspPrint( buf.toString() );
235 }
236
237 // 時間測定用㮠DIV è¦ç´?‚’出åŠ?
238 long dyTime = System.currentTimeMillis()-dyStart;
239 jspPrint( "<div id=\"queryTime\" value=\"" + (dyTime) + "\"></div>" ); // 3.5.6.3 (2004/07/12)
240
241 // 4.0.0 (2005/01/31) ã‚»ã‚ュリãƒ?‚£ãƒã‚§ãƒ?‚¯(ãƒ??タアクセス件数登録)
242 GUIInfo guiInfo = (GUIInfo)getSessionAttribute( HybsSystem.GUIINFO_KEY );
243 if( guiInfo != null ) { guiInfo.addWriteCount( insCnt,dyTime,fileURL + filename ); }
244
245 return(EVAL_PAGE);
246 }
247
248 /**
249 * タグリブオブジェクトをリリースã—ã¾ã™ã?
250 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã?
251 *
252 * @og.rev 4.0.0.0 (2007/10/10) dbid ã®åˆæœŸå€¤ã‚’ã?"DEFAULT" ã‹ã‚‰ null ã«å¤‰æ›´
253 */
254 @Override
255 protected void release2() {
256 super.release2();
257 // dbid = "DEFAULT";
258 dbid = null;
259 fileURL = HybsSystem.sys( "FILE_URL" ); // 4.0.0 (2005/01/31)
260 filename = HybsSystem.sys( "FILE_FILENAME" ); // ファイルå?
261 displayMsg = "MSG0040"; // ã€?»¶ç™»éŒ²ã—ã¾ã—ãŸã€?
262 keys = null;
263 vals = null;
264 }
265
266 /**
267 * BufferedReader ã‚’å–å¾—ã—ã¾ã™ã?
268 *
269 * ã“ã“ã§ã¯ã€ä¸?ˆ¬çš?ªãƒ•ァイル出力をè€??ã—㟠BufferedReader を作æ?ã—ã¾ã™ã?
270 *
271 * @return ファイル入力用BufferedReaderオブジェク�
272 */
273 private BufferedReader getBufferedReader() {
274 if( filename == null ) {
275 String errMsg = "ファイルåãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?;
276 throw new HybsSystemException( errMsg );
277 }
278 String directory = HybsSystem.url2dir( fileURL );
279 File file = new File( StringUtil.urlAppend( directory,filename ) );
280
281 BufferedReader out = FileUtil.getBufferedReader( file,ENCODE );
282
283 return out ;
284 }
285
286 /**
287 * BufferedReader ã‚’å–å¾—ã—ã¾ã™ã?
288 *
289 * ã“ã“ã§ã¯ã€ä¸?ˆ¬çš?ªãƒ•ァイル出力をè€??ã—㟠BufferedReader を作æ?ã—ã¾ã™ã?
290 *
291 * @og.rev 5.6.6.1 (2013/07/12) key ã?null ã‚?ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€Map ã«è¿½åŠ?—ã¾ã›ã‚“ã€?
292 *
293 * @return ファイル入力用BufferedReader
294 */
295 private Map<String,String> getAfterMap() {
296 Map<String,String> map = new HashMap<String,String>();
297
298 for( int i=0; i<keys.length; i++ ) {
299 if( keys[i] != null && keys[i].length() > 0 ) { // 5.6.6.1 (2013/07/12)
300 map.put( keys[i],vals[i] );
301 }
302 }
303 return map ;
304 }
305
306 /**
307 * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)検索時ã?DB接続IDを指定ã—ã¾ã?åˆæœŸå€¤:DEFAULT)ã€?
308 *
309 * @og.tag
310 * 検索時ã?DB接続IDを指定ã—ã¾ã™ã?åˆæœŸå€¤ã¯ã€DEFAULT ã§ã™ã?
311 *
312 * @param id ãƒ??タベã?ス接続ID
313 */
314 public void setDbid( final String id ) {
315 dbid = nval( getRequestParameter( id ),dbid );
316 }
317
318 /**
319 * ã€TAG】èªã¿å–りå…?ƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã‚’æŒ?®šã—ã¾ã?
320 * (åˆæœŸå€¤:FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
321 *
322 * @og.tag
323 * ã“ã?属æ?ã§æŒ?®šã•れるãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã‚ˆã‚Šã€ãƒ•ァイルをèªã¿å–りã¾ã™ã?
324 * æŒ?®šæ–¹æ³•ã?ã€??常㮠fileURL 属æ?ã¨åŒæ§˜ã«ã€å?é ãŒã?'/' (UNIX) ã¾ãŸã?ã€?¼’æ–‡å—ç›®ãŒã?
325 * ":" (Windows)ã®å ´åˆã?ã€æŒ‡å®šã?URLãã?ã¾ã¾ã®ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã€ãã?§ãªã??åˆã?ã€?
326 * fileURL = "{@USER.ID}" ã¨æŒ?®šã™ã‚‹ã¨ã€FILE_URL 属æ?ã§æŒ?®šã?フォルãƒ??下ã«ã€?
327 * ã•らã«ã€å„個人ID別ã®ãƒ•ォルãƒ??下よりã?èªã¿å–りã¾ã™ã?
328 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
329 *
330 * @og.rev 4.0.0.0 (2007/11/20) æŒ?®šã•れãŸãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªåã?æœ?¾ŒãŒ"\"or"/"ã§çµ‚ã‚ã£ã¦ã?ªã??åˆã«ã€?/"ã‚’ä»˜åŠ ã™ã‚‹ã€?
331 *
332 * @param url ファイルURL
333 * @see org.opengion.hayabusa.common.SystemData#FILE_URL
334 */
335 public void setFileURL( final String url ) {
336 String furl = nval( getRequestParameter( url ),null );
337 if( furl != null ) {
338 char ch = furl.charAt( furl.length()-1 );
339 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
340 fileURL = StringUtil.urlAppend( fileURL,furl );
341 }
342 }
343
344 /**
345 * ã€TAG】ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã?
346 * (åˆæœŸå€¤:FILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])ã€?
347 *
348 * @og.tag
349 * ファイルを作æ?ã™ã‚‹ã¨ãã?ファイルåã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
350 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®FILE_FILENAME[={@og.value org.opengion.hayabusa.common.SystemData#FILE_FILENAME}])ã€?
351 *
352 * @param filename ファイルå?
353 * @see org.opengion.hayabusa.common.SystemData#FILE_FILENAME
354 */
355 public void setFilename( final String filename ) {
356 this.filename = nval( getRequestParameter( filename ),this.filename );
357 }
358
359 /**
360 * ã€TAG】query ã®çµæžœã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0040[ã€?»¶ç™»éŒ²ã—ã¾ã—ãŸ])ã€?
361 *
362 * @og.tag
363 * ã“ã“ã§ã¯ã€æ¤œç´¢çµæžœã®ä»¶æ•°ã‚?™»éŒ²ã•れãŸä»¶æ•°ã‚’ã¾ãšå?力ã—ã€?
364 * ãã?次ã«ã€ã“ã“ã§æŒ?®šã—ãŸãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’リソースã‹ã‚‰å–å¾—ã—ã¦
365 * 表示ã—ã¾ã™ã?
366 * 表示ã•ã›ãŸããªã??åˆã?, displayMsg = "" ã‚’ã‚»ãƒ?ƒˆã—ã¦ãã ã•ã„ã€?
367 * åˆæœŸå€¤ã¯ã€æ¤œç´¢ä»¶æ•°ã‚’表示ã—ã¾ã™ã?
368 * ※ ã“ã?属æ?ã«ã¯ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°({@XXXX})ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ã€?
369 *
370 * @param id ãƒ?‚£ã‚¹ãƒ—レイã«è¡¨ç¤ºã•ã›ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ ID
371 */
372 public void setDisplayMsg( final String id ) {
373 if( id != null ) { displayMsg = id; }
374 }
375
376 /**
377 * ã€TAG】XMLファイルをèªã¿å–ã£ãŸå¾Œã§æŒ?®šã™ã‚‹ã‚ーをCSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
378 *
379 * @og.tag
380 * XMLファイルをèªã¿å–ã£ãŸå¾Œã§ã€ãƒ‡ãƒ¼ã‚¿ã‚’変更ã§ãã¾ã™ã?
381 * 変更ã™ã‚‹ã‚«ãƒ©ãƒ?(ã‚ー)ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
382 * XMLファイルã«ã‚ーãŒå˜åœ¨ã—ã¦ã?Ÿå ´åˆã?ã€vals ã§æŒ?®šã?å€¤ã«æ›¸ãæ›ãˆã¾ã™ã?
383 * ã‚ーãŒå˜åœ¨ã—ã¦ã?ªã??åˆã?ã€ã“ã“ã§æŒ?®šã™ã‚‹ã‚ーã¨å€¤ãŒã?ãƒ??ã‚¿ã¨ã—ã¦
384 * 追åŠ?•れã¾ã™ã?
385 * 例ãˆã°ã€ç™»éŒ²æ—¥ã‚??登録è€??ã¾ãŸã?ã€ãƒ†ãƒ³ãƒ—レートよりå„シスãƒ?ƒ ID毎ã«
386 * 登録ã™ã‚‹ãªã©ã®ä½¿ã?–¹ã‚’想定ã—ã¦ã?¾ã™ã?
387 * åˆ?§£æ–¹æ³•ã?ã€CSV変数をå?ã«åˆ?§£ã—ã¦ã‹ã‚‰ã€getRequestParameter ã§å€¤ã‚’å–å¾—ã—ã¾ã™ã?
388 * ã“ã†ã—ãªã?¨ãƒ??タ自身ã«ã‚«ãƒ³ãƒžã‚’æŒã£ã¦ã?‚‹å ´åˆã«åˆ?§£ã‚’ミスる為ã§ã™ã?
389 *
390 * @param key ãƒªãƒ³ã‚¯å…ˆã«æ¸¡ã™ã‚ー
391 * @see #setVals( String )
392 */
393 public void setKeys( final String key ) {
394 keys = getCSVParameter( key );
395 }
396
397 /**
398 * ã€TAG】XMLファイルをèªã¿å–ã£ãŸå¾Œã§æŒ?®šã™ã‚‹å?ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã?
399 *
400 * @og.tag
401 * XMLファイルをèªã¿å–ã£ãŸå¾Œã§ã€ãƒ‡ãƒ¼ã‚¿ã‚’変更ã§ãã¾ã™ã?
402 * 変更ã™ã‚‹å€¤ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
403 * XMLファイルã«ã‚ーãŒå˜åœ¨ã—ã¦ã?Ÿå ´åˆã?ã€vals ã§æŒ?®šã?å€¤ã«æ›¸ãæ›ãˆã¾ã™ã?
404 * ã‚ーãŒå˜åœ¨ã—ã¦ã?ªã??åˆã?ã€ã“ã“ã§æŒ?®šã™ã‚‹ã‚ーã¨å€¤ãŒã?ãƒ??ã‚¿ã¨ã—ã¦
405 * 追åŠ?•れã¾ã™ã?
406 * 例ãˆã°ã€ç™»éŒ²æ—¥ã‚??登録è€??ã¾ãŸã?ã€ãƒ†ãƒ³ãƒ—レートよりå„シスãƒ?ƒ ID毎ã«
407 * 登録ã™ã‚‹ãªã©ã®ä½¿ã?–¹ã‚’想定ã—ã¦ã?¾ã™ã?
408 * åˆ?§£æ–¹æ³•ã?ã€CSV変数をå?ã«åˆ?§£ã—ã¦ã‹ã‚‰ã€getRequestParameter ã§å€¤ã‚’å–å¾—ã—ã¾ã™ã?
409 * ã“ã†ã—ãªã?¨ãƒ??タ自身ã«ã‚«ãƒ³ãƒžã‚’æŒã£ã¦ã?‚‹å ´åˆã«åˆ?§£ã‚’ミスる為ã§ã™ã?
410 *
411 * @param val keys属æ?ã«å¯¾å¿œã™ã‚‹å?
412 * @see #setKeys( String )
413 */
414 public void setVals( final String val ) {
415 vals = getCSVParameter( val );
416 }
417
418 /**
419 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
420 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
421 *
422 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?表ç¾
423 */
424 @Override
425 public String toString() {
426 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
427 .println( "VERSION" ,VERSION )
428 .println( "dbid" ,dbid )
429 .println( "fileURL" ,fileURL )
430 .println( "filename" ,filename )
431 .println( "displayMsg" ,displayMsg )
432 .println( "dyStart" ,dyStart )
433 .println( "Other..." ,getAttributes().getAttribute() )
434 .fixForm().toString() ;
435 }
436 }