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.BufferedInputStream;
021    import java.io.BufferedWriter;
022    import java.io.ByteArrayInputStream;
023    import java.io.ByteArrayOutputStream;
024    import java.io.File;
025    import java.io.IOException;
026    import java.io.InputStream;
027    import java.io.OutputStreamWriter;
028    import java.io.UnsupportedEncodingException;
029    import java.io.Writer;
030    import java.util.Map;
031    
032    import org.opengion.fukurou.util.Closer;
033    import org.opengion.fukurou.util.FileString;
034    import org.opengion.fukurou.util.FileUtil;
035    import org.opengion.fukurou.util.LogWriter;
036    import org.opengion.fukurou.util.SOAPConnect;
037    import org.opengion.fukurou.util.StringUtil;
038    import org.opengion.fukurou.util.URLConnect;
039    import org.opengion.fukurou.util.XHTMLTag;
040    import org.opengion.fukurou.xml.XML2TableParser;
041    import org.opengion.fukurou.xml.XSLT;
042    import org.opengion.hayabusa.common.HybsSystem;
043    import org.opengion.hayabusa.common.HybsSystemException;
044    import org.opengion.hayabusa.db.DBTableModel;
045    import org.opengion.hayabusa.db.DBTableModelUtil;
046    
047    /**
048     * æŒ?®šã?URLに接続しますã?
049     *
050     * エンジンでは、URL にアクセスすることで、デーモンを起動したりã€?
051     * コマンドを実è¡?adminメニュー)することがå?来ますã?
052     * もちろん、検索条件を指定して、結果を取得することも可能ですã?
053     * こã?タグでは、URLにアクセスして、コマンドを実行したり結果を取得できますã?
054     * さらに、ファイルã‚?POST で転送したり、å?ç�?µ�果ã‚?XSLT変換したりå?来ますã?
055     *
056     * @og.formSample
057     * ●形式ï¼?
058     *     <og:urlConnect
059     *         url           = "http://?¥?¥?¥ "    å¿??
060     *         proxyHost     = "proxy.opengion.org"
061     *         proxyPort     = "8080"
062     *         keys          = "command,SYSTEM_ID"
063     *         vals          = "NEW,GE"
064     *         useSystemUser = "true/false"     初期値:true
065     *         authUserPass  = "admin:******"   初期値:admin:******
066     *         display       = "false/true"     初期値:false
067     *         xslFile       = "filter.xsl"
068     *         saveFile      = "outdata.xml"
069     *         soapNameSpace = "MyWebService"
070     *         soapMethodName= "test"
071     *         tableId       = "DEFAULT"
072     *         rowKey        = "item"
073     *         colKeys       = "person_id,person_name"
074     *         rtnKeys       = "version,summary"
075     *         encode        = "UTF-8"
076     *     />
077     *
078     * url           : 接続するURLを指定しますã?å¿??属æ?ですã?
079     * proxyHost     : proxy が存在する場合ã?、そのホスト名(例:proxy.opengion.org)
080     * proxyPort     : proxy が存在する場合ã?、そのポã?ト番号(例ï¼?080)
081     * keys,vals     : URLのæŒ?®š時に、パラメータ(引数)を追åŠ?�—ますã?URLに含めても構いませんã€?
082     *               : SOAPによる呼び出しã?場合ã?詳細につã�?�¦は、keysの属æ?定義を参照して下さã�??
083     * postKey       : POST を使って、postFile属æ?のファイルå†?®¹をé?信する時ã?キーですã?
084     * postFile      : POST を使って、postFile属æ?のファイルå†?®¹をé?信しますã?
085     *                 postFile を指定せずã?postKey のみæŒ?®šして、BODY部に何か書き込めã?ã€?
086     *                 そã?BODY部のæ–?­—å?ã‚?POSTのå†?®¹として送信しますã?
087     * authUserPass  : Basic認証を使用する場合ã?接続ユーザー?šパスワードをæŒ?®šしますã?
088     *                 接続時のユーザーとパスワードを、USER:PASSWD 形å¼?でæŒ?®šしますã?
089     *                 useSystemUser="false" で何もæŒ?®šしなã�??合ã?、Basic認証を使用しませんã€?
090     * useSystemUser : Basic認証の接続ユーザー?šパスワードに、シスãƒ?ƒ ユーザーを使用
091     *                 するかどã�?�‹を指定しまã�?初期値:true)ã€?
092     *                 true の場合ã?、SYSTEM:***** を使用しますã?
093     * xslFile       : 接続å?ãƒ??タを取得し、そのãƒ??タã‚?XSLT変換する場合ã?XSLファイルを指定しますã?
094     * display       : 接続した結果のレスポンスを画面に表示するかどã�?�‹を指定しまã�?初期値:false)ã€?
095     *                 エンジンの場合ã?コマンドを投げるだけであれば、結果を取得するå¿?¦�ã?
096     *                 ありません。イメージçš?�«は、取得データがã?こã?タグの位置に置き換わりますã?
097     *                 xslFile が指定されてã�?‚‹場合ã?XSLT変換してセーブしますã?
098     * saveFile      : 接続å?ãƒ??タを取得した結果をã?ファイル出力しますã?
099     *                 display="true" と、saveFile を併用することはできませんã€?
100     *                 xslFile が指定されてã�?‚‹場合ã?XSLT変換してセーブしますã?
101     * soapNameSpace : SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名及びパラメーターの名前空間をæŒ?®šしますã?
102     *                 こã?名前空間ã?ã€??常WSDLファイルのdescriptionsタグのtargetNamespace属æ?の値により
103     *                 定義されますã?
104     * soapMethodName: SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名をæŒ?®šしますã?
105     *                 WSDLファイルで定義されるoperationタグのname属æ?の値に相当しますã?
106     * tableId       : 結果のXMLファイルをDBTableModelに変換した際に、登録するTableIdを指定しますã?
107     * rowKey        : XMLをDBTableModelに変換する際ã?、行を表すタグキーを指定しますã?
108     * colKeys       : XMLをDBTableModelに変換する際ã?ã€??目を表すタグキーのä¸?¦§を指定しますã?
109     *                 キーにPARENT_TAG、PARENT_FULL_TAGを指定することで、rowKeyでæŒ?®šされたタグの
110     *                 直近ã?親タグ、及びフルの親タグå�?親タグの階層ã‚?>[タグA]>[タグB]>[タグC]>"で表現)ã‚?
111     *                 取得することができますã?
112     * rtnKeys       : XMLのタグキーを指定して値を取りå?しますã?取り出した値は、{@XX}形式で処ç�?�™ることが可能ですã?
113     * encode        : ãƒ??タの入出力を行うエンコードをæŒ?®šしますã?
114     *
115     * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
116     *         POSTãƒ??タを記述しますã?
117     *
118     * ●Tag定義??
119     *   <og:urlConnect
120     *       url              ○ã?TAG】アクセスする ?µ?²?¬ を指定しまã�?å¿??)(å¿??)ã€?
121     *       proxyHost          【TAG】ã?ロキシ経由で接続するå?合ã?、ã?ロキシホスト名を指定しまã�?
122     *       proxyPort          【TAG】ã?ロキシ経由で接続するå?合ã?、ã?ロキシポã?ト番号を指定しまã�?
123     *       keys               【TAG】アクセスパラメータキーをCSV形式でè¤?•°æŒ?®šしまã�?
124     *       vals               【TAG】keys属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしまã�?
125     *       useSystemUser      【TAG】Basic認証で接続するユーザーにSYSTEMユーザーを使用するかどã�?�‹[true/false]を指定しまã�?初期値:true)
126     *       authUserPass       【TAG】Basic認証を使用して接続するå?合ã?ユーザー:パスワードをæŒ?®šしまã�?初期値:null)
127     *       display            【TAG】接続ã?結果を表示するかどã�?�‹を指定しまã�?初期値:false)
128     *       xslFile            【TAG】接続ã?結果を表示する場合にXSLT変換する場合ã?ファイルを指定しまã�?
129     *       saveFile           【TAG】接続ã?結果をファイルに保存しまã�?
130     *       postKey            【TAG】POST を使って、postFile属æ?のファイルå†?®¹をé?信する時ã?キーを指定しまã�?
131     *       postFile           【TAG】POST を使って、postFile属æ?のファイルå†?®¹をé?信しまã�?
132     *       method             【TAG】é?信メソãƒ?ƒ‰を指定しまã�?GET/POST/SOAP)
133     *       errNeglect         【TAGã€?通常は使ã�?�¾せん) 接続エラーを無視するå?合にtrueとしまã�?初期値false)
134     *       soapNameSpace      【TAG】SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名及びパラメーターの名前空間をæŒ?®šしまã�?
135     *       soapMethodName     【TAG】SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名をæŒ?®šしまã�?
136     *       tableId            【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
137     *       scope              【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
138     *       rowKey             【TAG】結果のXMLをDBTableModelに変換する際に、行ã?キーとなるタグ名をæŒ?®šしまã�?
139     *       colKeys            【TAG】結果のXMLをDBTableModelに変換する際にã€??目のキーとなるタグ名ã?ä¸?¦§を指定しまã�?
140     *       rtnKeys            【TAG】結果のXMLを変換する際に、パラメータ(Attributes)として取り込ã‚?‚­ーのä¸?¦§を指定しまã�?
141     *       encode             【TAG】データの入出力ã?エンコードをæŒ?®šしまã�?
142     *       mainTrans          【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)
143     *       caseKey            【TAG】このタグ自体を利用するかどã�?�‹の条件キーを指定しまã�?初期値:null) 5.7.7.2 (2014/06/20)
144     *       caseVal            【TAG】このタグ自体を利用するかどã�?�‹の条件値を指定しまã�?初期値:null) 5.7.7.2 (2014/06/20)
145     *       caseNN             【TAG】指定ã?値がã?null/ゼロæ–?­—å? でなã�??å�?Not Null=NN)は、このタグは使用されまã�?初期値:true) 5.7.7.2 (2014/06/20)
146     *       caseNull           【TAG】指定ã?値がã?null/ゼロæ–?­—å? の場合ã?、このタグは使用されまã�?初期値:true) 5.7.7.2 (2014/06/20)
147     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
148     *   >   ... Body ...
149     *   </og:urlConnect>
150     *
151     * ●例ï¼?
152     * アドミン関連
153     * http://localhost:8823/gf/jsp/admin?COMMAND=infomation     [状況表示]
154     * http://localhost:8823/gf/jsp/admin?COMMAND=close          [プã?ル削除]
155     * http://localhost:8823/gf/jsp/admin?COMMAND=loginUser      [ログインユーザー]
156     * http://localhost:8823/gf/jsp/admin?COMMAND=シスãƒ?ƒ パラメータ [シスãƒ?ƒ パラメータ]
157     *
158     * 帳票ãƒ??モン
159     * http://localhost:8823/gf/jsp/REP08/result.jsp?cmd=SET&period=5000&command=NEW&timerTask=org.opengion.hayabusa.report.ReportDaemon&name=ReportDaemon  ãƒ??モン起å‹?
160     * http://localhost:8823/gf/jsp/REP08/result.jsp?cmd=CANCEL&period=5000&command=NEW&timerTask=org.opengion.hayabusa.report.ReportDaemon&name=ReportDaemon  ãƒ??モン停止
161     *
162     *Tomcat Manager 画面
163     * http://localhost:8823/manager/reload?path=/ver4 アプリケーションをå?ローãƒ?
164     *
165     * @og.rev 3.6.0.0 (2004/09/17) 新規作æ?
166     * @og.rev 4.1.0.0 (2007/12/22) POSTメソãƒ?ƒ‰でè¤?•°キーを登録できるように属æ?追åŠ?
167     * @og.rev 5.1.5.0 (2010/04/01) SOAP対å¿?
168     * @og.group そã?他部å“?
169     *
170     * @version  4.0
171     * @author   Kazuhiko Hasegawa
172     * @since    JDK5.0,
173     */
174    public class URLConnectTag extends CommonTagSupport {
175            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
176            private static final String VERSION = "5.7.7.2 (2014/06/20)" ;
177    
178            private static final long serialVersionUID = 577220140620L ;
179    
180            private static final String DEFAULT_USER = "SYSTEM:MANAGER" ;
181    
182            private String          urlStr                  = null;
183            private String[]        keys                    = null;
184            private String[]        vals                    = null;
185            private String          xslFile                 = null;
186            private String          saveFile                = null;
187            private String          postKey                 = null;
188            private String          postData                = null;         // postFile ファイルかã?BODY部
189            private boolean         useSystemUser   = true;
190            private String          authUserPass    = null;
191            private boolean         display                 = false;
192            private String          proxyHost               = null;         // 4.0.0 (2007/07/25)
193            private int             proxyPort               = -1;           // 4.0.0 (2007/07/25)
194            private String          method                  = "GET";        // 4.1.0.0 (2007/12/22) POSTorGETorSOAP
195            private boolean         errNglctFlag    = false;        // 4.1.1.0 (2008/01/22) エラー無視フラグ
196            private String          soapNameSpace   = null;         // 5.1.5.0 (2010/04/01) SOAP対å¿?
197            private String          soapMethodName  = null;         // 5.1.5.0 (2010/04/01) SOAP対å¿?
198            private transient DBTableModel table                    = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
199            private String          tableId                 = HybsSystem.TBL_MDL_KEY; // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
200            private String          rowKey                  = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
201            private String[]        colKeys                 = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
202            private String[]        rtnKeys                 = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
203            private String          encode                  = "UTF-8";      // 5.1.6.0 (2010/05/01) エンコード指定対å¿?
204    
205            private boolean         isTableOut              = false;        // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
206            private boolean         isOutParse              = false;        // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
207            private boolean         isMainTrans             = true;         // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
208    
209            /**
210             * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
211             *
212             * @og.rev 5.1.5.0 (2010/04/01) SOAP・DBTableModel出力対å¿?
213             * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
214             * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
215             *
216             * @return      後続å?ç�??æŒ?¤º
217             */
218            @Override
219            public int doStartTag() {
220                    // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
221                    if( !useTag() ) { return SKIP_BODY ; }
222    
223                    // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
224                    if( rowKey != null || colKeys != null || rtnKeys != null ) {
225                            isOutParse = true;
226                            if( rowKey != null || colKeys != null ) {
227                                    isTableOut = true;
228                                    useMainTrans( isMainTrans );                    // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
229                                    startQueryTransaction( tableId );
230                            }
231                    }
232    
233                    // 5.1.5.0 (2010/04/01) SOAPの場合ã?、postKeyが指定されなã�??
234                    if( postData != null ) {
235                            return SKIP_BODY ;                      // Body を評価しなã�?
236                    }
237                    else {
238                            return EVAL_BODY_BUFFERED ;     // Body を評価するã€? extends BodyTagSupport æ™?
239                    }
240            }
241    
242            /**
243             * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
244             *
245             * @return      後続å?ç�??æŒ?¤º(SKIP_BODY)
246             */
247            @Override
248            public int doAfterBody() {
249                    postData = getBodyString();
250    
251                    return SKIP_BODY ;
252            }
253    
254            /**
255             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
256             *
257             * @og.rev 4.0.1.0 (2007/12/12) PostKeys,PostVals処ç�?‚’追åŠ?
258             * @og.rev 5.1.5.0 (2010/04/01) SOAP・DBTableModel出力対å¿?
259             * @og.rev 5.2.0.0 (2010/09/01) エラー処ç�?�§NullPointerExceptionが発生するバグを修正
260             * @og.rev 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
261             *
262             * @return      後続å?ç�??æŒ?¤º
263             */
264            @Override
265            public int doEndTag() {
266                    debugPrint();           // 4.0.0 (2005/02/28)
267    
268                    // 5.7.7.2 (2014/06/20) caseKey,caseVal,caseNN,caseNull 属æ?を追åŠ?
269                    if( !useTag() ) { return EVAL_PAGE ; }
270    
271                    URLConnect conn = null;
272                    ByteArrayOutputStream pipeOut = null;
273                    try {
274                            conn = connect();
275    
276                            // 出力å?がã?画面かファイルかを判断しますã?
277                            Writer outWriter = null;
278                            // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
279                            if( isOutParse ) {
280                            pipeOut = new ByteArrayOutputStream();
281                                    try {
282                                            outWriter = new BufferedWriter( new OutputStreamWriter( pipeOut, "UTF-8" ) );
283                                    }
284                                    catch( UnsupportedEncodingException ex ) {
285                                            throw new HybsSystemException( "不正なエンコードがæŒ?®šされましたã€?UTF-8]",ex );
286                                    }
287                            }
288                            else if( display ) {
289                                    outWriter = FileUtil.getNonFlushPrintWriter( pageContext.getOut() ) ;           // JspWriter の取å¾?
290                            }
291                            else if( saveFile != null ) {
292                                    outWriter = FileUtil.getPrintWriter( new File( saveFile ),"UTF-8" );
293                            }
294    
295                            // 出力å?が存在する場合ã?
296                            if( outWriter != null ) {
297                                    if( xslFile != null ) {
298                                            XSLT xslt = new XSLT();
299                                            xslt.setXslFile( xslFile );
300                                            xslt.setOutFile( outWriter );
301                                            xslt.transform( conn.getReader() );
302                                            xslt.close();
303                                    }
304                                    else {
305                                            outWriter.write( conn.readData() );
306                                    }
307                                    Closer.ioClose( outWriter );
308                            }
309                    }
310                    catch( IOException ex ) {
311                            String errMsg = "ãƒ??タ取得中にエラーが発生しましたã€? + HybsSystem.CR
312                                                    + " url=[" + urlStr + "]"
313                                                    // 5.2.0.0 (2010/09/01) エラー処ç�?�§NullPointerExceptionが発生するバグを修正
314                                                    + " message=[" + ( conn == null ? "NO_CONNECTION" : conn.getMessage() ) + "]";
315                            if( errNglctFlag ) { // 4.1.1.0 (2008/01/22) エラーを無è¦?標準エラー出力ã?み)
316                                    LogWriter.log( errMsg );
317                            }
318                            else { // 通常は無視しなã�?
319                                    throw new HybsSystemException( errMsg,ex );
320                            }
321                    }
322                    finally {
323                            if( conn != null ) { conn.disconnect(); }
324                    }
325    
326                    // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
327                    if( isOutParse ) {
328                            parse( new BufferedInputStream( new ByteArrayInputStream( pipeOut.toByteArray() ) ) );
329                            if( isTableOut && table != null && !commitTableObject( tableId, table ) ) {
330                                    jspPrint( "URLConnectTag Query処ç�?�Œ割り込まれましたã€?BTableModel は登録しませんã€? );
331                                    return SKIP_PAGE ;
332                            }
333                    }
334    
335                    return EVAL_PAGE ;
336            }
337    
338            /**
339             * URLに対して接続を行いますã?
340             *
341             * @og.rev 5.1.6.0 (2010/05/01) エンコード指定対å¿?
342             *
343             * @return 接続オブジェクãƒ?
344             * @throws IOException 入出力エラーが発生したとã�?
345             */
346            private URLConnect connect() throws IOException {
347                    if( useSystemUser ) { authUserPass = DEFAULT_USER; }
348    
349                    // 5.1.5.0 (2010/04/01) SOAP対å¿?
350                    // SOAPの場合ã?PostDataは、SOAPConnectタグの中で生æ?しますã?
351                    URLConnect conn = null;
352                    if( "SOAP".equalsIgnoreCase( method ) ) {
353                            if( soapNameSpace == null || soapNameSpace.length() == 0
354                                            || soapMethodName == null || soapMethodName.length() == 0 ) {
355                                    String errMsg = "SOAP接続ã?場合ã?soapNameSpace及ã?soapMethodNameはå¿?�šæŒ?®šして下さã�??";
356                                    throw new HybsSystemException( errMsg );
357                            }
358    
359                            if( postData != null && postData.length() > 0 ) {
360                                    conn = new SOAPConnect( urlStr,authUserPass, soapNameSpace, soapMethodName, postData );
361                            }
362                            else {
363                                    conn = new SOAPConnect( urlStr,authUserPass, soapNameSpace, soapMethodName, keys, vals );
364                            }
365                    }
366                    else {
367                            String urlEnc = XHTMLTag.urlEncode( keys,vals );
368                            if( postKey != null ) { // 4.1.0.0 (2007/12/22)
369                                    method = "POST";
370                                    String addEnc = postKey + "=" + postData;
371                                    urlEnc = urlEnc + "&" + addEnc; // &連çµ?
372                            }
373    
374                            if( ! "POST".equals( method ) ) { // 4.1.0.0 (2007/12/22)
375                                    // String urlEnc = XHTMLTag.urlEncode( keys,vals );
376                                    urlStr = XHTMLTag.addUrlEncode( urlStr,urlEnc );
377                            }
378                            conn = new URLConnect( urlStr,authUserPass );
379    
380                            // if( postKey != null ) {
381                            //      conn.setPostData( postKey,postData );
382                            // }
383                            if( "POST".equals( method ) && keys != null && vals != null ) { // 4.1.0.0 (2007/12/22)
384                                    conn.setPostData( urlEnc );
385                            }
386                    }
387    
388                    // 4.0.0 (2007/07/25) プロキシの設定追åŠ?
389                    if( proxyHost != null ) {
390                            conn.setProxy( proxyHost,proxyPort );
391                    }
392    
393                    // 5.1.6.0 (2010/05/01) エンコード指定対å¿?
394                    if( encode != null && encode.length() > 0 ) {
395                            conn.setCharset( encode );
396                    }
397                    conn.connect();
398    
399                    return conn;
400            }
401    
402            /**
403             * 出力データをパースしã?DBTableModel及ã?属æ?パラメーターにåˆ?§£しますã?
404             * 現時点では、XMLãƒ??タのみパã?スすることが可能ですã?
405             *
406             * @param input インプットストリーãƒ?
407             */
408            private void parse( final InputStream input ) {
409                    XML2TableParser parser = new XML2TableParser( input );
410                    parser.setTableCols( rowKey, colKeys );
411                    parser.setReturnCols( rtnKeys );
412                    parser.parse();
413    
414                    // DBTableModelを生成しますã?
415                    if( isTableOut ) {
416                            table = DBTableModelUtil.makeDBTable( parser.getCols(), parser.getData(), getResource() );
417                    }
418    
419                    // 戻りå?を取得し、Attributeに登録しますã?
420                    if( rtnKeys != null ) {
421                            Map<String,String> rtn = parser.getRtn();
422                            for( Map.Entry<String, String> entry : rtn.entrySet() ) {
423                                    setRequestAttribute( entry.getKey(), entry.getValue() );
424                            }
425                    }
426            }
427    
428            /**
429             * タグリブオブジェクトをリリースしますã?
430             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
431             *
432             * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
433             *
434             */
435            @Override
436            protected void release2() {
437                    super.release2();
438                    urlStr                  = null;
439                    proxyHost               = null;         // 4.0.0 (2007/07/25)
440                    proxyPort               = -1;           // 4.0.0 (2007/07/25)
441                    keys                    = null;
442                    vals                    = null;
443                    xslFile                 = null;
444                    saveFile                = null;
445                    postKey                 = null;
446                    postData                = null;
447                    useSystemUser   = true;
448                    authUserPass    = null;
449                    display                 = false;
450                    method                  = "GET";        // 4.1.0.0 (2007/12/22)
451                    errNglctFlag    = false;        // 4.1.1.0 (2008/01/22)
452                    soapNameSpace   = null;         // 5.1.5.0 (2010/04/01) SOAP対å¿?
453                    soapMethodName  = null;         // 5.1.5.0 (2010/04/01) SOAP対å¿?
454                    table                   = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
455                    tableId                 = HybsSystem.TBL_MDL_KEY; // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
456                    rowKey                  = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
457                    colKeys                 = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
458                    rtnKeys                 = null;         // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
459                    isTableOut              = false;        // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
460                    isOutParse              = false;        // 5.1.5.0 (2010/04/01) DBTableModel出力対å¿?
461                    encode                  = "UTF-8";      // 5.1.6.0 (2010/05/01) エンコード指定対å¿?
462                    isMainTrans             = true;         // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
463            }
464    
465            /**
466             * 【TAG】アクセスする ?µ?²?¬ を指定しまã�?å¿??)ã€?
467             *
468             * @og.tag
469             * 接続するU?²?¬を指定しますã?(例:http:// ?¥?¥?¥?¥?¥?¥)
470             * ?以降ã?パラメータが含まれてã�?�¦も構いませんã€?
471             * こã?URL に、keys,vals でæŒ?®šされたパラメータも追åŠ?�•れますã?
472             *
473             * @param       url     アクセスする ?µ?²?¬
474             */
475            public void setUrl( final String url ) {
476                    urlStr = nval( getRequestParameter( url ),urlStr );
477            }
478    
479            /**
480             * 【TAG】ã?ロキシ経由で接続するå?合ã?、ã?ロキシホスト名を指定しますã?
481             *
482             * @og.tag
483             * 接続å?がã?プロキシ経由の場合ã?プロキシのホスト名を指定しますã?
484             * 例:proxy.opengion.org
485             *
486             * @param       host    プロキシホスト名
487             */
488            public void setProxyHost( final String host ) {
489                    proxyHost = nval( getRequestParameter( host ),proxyHost );
490                    useSystemUser = false;  // プロキシ接続時は、シスãƒ?ƒ ユーザーは使えませんã€?
491            }
492    
493            /**
494             * 【TAG】ã?ロキシ経由で接続するå?合ã?、ã?ロキシポã?ト番号を指定しますã?
495             *
496             * @og.tag
497             * 接続å?がã?プロキシ経由の場合ã?プロキシのポã?ト番号を指定しますã?
498             * 例ï¼?080
499             *
500             * @param       port    プロキシポã?ト番号
501             */
502            public void setProxyPort( final String port ) {
503                    proxyPort = nval( getRequestParameter( port ),proxyPort );
504            }
505    
506            /**
507             * 【TAG】アクセスパラメータキーをCSV形式でè¤?•°æŒ?®šしますã?
508             *
509             * @og.tag
510             * アクセスする ?µ?²?¬に追åŠ?�™るパラメータのキーを指定しますã?
511             * カンマ区åˆ?‚Šでè¤?•°æŒ?®šできますã?
512             * vals 属æ?には、キーに対応するå?をã?設定してくださいã€?
513             * ä¾?<b>keys="command,SYSTEM_ID"</b> vals="NEW,GE"
514             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
515             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
516             *
517             * [SOAP対応]
518             * SOAPによるWebサービスの呼び出しã?場合ã?keys,valsにæŒ?®šされた値より、env:Envelopタグã‚?
519             * rootタグとするXMLãƒ??タを生成しますã?
520             * (BODY部åˆ?�«直接XMLãƒ??タをå?力することも可能ですã?)
521             * こã?際ã?é ?›®名に'&gt;'を含めることでã€?šŽ層çš?�ªXMLãƒ??タを表現することができますã?
522             * ä¾?
523             *   [属æ?定義]
524             *   keys="param0&gt;AAA,param0&gt;BBB,param1&gt;CCC,DDD"
525             *   vals="v1,v2,v3,v4"
526             *   [XMLãƒ??タ(※ãƒ??タ部のみ)]
527             *   &lt;param0&gt;
528             *     &lt;AAA&gt;v1&lt;/AAA&gt;
529             *     &lt;BBB&gt;v2&lt;/BBB&gt;
530             *   &lt;/param0&gt;
531             *   &lt;param1&gt;
532             *     &lt;CCC&gt;v3&lt;/CCC&gt;
533             *   &lt;/param1&gt;
534             *   &lt;DDD&gt;v4&lt;/DDD&gt;
535             * é ?›®の値ã‚?null"とすることで、XMLでè¨?�†ところの「xsi:nil=\"true\"」ã?ãƒ??タを表現すること
536             * もできますã?
537             * またã?キー名ã?先é?ã‚?&#064;'にすることでã€??目名に名前空間ã?PREFIXを付加することができますã?
538             * ä¸?ˆ¬çš?�«は、JavaやRubyで実è£?�•れたWebサービスを呼び出しするå?合ã?、å¿?¦�ありませんがã?
539             * .NETで実è£?�•れたWebサービスを呼び出しするå?合ã?、各é ?›®にPREFIXを付与しなã�?�¨、正しく
540             * パラメーターを渡すことができませんã€?
541             * ※現時点では、keysの階層定義はã€?階層まで対応してã�?�¾すã?
542             *   3階層以上ã?XML構é?を定義する場合ã?、postFile属æ?によるファイルæŒ?®š又は、Body部åˆ?�§直接
543             *   XMLãƒ??タを記述して下さã�??
544             *
545             * @param       key リンク先に渡すキー
546             * @see         #setVals( String )
547             */
548            public void setKeys( final String key ) {
549                    keys = getCSVParameter( key );
550            }
551    
552            /**
553             * 【TAG】keys属æ?に対応するå?をCSV形式でè¤?•°æŒ?®šしますã?
554             *
555             * @og.tag
556             * キーに設定したå?をã?カンマ区åˆ?‚Šæ–?­—でè¤?•°して出来ますã?
557             * æŒ?®šé?序ã?、キーと同じにしておいて下さã�??
558             * ä¾?<b>keys="command,SYSTEM_ID"</b> vals="NEW,GE"
559             * åˆ?§£方法ã?、CSV変数をå?にåˆ?§£してから、getRequestParameter で値を取得しますã?
560             * こうしなã�?�¨ãƒ??タ自身にカンマを持ってã�?‚‹場合にåˆ?§£をミスる為ですã?
561             *
562             * @param       val names属æ?に対応するå?
563             * @see         #setKeys( String )
564             */
565            public void setVals( final String val ) {
566                    vals = getCSVParameter( val );
567            }
568    
569            /**
570             * 【TAG】é?信メソãƒ?ƒ‰を指定しまã�?GET/POST/SOAP)ã€?
571             *
572             * @og.tag
573             * URLConnectTagのメソãƒ?ƒ‰の初期設定ã?GETですã?
574             * ここで"POST"(大æ–?­?を指定するとkyes,valsの値セãƒ?ƒˆをPOSTで送信しますã?
575             * (postKeyが設定されてã�?‚‹場合ã?こã?値に関係なくPOSTでã�?
576             *
577             * @og.rev 4.1.0.0 (2007/12/22) 新規作æ?
578             *
579             * @param       post_get        送信メソãƒ?ƒ‰(GET/POST/SOAP)
580             */
581            public void setMethod ( final String post_get ) {
582                    method = nval( getRequestParameter( post_get ), method );
583            }
584    
585            /**
586             * 【TAG】Basic認証で接続するユーザーにSYSTEMユーザーを使用するかどã�?�‹[true/false]を指定しまã�?初期値:true)ã€?
587             *
588             * @og.tag
589             * useSystemUser="true"(初期値) の場合ã?URL接続時のコネクションに、Basic認証ã‚?
590             * 使用しますが、その時ã?ユーザーにシスãƒ?ƒ ユーザー(SYSTEM)を使用しますã?
591             * useSystemUser="false"の場合ã?、authUserPass でæŒ?®šしたユーザー?šパスワードを
592             * 使用しますã?authUserPass で、何もæŒ?®šされなかったå?合ã?、Basic認証を使用しませんã€?
593             * 初期値は、true(SYSTEMユーザー認証する) ですã?
594             *
595             * @param   flag [true:SYSTEMユーザー認証する/false:こã?接続ã?ユーザーで認証する]
596             * @see #setAuthUserPass( String )
597             */
598            public void setUseSystemUser( final String flag ) {
599                    useSystemUser = nval( getRequestParameter( flag ),useSystemUser );
600            }
601    
602            /**
603             * 【TAG】Basic認証を使用して接続するå?合ã?ユーザー:パスワードをæŒ?®šしまã�?初期値:null)ã€?
604             *
605             * @og.tag
606             * 接続時のユーザーとパスワードを、USER:PASSWD 形式でæŒ?®šしますã?
607             * useSystemUser="false"の場合ã?、ここでæŒ?®šしたユーザーとパスワードを使用しますã?
608             * そã?場合に、何もæŒ?®šしなã�??合ã?、Basic認証を使用しませんã€?
609             *
610             * @param       userPass        接続ã?ユーザーとパスワーãƒ?USER:PASSWD 形å¼?
611             * @see #setUseSystemUser( String )
612             */
613            public void setAuthUserPass( final String userPass ) {
614                    authUserPass = nval( getRequestParameter( userPass ),authUserPass );
615            }
616    
617            /**
618             * 【TAG】接続ã?結果を表示する場合にXSLT変換する場合ã?ファイルを指定しますã?
619             *
620             * @og.tag
621             *
622             * 接続å?のãƒ??タがã?XML形式ã?場合ã?そã?ままでは、画面出力できなã�??合が
623             * ありますã?通常は、HTML形式に変換しますが、その変換にã€?XSL ファイルã‚?
624             * æŒ?®šすることが可能ですã?
625             * display="true" の場合や、saveFile を指定したå?合にã€?�©用されますã?
626             *
627             * @param       file    接続ã?結果を表示する場合にXSLT変換する場合ã?ファイル
628             * @see #setSaveFile( String )
629             * @see #setDisplay( String )
630             */
631            public void setXslFile( final String file ) {
632                    xslFile = HybsSystem.url2dir( nval( getRequestParameter( file ),xslFile ) );
633            }
634    
635            /**
636             * 【TAG】接続ã?結果を表示するかどã�?�‹を指定しまã�?初期値:false)ã€?
637             *
638             * @og.tag
639             * true で、接続結果を表示しますã? false では、何も表示しません(初期値:false)
640             * 接続結果を表示する使ã�?–¹より、admin 画面に接続して、キャãƒ?‚·ュクリアするような
641             * 使ã�?–¹が多いとè€?�ˆ、å?期å?は、false になってã�?�¾すã?
642             * xslFile が指定されてã�?‚‹場合ã?XSLT変換して画面表示しますã?
643             * display="true" と、saveFile を併用することはできませんã€?
644             *
645             * @param       flag    接続ã?結果を表示するかどã�?�‹(初期値:false)
646             * @see #setSaveFile( String )
647             * @see #setXslFile( String )
648             */
649            public void setDisplay( final String flag ) {
650                    display = nval( getRequestParameter( flag ),display );
651    
652                    if( display && saveFile != null ) {
653                            String errMsg = "display=\"true\" と、saveFile を併用することはできませんã€?;
654                            throw new HybsSystemException( errMsg );
655                    }
656            }
657    
658            /**
659             * 【TAG】接続ã?結果をファイルに保存しますã?
660             *
661             * @og.tag
662             * 接続å?のãƒ??タを受け取って、ファイルに保存しますã?そã?場合ã?
663             * xslFile が指定されてã�?‚‹場合ã?XSLT変換してセーブしますã?
664             * display="true" と、saveFile を併用することはできませんã€?
665             *
666             * @param       file    接続ã?結果を表示する場合にXSLT変換する場合ã?ファイル
667             * @see #setXslFile( String )
668             * @see #setDisplay( String )
669             */
670            public void setSaveFile( final String file ) {
671                    saveFile = HybsSystem.url2dir( nval( getRequestParameter( file ),saveFile ) );
672    
673                    if( display ) {
674                            String errMsg = "display=\"true\" と、saveFile を併用することはできませんã€?;
675                            throw new HybsSystemException( errMsg );
676                    }
677            }
678    
679            /**
680             * 【TAG】POST を使って、postFile属æ?のファイルå†?®¹をé?信する時ã?キーを指定しますã?
681             *
682             * @og.tag
683             * 接続å?にパラメータ(引数)を投げる場合に、POST を使用できますã?
684             * そã?ときã? キーをここでæŒ?®šしますã?
685             * POSTするãƒ??タは、postFileでæŒ?®šされたファイルかã?BODY部に記述された文字å?ですã?
686             *
687             * @param       key     POST を使って、postFile属æ?のファイルå†?®¹をé?信する時ã?キー
688             * @see  #setPostFile( String )
689             */
690            public void setPostKey( final String key ) {
691                    postKey = nval( getRequestParameter( key ),postKey );
692            }
693    
694            /**
695             * 【TAG】POST を使って、postFile属æ?のファイルå†?®¹をé?信しますã?
696             *
697             * @og.tag
698             * 接続å?にパラメータ(引数)を投げる場合に、POST を使用できますã?
699             * そã?ときã? 送信ãƒ??タのファイルをここでæŒ?®šしますã?
700             * postKey のみæŒ?®šされて、postFile が指定されなã�??合ã?、BODY部をé?信しますã?
701             * SOAPによる呼び出しã?場合ã?、こã�?BODY部での定義を含ã‚?でã€??信するXMLãƒ??タã‚?
702             * 定義することができますã?
703             *
704             * @param       file    接続ã?結果を表示する場合にXSLT変換する場合ã?ファイル
705             * @see  #setPostKey( String )
706             */
707            public void setPostFile( final String file ) {
708                    String postFile = nval( getRequestParameter( file ),null );
709    
710                    if( postFile != null ) {
711                            FileString fileStr = new FileString();
712                            fileStr.setFilename( HybsSystem.url2dir( postFile ) );
713                            postData = fileStr.getValue();
714                    }
715            }
716    
717            /**
718             * 【TAGã€?通常は使ã�?�¾せん) 接続エラーを無視するå?合にtrueとしまã�?初期値false)ã€?
719             *
720             * @og.tag
721             * trueにするとConnectで発生したエラーを投げずに処ç�?‚’続行しますã?
722             * (標準エラー出力にエラーå†?®¹は出力されまã�?
723             * 接続エラーが発生してもå?ç�?‚’中断したくなã�??合に設定しますã?
724             *
725             * @og.rev 4.1.1.0 (2008/01/22) 新規追åŠ?
726             *
727             * @param       flag    エラーを無視するå?合にtrue
728             */
729            public void setErrNeglect( final String flag ) {
730                    errNglctFlag = nval( getRequestParameter( flag ), errNglctFlag );
731            }
732    
733            /**
734             * 【TAG】SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名及びパラメーターの名前空間をæŒ?®šしますã?
735             *
736             * @og.tag
737             * SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名及びパラメーターの名前空間をæŒ?®šしますã?
738             * こã?名前空間ã?ã€??常WSDLファイルのdescriptionsタグのtargetNamespace属æ?の値により
739             * 定義されますã?
740             *
741             * @og.rev 5.1.5.0 (2010/04/01) 新規追åŠ?
742             *
743             * @param       ns      名前空é–?
744             */
745            public void setSoapNameSpace( final String ns ) {
746                    soapNameSpace = nval( getRequestParameter( ns ), soapNameSpace );
747            }
748    
749            /**
750             * 【TAG】SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名をæŒ?®šしますã?
751             *
752             * @og.tag
753             * SOAPによるWebサービスの呼び出しで、メソãƒ?ƒ‰名をæŒ?®šしますã?
754             * WSDLファイルで定義されるoperationタグのname属æ?の値に相当しますã?
755             *
756             * @og.rev 5.1.5.0 (2010/04/01) 新規追åŠ?
757             *
758             * @param       method  メソãƒ?ƒ‰å�?
759             */
760            public void setSoapMethodName( final String method ) {
761                    soapMethodName = nval( getRequestParameter( method ), soapMethodName );
762            }
763    
764            /**
765             * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
766             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
767             *
768             * @og.tag
769             * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
770             * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
771             * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
772             * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
773             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
774             *
775             * @param       id sessionに登録する時ã? ID
776             */
777            public void setTableId( final String id ) {
778                    tableId   = nval( getRequestParameter( id ),tableId );
779            }
780    
781            /**
782             * 【TAG】結果のXMLをDBTableModelに変換する際に、行ã?キーとなるタグ名をæŒ?®šしますã?
783             *
784             * @og.tag
785             * 結果のXMLを表形式に変換する際に、行ã?キーとなるタグ名をæŒ?®šしますã?
786             * こã?キーのタグを基点として、colKeysでæŒ?®šされたタグの値を各é ?›®の値として取り込みますã?
787             * (詳細は、colKeysのタグリブ属æ?マニュアルを参照して下さã�??)
788             *
789             * @param       key 行ã?キーとなるタグå�?
790             * @see #setColKeys( String )
791             */
792            public void setRowKey( final String key ) {
793                    rowKey = nval( getRequestParameter( key ),rowKey );
794            }
795    
796            /**
797             * 【TAG】結果のXMLをDBTableModelに変換する際にã€??目のキーとなるタグ名ã?ä¸?¦§を指定しますã?
798             *
799             * @og.tag
800             * 結果のXMLをDBTableModelに変換する際にã€??目のキーとなるタグ名ã?ä¸?¦§を指定しますã?
801             * rowKeyで行を、colKeysでé ?›®を表現しã?rowKeyのタグで囲われた固まりを1つの行とみなしますã?
802             * こã?ため、colKeysにæŒ?®šされたキーのタグでもã?rowKeyの外にある場合ã?、取り込み対象となりませんã€?
803             *
804             * またã?キーにPARENT_TAG、PARENT_FULL_TAGを指定することで、rowKeyでæŒ?®šされたタグの
805             * 直近ã?親タグ、及びフルの親タグå�?親タグの階層ã‚?&gt;[タグA]&gt;[タグB]&gt;[タグC]&gt;"で表現)ã‚?
806             * 取得することができますã?
807             *
808             * @param       keys é ?›®のキーとなるタグ名ã?ä¸?¦§
809             */
810            public void setColKeys( final String keys ) {
811                    colKeys = StringUtil.csv2Array( getRequestParameter( keys ) );
812            }
813    
814            /**
815             * 【TAG】結果のXMLを変換する際に、パラメータ(Attributes)として取り込ã‚?‚­ーのä¸?¦§を指定しますã?
816             *
817             * @og.tag
818             * 結果のXMLを変換する際に、パラメータ(Attributes)として取り込ã‚?‚­ーのä¸?¦§を指定しますã?
819             * ここでæŒ?®šされたキーのタグの値を取りå?しã?{&#064;XX}形å¼?Attributes)として処ç�?�§きるようにしますã?
820             *
821             * @param       keys パラメーター(Attributes)のキーとなるタグ名ã?ä¸?¦§
822             */
823            public void setRtnKeys( final String keys ) {
824                    rtnKeys = StringUtil.csv2Array( getRequestParameter( keys ) );
825            }
826    
827            /**
828             * 【TAG】データの入出力ã?エンコードをæŒ?®šしますã?
829             *
830             * @og.tag
831             * ãƒ??タの入出力ã?エンコードをæŒ?®šしますã?
832             * 初期値はã€?UTF-8"ですã?
833             *
834             * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
835             * @param       enc     エンコーãƒ?
836             */
837            public void setEncode( final String enc ) {
838                    encode = nval( getRequestParameter( enc ), encode );
839            }
840    
841            /**
842             * タグの名称をã?返しますã?
843             * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
844             *
845             * @og.rev 4.0.0.0 (2005/01/31) 新規追åŠ?
846             *
847             * @return  タグの名称
848             */
849            @Override
850            protected String getTagName() {
851                    return "urlConnect" ;
852            }
853    
854            /**
855             * 【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)ã€?
856             *
857             * @og.tag
858             * (通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œ、メインとなるトランザクション処ç�?�‹どã�?�‹を指定しますã?(初期値:false)
859             * こã?値は、ファイルãƒ?‚¦ンロードå?ç�?�«影響しますã?こã?値がtrueにæŒ?®šされた時にcommitされたDBTableModelã�?
860             * ファイルãƒ?‚¦ンロードã?対象の表になりますã?
861             *
862             * こã?パラメーターはã€??常、各タグにより実è£?�•れã?ユーザーが指定するå¿?¦�ã?ありませんã€?
863             * ä½?�—ã€?つのJSPå†?�§DBTableModelがè¤?•°生æ?されるå?合に、前に処ç�?�—たDBTableModelにつã�?�¦ファイルãƒ?‚¦ンロードをさせたい
864             * 場合ã?、後ろでDBTableModelを生成するタグで、æ?示çš?�«こã?値をfalseにæŒ?®šすることで、ファイルãƒ?‚¦ンロードå?ç�??対象から
865             * 除外することができますã?
866             *
867             * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
868             *
869             * @param  flag メイントランザクションかどã�?�‹
870             */
871            public void setMainTrans( final String flag ) {
872                    isMainTrans = nval( getRequestParameter( flag ),isMainTrans );
873            }
874    
875            /**
876             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
877             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
878             *
879             * @return こã?クラスのæ–?­—å?表現
880             */
881            @Override
882            public String toString() {
883                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
884                                    .println( "VERSION"                     ,VERSION                )
885                                    .println( "method"                      ,method                 )
886                                    .println( "urlStr"                      ,urlStr                 )
887                                    .println( "keys"                        ,StringUtil.array2csv( keys ) )
888                                    .println( "vals"                        ,StringUtil.array2csv( vals ) )
889                                    .println( "proxyHost"           ,proxyHost              )
890                                    .println( "proxyPort"           ,proxyPort              )
891                                    .println( "useSystemUser"       ,useSystemUser  )
892                                    .println( "authUserPass"        ,authUserPass   )
893                                    .println( "display"                     ,display                )
894                                    .println( "postData"            ,postData               )
895                                    .println( "xslFile"                     ,xslFile                )
896                                    .println( "saveFile"            ,saveFile               )
897                                    .println( "errNglctFlag"        ,errNglctFlag   )
898                                    .println( "soapNameSpace"       ,soapNameSpace  )
899                                    .println( "soapMethodName"      ,soapMethodName )
900                                    .println( "tableId"                     ,tableId                )
901                                    .println( "rowKey"                      ,rowKey                 )
902                                    .println( "colKeys"                     ,StringUtil.array2csv( colKeys ) )
903                                    .println( "rtnKeys"                     ,StringUtil.array2csv( rtnKeys ) )
904                                    .println( "Other..."            ,getAttributes().getAttribute() )
905                                    .fixForm().toString() ;
906            }
907    }