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 static org.opengion.fukurou.util.StringUtil.nval;
019
020 import java.io.File;
021 import java.io.IOException;
022 import java.util.Arrays;
023 import java.util.List;
024 import java.util.ArrayList;
025
026 import javax.servlet.http.HttpServletRequest;
027
028 import org.opengion.fukurou.util.StringUtil;
029 import org.opengion.hayabusa.common.HybsSystem;
030 import org.opengion.hayabusa.common.HybsSystemException;
031 import org.opengion.hayabusa.db.DBColumn;
032 import org.opengion.hayabusa.db.DBTableModel;
033 import org.opengion.hayabusa.db.DBTableModelUtil;
034 import org.opengion.hayabusa.servlet.MultipartRequest;
035 import org.opengion.hayabusa.servlet.UploadedFile;
036
037 /**
038 * クライアントã?ファイルをサーバã?にアãƒ??ロードするタグですã?
039 *
040 * アãƒ??ロード後ã?属æ?は、DBTableModel に格納することによりã€??常のãƒ??タと
041 * 同様ã?取り出し方が可能ですã?
042 * またã?通常のファイルアãƒ??ロード時の、form で使用する、enctype="multipart/form-data"
043 * を指定したå?合ã?、他ã?リクエスト情報もã?{@XXXX} 変数で取り出すことが可能ですã?
044 *
045 * こã? upload タグでは、アãƒ??ロード後に、指定ã?ファイル名に変更する機è?がありますã?
046 * file 登録ãƒ?‚¤アログでæŒ?®šしã�?name にã€?_NEW" とã�?�†名称を付けたリクエストå?ã‚?
047 * ファイルのアãƒ??ロードと同時に送信することで、この名前にファイルを付け替えますã?
048 * またã?アãƒ??ロード後ã?ファイル名ã?、name æŒ?®šã?名称で、取りå?せますã?
049 * クライアントから登録したオリジナルのファイル名ã?、name にã€?_ORG" とã�?�†名称
050 * で取り出すことが可能ですã?
051 *
052 * 通常では、これらのパラメータをã?RequestAttribute 変数にセãƒ?ƒˆしますã?で、{@XXXX}で
053 * 取り出すことが可能になりますã?さらにã€?KEY","VALUE","ISFILE" のカラãƒ?‚’持ったã?
054 * DBTableModel にセãƒ?ƒˆしますã?
055 *
056 * 新機è?として、columns を指定する事で、columns のカラãƒ?‚’持つ DBTableModel にセãƒ?ƒˆしますã?
057 * そã?場合ã?、カラãƒ?��_01 ??カラãƒ?��_99 のように、アンãƒ??バã?で列データとなるキーを定義してくださいã€?
058 * アンãƒ??バã?がなã�??合ã?、カラãƒ?� け作æ?されますã?カラãƒ?��と同じリクエストがあればã€?
059 * すべてのレコードに同じ値がセãƒ?ƒˆされますã?
060 *
061 * 新ファイル名に拡張子が設定されてã�?�ªã�??合ã?、オリジナルファイル名ã?拡張子をセãƒ?ƒˆしますã?
062 *
063 * HTML5 の type="file" 時ã? multiple 属æ??ˆアãƒ??ロードファイルのè¤?•°選択機è??‰に対応しますã?(5.7.1.1 (2013/12/13))
064 * そã?場合ã?、新しいファイル名への変更はできません。オリジナルのファイル名でアãƒ??ロードされまã�?
065 *
066 * 5.7.1.2 (2013/12/20) zip 対å¿?
067 * filename 属æ?にã€?.zip" の拡張子ã?ファイル名をæŒ?®šしたå?合ã?、アãƒ??ロードされたä¸??のファイルã‚?
068 * ZIP圧縮しますã?これは、アãƒ??ロード後ã?処ç�?�«なりますã?
069 * ZIP圧縮のオリジナルファイルは、そのまま残りますã?
070 * なおã?ZIPファイルは、useBackup属æ?ã‚?true に設定してもã?無関係に、上書きされますã?
071 *
072 * 5.7.4.3 (2014/03/28) filename 属æ?のリクエスト変数対å¿?
073 * filename 属æ?のみ、{@XXXX} のリクエスト変数が使えるようにしますã?
074 * 他ã?パラメータでは使えませんã€?
075 * これは、multipart/form-data のリクエストでは、パートã?åˆ?§£処ç�?‚’しなã�?�¨、リクエスト変数ã�?
076 * 拾えなã�?‚º、リクエスト変数は、この、upload タグ以降でのみ利用可能でしたã€?
077 * zip対応と関連付けて、filename 属æ?のみ、利用できるように、MultipartRequest 側の処ç�?�«çµ?�¿込みますã?
078 *
079 * 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
080 * 個ã?にæŒ?®šしたアãƒ??ロードファイル名ã?、XXX_NEW ã‚?XXX_ORG で取得できますがã€?
081 * HTML5 の multiple 属æ?使用時や、アãƒ??ロードされたファイルをä¸??で処ç�?�—たい場合に
082 * ファイル名を、CSV形式で取り出せるようにしますã?
083 * キーは、å?通で、UPLOAD_FILES としますã?
084 *
085 * @og.formSample
086 * ●形式ï¼?lt;og:upload fileURL="…" maxPostSize="…" />
087 * ●body?šなã�?
088 *
089 * ●Tag定義??
090 * <og:upload
091 * fileURL 【TAG】ファイルをアãƒ??ロードするディレクトリを指定しまã�?(初期値:FILE_URL[=filetemp/])
092 * filename 【TAGã€?通常使ã�?�¾せん)ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしまã�?
093 * maxPostSize 【TAG】最大転送サイズ(Byte)を指定しまã�?初期値:10485760) 0,またã?マイナスで無制限ですã?
094 * scope 【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
095 * tableId 【TAGã€?通常使ã�?�¾せん)sessionからæ‰?¾—すã‚?DBTableModelオブジェクトã? ID
096 * columns 【TAG】DBTableModel作æ?時に、指定ã?カラãƒ??"_01"??_99"の添え字をレコードとして作æ?しますã?
097 * useBackup 【TAG】ファイルアãƒ??ロード時に、すでに同名のファイルが存在した場合に、バãƒ?‚¯アãƒ??処ç�?renameTo)するかどã�?�‹[true/false]を指定しまã�?初期値:false)
098 * language 【TAG】タグå†?ƒ¨で使用するè¨?ªžコード[ja/en/zh/…]を指定しまã�?
099 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
100 * />
101 *
102 * ●使用ä¾?:
103 * 【query.jspã€?
104 * <form method="POST" action="result.jsp" enctype="multipart/form-data" target="RESULT">
105 * <table summary="layout" >
106 * <tr><og:input type="text" name="submitter" value="{@USER.JNAME}" size="20" lbl="MSG0014" /></tr>
107 * <tr>
108 * <og:input type="file" name="file_01" size="30" lbl="MSG0015" />
109 * <og:input name="file_01_NEW" size="10" lbl="FILENAME" />
110 * </tr><tr>
111 * <og:input type="file" name="file_02" size="30" lbl="MSG0015" />
112 * <og:input name="file_02_NEW" size="10" lbl="FILENAME" />
113 * </tr><tr>
114 * <og:input type="file" name="file_03" size="30" lbl="MSG0015" />
115 * <og:input name="file_03_NEW" size="10" lbl="FILENAME" />
116 * </tr><tr>
117 * <og:column name="writable" value="false" />
118 * </tr>
119 * </table>
120 *
121 * 【result.jspã€?
122 * <og:upload
123 * fileURL = "{@USER.ID}"
124 * />
125 * <br />
126 * <og:message lbl="MSG0003" comment="ファイルの登録が完äº?�—ましたã€? />
127 *
128 * <og:view
129 * command = "NEW"
130 * viewFormType = "HTMLTable"
131 * writable = "{@writable}"
132 * />
133 *
134 * <table>
135 * <tr><og:input name="submitter" value="{@submitter}" /></tr>
136 * <tr><og:input name="writable" value="{@writable}" /></tr>
137 * <tr><og:input name="directory" value="{@directory}" /></tr>
138 * <tr><og:input name="file_01" value="{@file_01}" /></tr>
139 * <tr><og:input name="file_01_NEW" value="{@file_01_NEW}" /></tr>
140 * <tr><og:input name="file_01_ORG" value="{@file_01_ORG}" /></tr>
141 * <tr><og:input name="file_02" value="{@file_02}" /></tr>
142 * <tr><og:input name="file_02_NEW" value="{@file_02_NEW}" /></tr>
143 * <tr><og:input name="file_02_ORG" value="{@file_02_ORG}" /></tr>
144 * <tr><og:input name="file_03" value="{@file_03}" /></tr>
145 * <tr><og:input name="file_03_NEW" value="{@file_03_NEW}" /></tr>
146 * <tr><og:input name="file_03_ORG" value="{@file_03_ORG}" /></tr>
147 * </table>
148 *
149 * 【result.jspã€?
150 * <og:upload
151 * fileURL = "{@USER.ID}"
152 * columns = "submitter,file"
153 * />
154 * <br />
155 * <og:message lbl="MSG0003" comment="ファイルの登録が完äº?�—ましたã€? />
156 *
157 * <og:view
158 * command = "NEW"
159 * viewFormType = "HTMLTable"
160 * writable = "{@writable}"
161 * />
162 *
163 * @og.group ファイル入åŠ?
164 *
165 * @version 4.0
166 * @author Kazuhiko Hasegawa
167 * @since JDK5.0,
168 */
169 public class FileUploadTag extends CommonTagSupport {
170 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
171 private static final String VERSION = "5.7.6.3 (2014/05/23)" ;
172
173 private static final long serialVersionUID = 576320140523L ;
174
175 /** 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆのキー */
176 public static final String UPLOAD_FILES = "UPLOAD_FILES" ;
177
178 // 3.5.2.0 (2003/10/20) カラãƒ?��に、ISFILEを追åŠ??
179 private static final String[] names = new String[] { "KEY","VALUE","ISFILE" };
180 private static final String ENCODE = "UTF-8"; // 3.5.2.0 (2003/10/20) å»?¢
181 private String fileURL = HybsSystem.sys( "FILE_URL" );
182 private String filename = null; // 3.5.4.2 (2003/12/15)
183
184 private int maxPostSize = 10*1024*1024; // æœ?¤§ファイル容é‡? 10MB
185 private String tableId = HybsSystem.TBL_MDL_KEY ;
186
187 // 5.6.5.2 (2013/06/21) DBTableModel作æ?時に、指定ã?カラãƒ??"_01"??_99"の添え字をレコードとして作æ?しますã?
188 private String columns = null;
189 // 5.6.5.3 (2013/06/28) ファイルアãƒ??ロード時に、すでに同名のファイルが存在した場合に、バãƒ?‚¯アãƒ??処ç�?renameTo)するかどã�?�‹[true/false]を指定しまã�?初期値:false)
190 private boolean useBackup = false;
191
192 /**
193 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
194 *
195 * @og.rev 2.2.0.0 (2002/12/17) 中国èª?国際化)対å¿?エンコードã?取得方法変更
196 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
197 * @og.rev 3.1.3.0 (2003/04/10) UTF-8 決め打ちのエンコード情報を取得するã?
198 * @og.rev 3.5.2.0 (2003/10/20) scope 属æ?を追åŠ??
199 * @og.rev 3.5.4.2 (2003/12/15) ファイル名をæŒ?®šできるようにしますã?
200 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェãƒ?‚¯を行いますã?
201 * @og.rev 3.7.1.1 (2005/05/23) フォルãƒ?�Œなã�??合ã?、è¤?•°階層åˆ??フォルãƒ?‚’自動で作æ?しますã?
202 * @og.rev 3.8.1.3A (2006/01/30) 新ファイル名にオリジナルファイル名ã?拡張子をセãƒ?ƒˆしまã�?
203 * @og.rev 5.3.7.0 (2011/07/01) エラーメãƒ?‚»ージå†?®¹変更
204 * @og.rev 5.6.5.2 (2013/06/21) columns 属æ?の追åŠ?
205 * @og.rev 5.6.5.3 (2013/06/28) useBackup 属æ?の追åŠ?
206 *
207 * @return 後続å?ç�??æŒ?¤º
208 */
209 @Override
210 public int doEndTag() {
211 debugPrint(); // 4.0.0 (2005/02/28)
212 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19)
213 HttpServletRequest request = (HttpServletRequest)getRequest();
214
215 try {
216 String directory = HybsSystem.url2dir( fileURL );
217 File dir = new File(directory);
218 if( ! dir.exists() && ! dir.mkdirs() ) {
219 String errMsg = "ãƒ?‚£レクトリの作æ?に失敗しましたã€?" + directory + "]";
220 throw new HybsSystemException( errMsg );
221 }
222
223 // 3.8.1.3A (2006/01/30) 新ファイル名にオリジナルファイル名ã?拡張子をセãƒ?ƒˆしまã�?
224 // MultipartRequest multi = new MultipartRequest( request,directory,maxPostSize,ENCODE,filename );
225 // 5.6.5.3 (2013/06/28) useBackup 属æ?の追åŠ?
226 MultipartRequest multi = new MultipartRequest( request,directory,maxPostSize,ENCODE,filename,useBackup );
227 // 5.6.5.2 (2013/06/21) columns 属æ?の追åŠ?
228 // DBTableModel table = makeDBTable( multi );
229 DBTableModel table = null;
230 if( columns == null ) { // 5.6.5.2 (2013/06/21) columns 属æ?の追åŠ?
231 table = makeDBTable( multi );
232 }
233 else {
234 table = makeDBTableFromClms( multi );
235 }
236
237 // 3.5.2.0 (2003/10/20) scope 属æ?を追åŠ??
238 // 3.6.0.8 (2004/11/19) トランザクションチェãƒ?‚¯を行いますã?
239 if( ! commitTableObject( tableId, table ) ) {
240 jspPrint( "FileUploadTag Query処ç�?�Œ割り込まれましたã€?BTableModel は登録しませんã€? );
241 return (SKIP_PAGE);
242 }
243
244 } catch(IOException ex) {
245 // String errMsg = "ファイルの取り扱ã�?¸にエラーが発生しましたã€?
246 // + toString() + HybsSystem.CR
247 // + "FileURL=" + fileURL + HybsSystem.CR
248 // + ex.getMessage(); // 5.1.8.0 (2010/07/01) errMsg 修正
249 String errMsg = "ファイル登録エラー??
250 + ex.getMessage() + HybsSystem.CR // 5.3.7.0 (2011/07/01) errMsg 修正
251 + "(" + toString() + HybsSystem.CR
252 + "FileURL=" + fileURL + ")";
253 throw new HybsSystemException( errMsg,ex ); // 3.5.5.4 (2004/04/15) 引数の並びé ?¤‰更
254 }
255
256 return(EVAL_PAGE);
257 }
258
259 /**
260 * タグリブオブジェクトをリリースしますã?
261 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
262 *
263 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
264 * @og.rev 3.0.1.1 (2003/03/06) columns をå»?¢
265 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
266 * @og.rev 3.5.4.2 (2003/12/15) ファイル名をæŒ?®šできるようにしますã?
267 * @og.rev 5.6.5.2 (2013/06/21) columns 属æ?の追åŠ?
268 * @og.rev 5.6.5.2 (2013/06/21) useBackup 属æ?の追åŠ?
269 *
270 */
271 @Override
272 protected void release2() {
273 super.release2();
274 fileURL = HybsSystem.sys( "FILE_URL" );
275 maxPostSize = 10*1024*1024; // æœ?¤§ファイル容é‡? 10MB
276 tableId = HybsSystem.TBL_MDL_KEY ;
277 filename = null; // 3.5.4.2 (2003/12/15)
278 columns = null; // 5.6.5.2 (2013/06/21)
279 useBackup = false; // 5.6.5.3 (2013/06/28)
280 }
281
282 /**
283 * ファイルアãƒ??ロードã?実行結果ã‚?DBTableModel に記述しますã?
284 *
285 * ここではã€?KEY","VALUE","ISFILE" のカラãƒ?�«対して、å?を設定してã�?��ますã?
286 * 同時に、RequestAttribute 変数に、これらの値をセãƒ?ƒˆすることでã€?
287 * {@XXXX} で値が取りå?せる様にしてã�?�¾すã?
288 *
289 * @og.rev 2.2.0.0 (2002/12/17) 中国èª?国際化)対å¿?エンコードã?取得方法変更
290 * @og.rev 3.0.1.1 (2003/03/06) request æƒ??から{@XXXX} で値が取りå?せる様に修正ã€?
291 * @og.rev 3.5.2.0 (2003/10/20) カラãƒ?��(KEY,VALUE)に ISFILE を追åŠ?
292 * @og.rev 3.5.6.5 (2004/08/09) MultipartRequest 変更に伴なã�?¿®正(Enum変更、å?ファイル名取å¾?
293 * @og.rev 3.5.6.6 (2004/08/23) 上記変更時ã?バグ修正ã€?
294 * @og.rev 3.5.6.6 (2004/08/23) å…?ƒ•ァイルのキーをã?XXXX_ORG にしますã?
295 * @og.rev 4.0.0.0 (2007/10/12) ãƒ??ブルモãƒ?ƒ«の登録方法を変更
296 * @og.rev 5.3.2.0 (2011/02/01) チェãƒ?‚¯行ã?パラメーターはint配å?側に変換して復å…?�™るã?パラメーター名を保存するã?
297 * @og.rev 5.4.4.2 (2012/02/03) CommonTagSupportと同様ã?チェãƒ?‚¯ボックス判定を行う
298 * @og.rev 5.7.1.1 (2013/12/13) HTML5 ファイルアãƒ??ロードã?è¤?•°選択ï¼?ultiple?‰対å¿?
299 * @og.rev 5.7.1.2 (2013/12/20) 5.7.1.2 (2013/12/20) zip対応で、UploadedFile のメソãƒ?ƒ‰変更
300 * @og.rev 5.7.3.0 (2014/02/07) zip対応ã?修正で、取得ファイル名が異なってã�?�Ÿã€?
301 * @og.rev 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
302 *
303 * @param multi MultipartRequestオブジェクãƒ?
304 *
305 * @return ãƒ??ブルモãƒ?ƒ«
306 */
307 private DBTableModel makeDBTable( final MultipartRequest multi ) {
308
309 DBTableModel table = DBTableModelUtil.newDBTable();
310
311 table.init( names.length );
312
313 for( int i=0; i<names.length; i++ ) {
314 DBColumn dbColumn = getDBColumn( names[i] );
315 table.setDBColumn( i,dbColumn );
316 }
317
318 String[] values ; // 4.0.0.0 (2007/10/12)
319 List<String> prmNames = new ArrayList<String>();
320
321 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
322 StringBuilder buf = new StringBuilder();
323
324 // 5.7.1.1 (2013/12/13) HTML5 ファイルアãƒ??ロードã?è¤?•°選択ï¼?ultiple?‰対å¿?
325 // String[] files = multi.getFilenames(); // 3.6.0.0 (2004/09/17)
326 UploadedFile[] files = multi.getUploadedFile();
327 for( int i=0; i<files.length; i++ ) {
328 // String name = files[i];
329 // File fin = multi.getFile(name);
330 // File fin = files[i].getFile();
331 // if( fin != null ) {
332 // String val = multi.getFilesystemName(name);
333 String name = files[i].getName(); // multiple対応では、キーがかぶることがあるã?
334 // String val = files[i].getFilesystemName();
335 // String val = files[i].getUploadFile().getPath(); // 5.7.1.2 (2013/12/20) zip対応で、UploadedFile のメソãƒ?ƒ‰変更
336 String val = files[i].getUploadFile().getName(); // 5.7.3.0 (2014/02/07) 取得ファイル名が異なってã�?�Ÿã€?
337
338 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
339 if( i==0 ) { buf.append( val ); }
340 else { buf.append( "," ).append( val ); } // カンマ結合で、最初だけ結合しなã�??
341
342 // "KEY","VALUE","ISFILE" のé ?�«ãƒ??タを作æ?しますã?
343 values = new String[] { name, val, "1" };
344 table.addColumnValues( values );
345 setRequestAttribute( name,val );
346 prmNames.add( name ); // 5.7.1.1 (2013/12/13) List に設定するã?
347
348 String orgName = name + "_ORG" ;
349 // val = multi.getOriginalFileName(name); // 注意:取得ã?ã€??信å�?
350 val = files[i].getOriginalFileName(); // 注意:取得ã?ã€??信å�?
351
352 // "KEY","VALUE","ISFILE" のé ?�«ãƒ??タを作æ?しますã?
353 values = new String[] { orgName, val, "2" };
354 table.addColumnValues( values );
355 setRequestAttribute( orgName,val );
356 // }
357 }
358
359 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
360 setRequestAttribute( UPLOAD_FILES,buf.toString() );
361
362 // "KEY","VALUE","ISFILE" のé ?�«ãƒ??タを作æ?しますã?
363 values = new String[] { "directory", fileURL, "0" };
364 table.addColumnValues( values );
365 setRequestAttribute( "directory",fileURL );
366
367 String[] params = multi.getParameterNames();
368 for( int i=0; i<params.length; i++ ) {
369 String name = params[i];
370 // 5.3.2.0 (2011/02/01) チェãƒ?‚¯行ã?パラメーターはint配å?側に変換
371 if ( HybsSystem.ROW_SEL_KEY.equals( name ) ) {
372 setRequestAttribute( name,multi.getIntParameters(name) );
373 }
374 else {
375 // 5.6.5.2 (2013/06/21) チェãƒ?‚¯ボックス配å?の値取得をè€??した、MultipartRequest のパラメータ値取å¾?
376 String val = getParamVal( name,multi );
377 // String val = multi.getParameter(name);
378 // // "KEY","VALUE","ISFILE" のé ?�«ãƒ??タを作æ?しますã?
379 // if( "0".equals(val) ){ // 5.4.4.2 チェãƒ?‚¯ボックス配å?対応ã?
380 // String[] vals = multi.getParameters(name);
381 // if( vals != null && vals.length > 1 ) {
382 // for( int j=0; j<vals.length; j++ ) {
383 // if( "1".equals( vals[j] ) ) {
384 // val = "1";
385 // break;
386 // }
387 // }
388 // }
389 // }
390
391 values = new String[] { name, val, "0" };
392 table.addColumnValues( values );
393 setRequestAttribute( name,val );
394 prmNames.add( name ); // 5.7.1.1 (2013/12/13) List に設定するã?
395 }
396 }
397
398 // 5.3.2.0 (2011/02/01) パラメーター名を保存するã?
399 // 5.7.1.1 (2013/12/13) List に設定するã?
400 // String[] names = new String[ files.length + params.length ];
401 // System.arraycopy( files, 0, names, 0, files.length );
402 // System.arraycopy( params, 0, names, files.length, params.length );
403 // setParameterNames( names );
404 setParameterNames( prmNames.toArray( new String[prmNames.size()] ) );
405
406 return table ;
407 }
408
409 /**
410 * ファイルアãƒ??ロードã?実行結果ã‚?横持ã? DBTableModel に記述しますã?
411 *
412 * こã?処ç�??、columns 属æ?を設定したå?合ã?みとしますã?
413 *
414 * DBTableModel作æ?時に、指定ã?カラãƒ??"_01"??_99"の添え字をレコードとして作æ?しますã?
415 * 現状はã€?KEY","VALUE","ISFILE" のカラãƒ?�«、データを縦持ちで作æ?してã�?�¾すã?
416 * これをã?横持で作æ?しますが、カラãƒ??末尾にã€?_01"??_99" までの添え字を
417 * 持つ場合ã?、これをレコードと認識させますã?
418 * 添え字がなã�??合ã?、カラãƒ?� け作æ?されますã?カラãƒ?��と同じリクエストがあればã€?
419 * すべてのレコードに同じ値がセãƒ?ƒˆされますã?
420 *
421 * @og.rev 5.6.5.2 (2013/06/21) 新規作æ?
422 * @og.rev 5.6.6.1 (2013/07/12) 添え字がなã�??合ã?処ç�??見直ã�?
423 * @og.rev 5.7.1.2 (2013/12/20) zip対応で、UploadedFile のメソãƒ?ƒ‰変更
424 * @og.rev 5.7.3.0 (2014/02/07) zip対応ã?修正で、取得ファイル名が異なってã�?�Ÿã€?
425 * @og.rev 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
426 *
427 * @param multi MultipartRequestオブジェクãƒ?
428 *
429 * @return ãƒ??ブルモãƒ?ƒ«
430 */
431 private DBTableModel makeDBTableFromClms( final MultipartRequest multi ) {
432
433 DBTableModel table = DBTableModelUtil.newDBTable();
434
435 String[] clmNames = columns.split( "," );
436
437 table.init( clmNames.length );
438
439 // 値配å??ˆ1行å???
440 String[] rowVal = new String[clmNames.length];
441
442 // 5.7.1.1 (2013/12/13) HTML5 ファイルアãƒ??ロードã?è¤?•°選択ï¼?ultiple?‰対å¿?
443 UploadedFile[] files = multi.getUploadedFile();
444
445 List<String> prmNames = new ArrayList<String>();
446
447 for( int i=0; i<clmNames.length; i++ ) {
448 String clm = clmNames[i] ;
449 DBColumn dbColumn = getDBColumn( clm );
450 table.setDBColumn( i,dbColumn );
451
452 // 先に、カラãƒ?��とä¸??するパラメータをå?期å?としてセãƒ?ƒˆしておきますã?
453 String val = getParamVal( clm,multi );
454
455 // 5.6.6.1 (2013/07/12) ファイル名も同様に、あれã?初期値セãƒ?ƒˆしておきますã?
456 if( val == null ) {
457 // 5.7.1.1 (2013/12/13) HTML5 ファイルアãƒ??ロードã?è¤?•°選択ï¼?ultiple?‰対å¿?
458 // val = multi.getFilesystemName( clm );
459 for( int j=0; j<files.length; j++ ) {
460 String nm = files[j].getName();
461 if( clm.equalsIgnoreCase( nm ) ) {
462 // val = files[j].getFilesystemName();
463 // val = files[i].getUploadFile().getPath(); // 5.7.1.2 (2013/12/20) zip対応で、UploadedFile のメソãƒ?ƒ‰変更
464 val = files[i].getUploadFile().getName(); // 5.7.3.0 (2014/02/07) 取得ファイル名が異なってã�?�Ÿã€?
465 break; // 5.7.6.3 (2014/05/23) たã?ん有ったほã�?�Œ良ã�??
466 }
467 }
468 }
469 // 5.7.1.1 (2013/12/13) getFilesystemName() の中に、newFile ã�?null の場合ã?、original を返す処ç�?�Œあるã€?
470 // if( val == null ) {
471 // // 5.7.1.1 (2013/12/13) HTML5 ファイルアãƒ??ロードã?è¤?•°選択ï¼?ultiple?‰対å¿?
472 //// val = multi.getOriginalFileName( clm ); // 注意:取得ã?ã€??信å�?
473 // for( int j=0; j<files.length; j++ ) {
474 // String nm = files[j].getName();
475 // if( clm.equalsIgnoreCase( nm ) ) {
476 // val = files[j].getOriginalFileName();
477 // break;
478 // }
479 // }
480 // }
481 rowVal[i] = ( val == null ) ? "" : val ;
482 }
483
484 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
485 StringBuilder buf = new StringBuilder();
486
487 // String[] files = multi.getFilenames(); // 3.6.0.0 (2004/09/17)
488 for( int i=0; i<files.length; i++ ) {
489 // String name = files[i];
490 // File fin = multi.getFile(name);
491 String name = files[i].getName();
492 // File fin = files[i].getFile();
493 // if( fin != null ) {
494 // 5.6.6.1 (2013/07/12) 添え字がなã�??合ã?処ç�??見直しã?先にレコードを作æ?
495 String[] values = new String[clmNames.length];
496 System.arraycopy( rowVal,0,values,0,values.length ); // 行にセãƒ?ƒˆするに当たりã?rowVal ã‚?values にコピã?しておくã€?
497
498 // ファイル名を Attribute で使えるようにセãƒ?ƒˆしておくã€?
499 // String fval = multi.getFilesystemName(name);
500 // String fval = files[i].getFilesystemName();
501 // String fval = files[i].getUploadFile().getPath(); // 5.7.1.2 (2013/12/20) zip対応で、UploadedFile のメソãƒ?ƒ‰変更
502 String fval = files[i].getUploadFile().getName(); // 5.7.3.0 (2014/02/07) 取得ファイル名が異なってã�?�Ÿã€?
503 setRequestAttribute( name,fval );
504 prmNames.add( name ); // 5.7.1.1 (2013/12/13) List に設定するã?
505
506 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
507 if( i==0 ) { buf.append( fval ); }
508 else { buf.append( "," ).append( fval ); } // カンマ結合で、最初だけ結合しなã�??
509
510 String orgName = name + "_ORG" ;
511 // String oval = multi.getOriginalFileName(name); // 注意:取得ã?ã€??信å�?
512 String oval = files[i].getOriginalFileName(); // 注意:取得ã?ã€??信å�?
513 setRequestAttribute( orgName,oval );
514
515 // ファイルのキーをå?に、添え字を検索しますã?
516 int adrs = name.lastIndexOf( '_' ); // 添え字ã?ã€?_' で区åˆ?‚‰れますã?
517 // 5.6.6.1 (2013/07/12) 添え字がなã�??合ã?処ç�??見直しã?後続å?ç�?‚’行うã€?
518 // if( adrs < 0 ) { continue; } // 添え字がなã�?
519 if( adrs > 0 ) {
520 String fnm = name.substring( 0,adrs ); // ファイルå�?åˆ?‰²å¾?
521 String sub = name.substring( adrs ); // 添えå?アンãƒ??バã?含ã‚?
522
523 // String[] values = new String[clmNames.length];
524 // System.arraycopy( rowVal,0,values,0,values.length ); // 行にセãƒ?ƒˆするに当たりã?rowVal ã‚?values にコピã?しておくã€?
525
526 // カラãƒ?��で検索しながら、レコード単位になるよã�?�«セãƒ?ƒˆしてã�?��ますã?
527 for( int j=0; j<clmNames.length; j++ ) {
528 String clm = clmNames[j] ;
529 String nm = null;
530 String val = null;
531
532 if( fnm.equalsIgnoreCase( clm ) ) { // ファイル名カラãƒ?_NEWファイル名も、この値にすでに変わってã�?‚‹??
533 // nm = name;
534 // val = multi.getFilesystemName( nm );
535 val = fval;
536 }
537 else if( ( fnm + "_ORG" ).equalsIgnoreCase( clm ) ) { // å…?ƒ•ァイル名カラãƒ?
538 // nm = name + "_ORG" ;
539 // val = multi.getOriginalFileName( name ); // 注意:取得ã?ã€??信å�?
540 val = oval;
541 }
542 else if( ( fnm + "_NEW" ).equalsIgnoreCase( clm ) ) { // 新ファイル名カラãƒ?
543 nm = name + "_NEW" ;
544 val = multi.getParameter( nm );
545 }
546 else {
547 nm = clmNames[j] + sub; // sub は、アンãƒ??バã?含ã‚?·»えå?
548 // 5.6.5.2 (2013/06/21) チェãƒ?‚¯ボックス配å?の値取得をè€??した、MultipartRequest のパラメータ値取å¾?
549 val = getParamVal( nm,multi );
550 }
551 if( val != null ) { values[j] = val ; } // val ã�?null でなã�?�¨きã?みセãƒ?ƒˆしますã?
552 // setRequestAttribute( nm,val );
553 }
554 }
555 table.addColumnValues( values );
556 // }
557 }
558 // 5.7.6.3 (2014/05/23) アãƒ??ロードファイルのCSVセãƒ?ƒˆ
559 setRequestAttribute( UPLOAD_FILES,buf.toString() );
560
561 // Attribute で使えるようにセãƒ?ƒˆしておくã€?
562 setRequestAttribute( "directory",fileURL );
563
564 // Attribute で使えるようにセãƒ?ƒˆしておくã€?
565 String[] params = multi.getParameterNames();
566 for( int i=0; i<params.length; i++ ) {
567 String name = params[i];
568 // 5.3.2.0 (2011/02/01) チェãƒ?‚¯行ã?パラメーターはint配å?側に変換
569 if ( HybsSystem.ROW_SEL_KEY.equals( name ) ) {
570 setRequestAttribute( name,multi.getIntParameters(name) );
571 }
572 else {
573 // 5.6.5.2 (2013/06/21) チェãƒ?‚¯ボックス配å?の値取得をè€??した、MultipartRequest のパラメータ値取å¾?
574 String val = getParamVal( name,multi );
575 setRequestAttribute( name,val );
576 prmNames.add( name ); // 5.7.1.1 (2013/12/13) List に設定するã?
577 }
578 }
579
580 // 5.3.2.0 (2011/02/01) パラメーター名を保存するã?
581 // 5.7.1.1 (2013/12/13) List に設定するã?
582 // String[] names = new String[ files.length + params.length ];
583 // System.arraycopy( files, 0, names, 0, files.length );
584 // System.arraycopy( params, 0, names, files.length, params.length );
585 // setParameterNames( names );
586 setParameterNames( prmNames.toArray( new String[prmNames.size()] ) );
587
588 return table ;
589 }
590
591 /**
592 * チェãƒ?‚¯ボックス配å?の値取得をè€??した、MultipartRequest のパラメータ値取å¾?
593 *
594 * ここでは、ã?MultipartRequest のパラメータ値を取得しますã?
595 * 値の取得で、チェãƒ?‚¯ボックス配å?の場合ã?、取得したå?がã?"0" の場合ã?み
596 * 配å?でパラメータを取得し直しã?"1" がなã�?�‹どã�?�‹再度検索しますã?
597 * チェãƒ?‚¯ボックスでは、チェãƒ?‚¯時ã? "1" と、チェãƒ?‚¯されなかったå?合ã?ã€?
598 * hidden の "0" の両方の値がé?列としてリクエストされるケースがある為ですã?
599 *
600 * @og.rev 5.6.5.2 (2013/06/21) 新規作æ?
601 *
602 * @param key MultipartRequest のパラメータ取得ã?ためのキー
603 * @param multi MultipartRequestオブジェクãƒ?
604 *
605 * @return チェãƒ?‚¯ボックス配å?をè?慮したパラメータ値
606 */
607 private String getParamVal( final String key , final MultipartRequest multi ) {
608 String val = multi.getParameter( key );
609
610 if( "0".equals(val) ){ // 5.4.4.2 チェãƒ?‚¯ボックス配å?対応ã?
611 String[] vals = multi.getParameters( key );
612 if( vals != null && vals.length > 1 ) {
613 for( int j=0; j<vals.length; j++ ) {
614 if( "1".equals( vals[j] ) ) {
615 val = "1";
616 break;
617 }
618 }
619 }
620 }
621 return val ;
622 }
623
624 /**
625 * 【TAG】ファイルをアãƒ??ロードするディレクトリを指定しまã�?
626 * (初期値:FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
627 *
628 * @og.tag
629 * こã?属æ?でæŒ?®šされるãƒ?‚£レクトリに、アãƒ??ロードされたファイルをセーブしますã?
630 * æŒ?®š方法ã?ã€??常の fileURL 属æ?と同様に、å?頭がã?'/' (UNIX) またã?ã€?¼’文字目がã?
631 * ":" (Windows)の場合ã?、指定ã?URLそã?ままのãƒ?‚£レクトリに、そã�?�§なã�??合ã?ã€?
632 * fileURL = "{@USER.ID}" とæŒ?®šすると、FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下にã€?
633 * さらに、各個人ID別のフォルãƒ?‚’作æ?して、そこにセーブしますã?
634 * (初期値:シスãƒ?ƒ 定数のFILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
635 *
636 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソãƒ?ƒ‰の利用
637 * @og.rev 4.0.0.0 (2007/11/20) æŒ?®šされたãƒ?‚£レクトリ名ã?æœ?¾Œが"\"or"/"で終わってã�?�ªã�??合にã€?/"を付加するã€?
638 * @og.rev 5.7.1.1 (2013/12/13) リクエスト変数が使えなã�?‚¨ラーを表示するã€?
639 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
640 *
641 * @param url ファイルURL
642 * @see org.opengion.hayabusa.common.SystemData#FILE_URL
643 */
644 public void setFileURL( final String url ) {
645 String furl = nval( getRequestParameter( url ),null );
646 if( furl != null ) {
647 char ch = furl.charAt( furl.length()-1 );
648 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
649 fileURL = StringUtil.urlAppend( fileURL,furl );
650 }
651 // else if( url != null && url.startsWith( "{@" ) ) {
652 // String errMsg = "upload では、enctype=\"multipart/form-data\" のため、{@XXXX}形式ã?パラメータが使えませんã€?
653 // + " fileURL=[" + url + "]" ;
654 // throw new HybsSystemException( errMsg ); // 5.7.1.1 (2013/12/13) リクエスト変数が使えなã�?‚¨ラー
655 // }
656 else {
657 chckReqParam( url,"fileURL" ); // 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯
658 }
659 }
660
661 /**
662 * 【TAG】最大転送サイズ(Byte)を指定しまã�?初期値:10485760)ã€?
663 *
664 * @og.tag
665 * æœ?¤§転送サイズを指定しますã?初期値はã€?0*1024*1024 = 10MB ですã?
666 * æŒ?®šã?、Byte 単位でæŒ?®šしますã?
667 * 0,またã?マイナスを指定することで、制限チェãƒ?‚¯を外す?ˆ=無制限)事ができますã?
668 *
669 * @og.rev 3.0.1.1 (2003/03/06) maxPostSize の設定バグ修正ã€?
670 * @og.rev 5.6.5.3 (2013/06/28) コメント追åŠ?¼?,またã?マイナスで無制限ï¼?
671 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
672 *
673 * @param maxPS æœ?¤§転送サイズ
674 */
675 public void setMaxPostSize( final String maxPS ) {
676 maxPostSize = nval( getRequestParameter( maxPS ),maxPostSize );
677
678 chckReqParam( maxPS,"maxPostSize" ); // 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯
679 }
680
681 /**
682 * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
683 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
684 *
685 * @og.tag
686 * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
687 * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
688 * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
689 * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
690 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
691 *
692 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
693 *
694 * @param id sessionに登録する時ã? ID
695 */
696 public void setTableId( final String id ) {
697 tableId = nval( getRequestParameter( id ),tableId );
698
699 chckReqParam( id,"tableId" ); // 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯
700 }
701
702 /**
703 * 【TAGã€?通常使ã�?�¾せん)ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしますã?
704 *
705 * @og.tag
706 * ファイルを作æ?するときã?ファイル名をセãƒ?ƒˆしますã?
707 * これは、è¤?•°同時にアãƒ??ロードファイル名を変更する時に使用できませんã€?
708 * 通常、アãƒ??ロードされたファイル名をæŒ?®šするå?合ã?アãƒ??ロードするinput タグの
709 * name 属æ?にæŒ?®šする名称 ??"_NEW" とã�?�†リクエストå?を同時に送信すればã€?
710 * å†?ƒ¨çš?�«関連付けて、ファイル名を更新しますã?
711 * そã?場合ã?クライアントより指定したファイル名ã?、name属æ???_ORG" とã�?�†
712 * リクエストå?として取得することが可能になりますã?
713 * name属æ? には、最終的に設定されたファイル名がセãƒ?ƒˆされてã�?�¾すã?
714 * ã�?�šれã?値もã?{@name属æ???_ORG"} ã‚??{@name属æ???_NEW"}としてã€?
715 * アãƒ??ロードã?オリジナルと変更後ã?ファイル名を取得することがå?来ますã?
716 *
717 * 5.7.1.2 (2013/12/20) zip 対å¿?
718 * filename 属æ?にã€?.zip" の拡張子ã?ファイル名をæŒ?®šしたå?合ã?、アãƒ??ロードされたä¸??のファイルã‚?
719 * ZIP圧縮しますã?これは、アãƒ??ロード後ã?処ç�?�«なりますã?
720 * ZIP圧縮のオリジナルファイルは、そのまま残りますã?
721 * なおã?ZIPファイルは、useBackup属æ?ã‚?true に設定してもã?無関係に、上書きされますã?
722 *
723 * 5.7.4.3 (2014/03/28) filename 属æ?のリクエスト変数対å¿?
724 * filename 属æ?のみ、{@XXXX} のリクエスト変数が使えるようにしますã?
725 * 他ã?パラメータでは使えませんã€?
726 * これは、multipart/form-data のリクエストでは、パートã?åˆ?§£処ç�?‚’しなã�?�¨、リクエスト変数ã�?
727 * 拾えなã�?‚º、リクエスト変数は、この、upload タグ以降でのみ利用可能でしたã€?
728 * zip対応と関連付けて、filename 属æ?のみ、利用できるように、MultipartRequest 側の処ç�?�«çµ?�¿込みますã?
729 *
730 * @og.rev 3.5.4.2 (2003/12/15) ファイル名をæŒ?®šできるようにしますã?
731 * @og.rev 5.7.1.1 (2013/12/13) リクエスト変数が使えなã�?‚¨ラーを表示するã€?
732 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数を使えるようにしますã?
733 *
734 * @param fname ファイルå�?
735 */
736 public void setFilename( final String fname ) {
737 filename = nval( getReservedParameter( fname ),null ); // 予ç´?ªžã?み処ç�?‚’しますã?
738
739 // filename = nval( getRequestParameter( fname ),null );
740
741 // if( filename == null && fname != null && fname.startsWith( "{@" ) ) {
742 // String errMsg = "upload では、enctype=\"multipart/form-data\" のため、{@XXXX}形式ã?パラメータが使えませんã€?
743 // + " filename=[" + fname + "]" ;
744 // throw new HybsSystemException( errMsg ); // 5.7.1.1 (2013/12/13) リクエスト変数が使えなã�?‚¨ラー
745 // }
746 }
747
748 /**
749 * 【TAG】DBTableModel作æ?時に、指定ã?カラãƒ??"_01"??_99"の添え字をレコードとして作æ?しますã?
750 *
751 * @og.tag
752 * 現状はã€?KEY","VALUE","ISFILE" のカラãƒ?�«、データを縦持ちで作æ?してã�?�¾すã?
753 * これをã?横持で作æ?しますが、カラãƒ??末尾にã€?_01"??_99" までの添え字を
754 * 持つ場合ã?、これをレコードと認識させますã?
755 * アンãƒ??バã?がなã�??合ã?、カラãƒ?� け作æ?されますã?カラãƒ?��と同じリクエストがあればã€?
756 * すべてのレコードに同じ値がセãƒ?ƒˆされますã?
757 * こã?処ç�??、columns 属æ?を設定したå?合ã?みとしますã?
758 *
759 * @og.rev 5.6.5.2 (2013/06/21) 新規作æ?
760 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
761 *
762 * @param clms DBTableModel作æ?時ã?カラãƒ??(カンマ区åˆ?‚Šæ–??
763 */
764 public void setColumns( final String clms ) {
765 columns = nval( getRequestParameter( clms ),columns );
766
767 chckReqParam( clms,"columns" ); // 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯
768 }
769
770 /**
771 * 【TAG】ファイルアãƒ??ロード時に、すでに同名のファイルが存在した場合に、バãƒ?‚¯アãƒ??処ç�?renameTo)するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
772 *
773 * @og.tag
774 * ファイルアãƒ??ロード時に、アãƒ??ロードå?に、同名ã?ファイルが存在した場合ã?、既存機è?は、そのまま
775 * 置き換えてã�?�¾したがã?簡易バージョンアãƒ??機è?として、useBackup="true" を指定すると、既存ã?ファイルã‚?
776 * リネã?ãƒ?�—て、バãƒ?‚¯アãƒ??ファイルを作æ?しますã?
777 * バックアãƒ??ファイルは、アãƒ??ロードフォルãƒ?‚’基準として、_backup/ファイルå�?拡張子_処ç�?™‚刻のlong値.拡張å?になりますã?
778 * オリジナルのファイル名(拡張子付)を残したままã€?_処ç�?™‚刻のlong値" を追åŠ?�—、さらに、オリジナルの拡張子を追åŠ?�—ますã?
779 * バックアãƒ??ファイルの形式ã?æŒ?®šできませんã€?
780 *
781 * 初期値は、互換性を持たせるためã?false ですã?
782 *
783 * @og.rev 5.6.5.3 (2013/06/28) 新規作æ?
784 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
785 *
786 * @param flag ファイルアãƒ??ロード時に、バãƒ?‚¯アãƒ??処ç�?renameTo)するかどã�?�‹[true/false]を指å®?
787 */
788 public void setUseBackup( final String flag ) {
789 useBackup = nval( getRequestParameter( flag ),useBackup );
790
791 chckReqParam( flag,"useBackup" ); // 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯
792 }
793
794 /**
795 * リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行いますã?
796 *
797 * upload では、enctype="multipart/form-data" のため、{@XXXX}形式ã?パラメータが使えませんã€?
798 * 5.7.4.3 (2014/03/28) から、filename のみ利用可能としたことで、同様に利用できると
799 * 勘違ã�?�™るケースに対応する為、すべてのパラメータにつã�?�¦チェãƒ?‚¯を行いますã?
800 * ここでは、getRequestParameter( String ) の実行後ã?すぐに、isNull() 判定を行う事でã€?
801 * リクエスト変数の存在チェãƒ?‚¯を行う事にしてã�?�¾すã?
802 *
803 * @og.rev 5.7.4.3 (2014/03/28) リクエスト変数が使えなã�?º‹ã?チェãƒ?‚¯を行うã€?
804 *
805 * @param org 引数のオリジナル値
806 * @param key エラーの発生した変数å�?
807 * @throws HybsSystemException パラメータが使用されてã�?�Ÿ場å�?
808 */
809 private void chckReqParam( final String org,final String key ) {
810 if( isNull() && org != null && org.contains( "{@" ) ) {
811 String errMsg = "upload では、enctype=\"multipart/form-data\" のため、{@XXXX}形式ã?パラメータが使えませんã€?
812 + HybsSystem.CR
813 + " " + key + "=[" + org + "]" ;
814 throw new HybsSystemException( errMsg ); // リクエスト変数が使えなã�?‚¨ラー
815 }
816 }
817
818 /**
819 * タグの名称をã?返しますã?
820 * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
821 *
822 * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
823 *
824 * @return タグの名称
825 */
826 @Override
827 protected String getTagName() {
828 return "upload" ;
829 }
830
831 /**
832 * こã?オブジェクトã?æ–?—å?表現を返しますã?
833 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
834 *
835 * @return こã?クラスのæ–?—å?表現
836 */
837 @Override
838 public String toString() {
839 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
840 .println( "VERSION" ,VERSION )
841 .println( "names" ,names )
842 .println( "ENCODE" ,ENCODE )
843 .println( "fileURL" ,fileURL )
844 .println( "filename" ,filename )
845 .println( "maxPostSize" ,maxPostSize)
846 .println( "tableId" ,tableId )
847 .println( "columns" ,columns ) // 5.6.5.2 (2013/06/21)
848 .println( "useBackup" ,useBackup ) // 5.6.5.3 (2013/06/28)
849 .println( "Other..." ,getAttributes().getAttribute() )
850 .fixForm().toString() ;
851 }
852 }