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