    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 */
    016package org.opengion.hayabusa.taglib;
    017
    018import java.io.File;                                                                                    // 8.0.0.1 (2021/10/08)
    019
    020import org.opengion.fukurou.util.StringUtil;
    021import org.opengion.fukurou.util.ToString;                                              // 6.1.1.0 (2015/01/17)
    022import org.opengion.hayabusa.common.HybsSystem;
    023import org.opengion.hayabusa.db.DBTableModel;
    024import org.opengion.hayabusa.db.DBTableModelUtil;
    025import org.opengion.hayabusa.report2.QueueManager_DIRECT;
    026import org.opengion.hayabusa.io.HybsFileOperationFactory;               // 8.0.0.1 (2021/10/08)
    027// import org.opengion.fukurou.model.FileOperation;                             // 8.0.0.1 (2021/10/08)
    028// import org.opengion.fukurou.util.FileUtil;                                   // 8.0.0.1 (2021/10/08)
    029
    030import static org.opengion.fukurou.util.StringUtil.nval;
    031
    032/**
    033 * 検索結果の DBTableModelｵﾌﾞｼﾞｪｸﾄをﾚﾎﾟｰﾄ形式に変換するﾀｸﾞです｡
    034 *
    035 * ﾃﾞｰﾀ(DBTableModel)と､ｺﾝﾄﾛｰﾗ(QueueManager_DIRECT ｸﾗｽ)を与えて､
    036 * 外部からｺﾝﾄﾛｰﾙすることで､各種形式で ﾃﾞｰﾀ(DBTableModel)を表示させることが
    037 * 可能です｡
    038 * このﾀｸﾞを使用するには､OpenOffice.orgのﾓｼﾞｭｰﾙがｲﾝｽﾄｰﾙされてている必要があります｡
    039 * また､出力するために帳票ｼｽﾃﾑ関連のﾃﾞｰﾀ設定やﾏｽﾀ設定は一切必要ありません｡
    040 *
    041 * @og.formSample
    042 * ●形式：&lt;og:report fileURL="[･･･]" listId="[･･･]" ･･･ /&gt;
    043 * ●body：なし
    044 *
    045 * ●Tag定義：
    046 *   &lt;og:report2
    047 *       fileURL            【TAG】雛型のHTMLﾌｧｲﾙの保存してある ﾃﾞｨﾚｸﾄﾘを指定します
    048 *       listId           ○【TAG】帳票IDを指定します(必須)｡
    049 *       outFileURL         【TAG】出力HTMLﾌｧｲﾙの保存してあるﾃﾞｨﾚｸﾄﾘを指定します(初期値:FILE_URL[={@og.value SystemData#FILE_URL}])
    050 *       outFilename      ○【TAG】ﾌｧｲﾙを作成するときの出力ﾌｧｲﾙ名をｾｯﾄします(必須)｡
    051 *       headerKeys         【TAG】固定部の{&#064;KEY} の KEY 部分をCSV形式で複数指定します
    052 *       headerVals         【TAG】固定部のKEY に対応する値をCSV形式で複数指定します
    053 *       footerKeys         【TAG】繰り返し部の終了後に表示する key 部分をCSV形式で複数指定します
    054 *       footerVals         【TAG】固定部のKEY に対応する値をCSV形式で複数指定します
    055 *       pageEndCut         【TAG】ﾎﾞﾃﾞｨｰ部(繰り返し部)がなくなったときに､それ以降を表示するかどうか[true/false]を指定します(初期値:true)
    056 *       useLocalResource   【TAG】各ｼｽﾃﾑのﾘｿｰｽ(ﾛｰｶﾙﾘｿｰｽ)を使用するか[true/false]を指定します(初期値:true)
    057 *       useSheetName       【TAG】PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか[true/false]を指定します(初期値:false)
    058 *       fgrun              【TAG】出力方法を指定します(初期値:P(PDF出力))
    059 *       printerName        【TAG】ﾌﾟﾘﾝﾀｰ名を指定します
    060 *       useLocal           【TAG】ｼｽﾃﾑ定数でｸﾗｳﾄﾞ設定されていても､ｸﾗｳﾄﾞ環境を使用しない場合､trueを指定します(初期値:false) 8.0.1.0 (2021/10/29)
    061 *       language           【TAG】ﾀｸﾞ内部で使用する言語ｺｰﾄﾞ[ja/en/zh/…]を指定します
    062 *       scope              【TAG】ｷｬｯｼｭする場合のｽｺｰﾌﾟ[request/page/session/application]を指定します(初期値:session)
    063 *       tableId            【TAG】(通常は使いません)sessionから所得する DBTableModelｵﾌﾞｼﾞｪｸﾄの ID
    064 *       debug              【TAG】ﾃﾞﾊﾞｯｸﾞ情報を出力するかどうか[true/false]を指定します(初期値:false)
    065 *   /&gt;
    066 *
    067 * ●使用例
    068 *
    069 * @og.group その他出力
    070 *
    071 * @version  4.0
    072 * @author   Hiroki Nakamura
    073 * @since    JDK5.0,
    074 */
    075public class ReportTableTag2 extends CommonTagSupport {
    076        /** このﾌﾟﾛｸﾞﾗﾑのVERSION文字列を設定します｡ {@value} */
    077        private static final String VERSION = "8.0.1.0 (2021/10/29)" ;
    078        private static final long serialVersionUID = 801020211029L ;
    079
    080        private final String  BASE_URL  = HybsSystem.sys( "FILE_URL" );
    081
    082        private String          fileURL                 = BASE_URL;     // 雛形ﾌｧｲﾙURL
    083        private String          listId                  ;                       // 帳票ID
    084        private String          outFileURL              = BASE_URL;     // 出力ﾌｧｲﾙURL
    085        private String          outFilename             ;                       // 出力ﾌｧｲﾙ名
    086        private String[]        headerKeys              ;                       // 固定部の{@KEY} の KEY 部分を指定する｡ｶﾝﾏで複数指定できる｡
    087        private String[]        headerVals              ;                       // 固定部のKEY に対応する値を指定する｡ {@KEY} に置き換わる｡
    088        private String[]        footerKeys              ;                       // 繰り返し部の終了後に表示する key 部分を指定する｡ｶﾝﾏで複数指定できる｡
    089        private String[]        footerVals              ;                       // 繰り返し部の終了後に表示する key に対する値を指定する｡
    090        private boolean         pageEndCut              = true;         // ﾍﾟｰｼﾞｴﾝﾄﾞｶｯﾄをするか
    091        private boolean         useLocalResource= true;         // ﾛｰｶﾙﾘｿｰｽを使用するか
    092        private boolean         useSheetName    ;                       // 5.7.6.2 (2014/05/16) PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか｡
    093        private String          fgrun                   = "P";          // PDF出力
    094        private String          printerName             ;                       // ﾌﾟﾘﾝﾀ名
    095        private boolean         useLocal                ;                       // 8.0.1.0 (2021/10/29) ｸﾗｳﾄﾞ設定を使用しない場合は､true
    096
    097        private String          tableId                 = HybsSystem.TBL_MDL_KEY ;
    098
    099        private transient DBTableModel body             ;
    100        private transient DBTableModel header   ;
    101        private transient DBTableModel footer   ;
    102
    103        /**
    104         * ﾃﾞﾌｫﾙﾄｺﾝｽﾄﾗｸﾀｰ
    105         *
    106         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    107         */
    108        public ReportTableTag2() { super(); }           // これも､自動的に呼ばれるが､空のﾒｿｯﾄﾞを作成すると警告されるので､明示的にしておきます｡
    109
    110        /**
    111         * Taglibの終了ﾀｸﾞが見つかったときに処理する doEndTag() を ｵｰﾊﾞｰﾗｲﾄﾞします｡
    112         *
    113         * @og.rev 8.0.0.2 (2021/10/15) ﾛｰｶﾙﾌｧｲﾙとｸﾗｳﾄﾞﾌｧｲﾙ間の移動
    114         *
    115         * @return      後続処理の指示
    116         */
    117        @Override
    118        public int doEndTag() {
    119                debugPrint();
    120
    121                final int rtnCode;
    122
    123                body = (DBTableModel)getObject( tableId );
    124                if( body == null || body.getRowCount() == 0 ) {
    125                        rtnCode = SKIP_PAGE ; // ﾍﾟｰｼﾞの残りの処理を行わない｡
    126                }
    127                else {
    128                        exec();
    129
    130                        // 8.0.0.2 (2021/10/15) ﾛｰｶﾙﾌｧｲﾙとｸﾗｳﾄﾞﾌｧｲﾙ間の移動
    131                        // 5.10.9.0 (2019/03/01) ADD ｸﾗｳﾄﾞｽﾄﾚｰｼﾞ指定の場合は､作成されたﾌｧｲﾙをｱｯﾌﾟﾛｰﾄﾞします｡
    132                        final String outFile = HybsSystem.url2dir( outFileURL , outFilename );
    133                        HybsFileOperationFactory.local2cloud( useLocal,() -> new File( outFile ) );
    134
    135//                      final FileOperation cloudFile = HybsFileOperationFactory.create( outFile );
    136//                      if( cloudFile.isCloud() ) {
    137//                              final File localFile = new File( outFile );
    138//                              FileUtil.copy( localFile, cloudFile );
    139//                              localFile.delete();
    140//                      }
    141
    142                        rtnCode = EVAL_PAGE ;
    143                }
    144
    145                return rtnCode ;
    146        }
    147
    148        /**
    149         * ﾀｸﾞﾘﾌﾞｵﾌﾞｼﾞｪｸﾄをﾘﾘｰｽします｡
    150         * ｷｬｯｼｭされて再利用されるので､ﾌｨｰﾙﾄﾞの初期設定を行います｡
    151         *
    152         * @og.rev 5.7.6.2 (2014/05/16) PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか｡
    153         * @og.rev 8.0.1.0 (2021/10/29) useLocal 属性を追加｡
    154         */
    155        @Override
    156        protected void release2() {
    157                super.release2();
    158                fileURL                 = BASE_URL;
    159                listId                  = null;
    160                outFileURL              = BASE_URL;
    161                outFilename             = null;
    162                headerKeys              = null;
    163                headerVals              = null;
    164                footerKeys              = null;
    165                footerVals              = null;
    166                pageEndCut              = true;
    167                useLocalResource= true;
    168                useSheetName    = false;        // 5.7.6.2 (2014/05/16) PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか｡
    169                fgrun                   = "P";
    170                printerName             = null;
    171                useLocal                = false;        // 8.0.1.0 (2021/10/29) ｸﾗｳﾄﾞ設定を使用しない場合は､true
    172
    173                tableId                 = HybsSystem.TBL_MDL_KEY ;
    174                body                    = null;
    175                header                  = null;
    176                footer                  = null;
    177        }
    178
    179        /**
    180         * 帳票処理を行います｡
    181         *
    182         * @og.rev 4.3.3.4 (2008/11/01) ﾍｯﾀﾞｰ､ﾌｯﾀｰ値が設定されていない場合にNullPointerExceptionが出るﾊﾞｸﾞを修正
    183         * @og.rev 4.3.3.4 (2008/11/01) 雛形のﾊﾟｽ及び､出力先のﾊﾟｽを実ﾃﾞｨﾚｸﾄﾘのﾊﾟｽに変換
    184         * @og.rev 5.7.6.2 (2014/05/16) PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか｡
    185         * @og.rev 6.4.2.1 (2016/02/05) HybsSystem.url2dir に引数追加｡
    186         *
    187         */
    188        private void exec()  {
    189                final QueueManager_DIRECT manager = new QueueManager_DIRECT();
    190                manager.setListId( listId );
    191                manager.setLang( getLanguage() );
    192                manager.setOutputName( HybsSystem.url2dir( outFileURL , outFilename ) );        // 6.4.2.1 (2016/02/05)
    193                manager.setOutputType( fgrun );
    194                manager.setTemplateName( HybsSystem.url2dir( fileURL , listId ) );                      // 6.4.2.1 (2016/02/05)
    195                manager.setPrinterName( printerName );
    196                manager.setFgcut( pageEndCut );
    197                manager.setFglocal( useLocalResource );
    198                manager.setUseSheetName( useSheetName );                // 5.7.6.2 (2014/05/16) PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうか｡
    199
    200                manager.setBody( body );
    201
    202                // 4.3.3.4 (2008/11/01)
    203                if( headerVals != null && headerVals.length > 0 ) {
    204                        String[][] hvals = new String[headerVals.length][1];
    205                        hvals[0] = headerVals;
    206                        header = DBTableModelUtil.makeDBTable( headerKeys, hvals, getResource() );
    207                        manager.setHeader( header );
    208                }
    209
    210                // 4.3.3.4 (2008/11/01)
    211                if( footerVals != null && footerVals.length > 0 ) {
    212                        String[][] fvals = new String[footerVals.length][1];
    213                        fvals[0] = footerVals;
    214                        footer = DBTableModelUtil.makeDBTable( footerKeys, fvals, getResource() );
    215                        manager.setFooter( footer );
    216                }
    217
    218                manager.create();
    219                manager.waitExec();
    220        }
    221
    222        /**
    223         * 【TAG】雛型のHTMLﾌｧｲﾙの保存してある ﾃﾞｨﾚｸﾄﾘを指定します｡
    224         *
    225         * @og.tag
    226         * この属性で指定されるﾃﾞｨﾚｸﾄﾘのﾌｧｲﾙを読み取ります｡
    227         * 指定方法は､通常の fileURL 属性と同様に､先頭が､'/' (UNIX) または､２文字目が､
    228         * ":" (Windows)の場合は､指定のURLそのままのﾃﾞｨﾚｸﾄﾘに､そうでない場合は､
    229         * ｼｽﾃﾑﾊﾟﾗﾒｰﾀ の FILE_URL 属性で指定のﾌｫﾙﾀﾞの下に､作成されます｡
    230         * fileURL = "{&#064;USER.ID}" と指定すると､FILE_URL 属性で指定のﾌｫﾙﾀﾞの下に､
    231         * さらに､各個人ID別のﾌｫﾙﾀﾞを作成して､そこを操作します｡
    232         *
    233         * @og.rev 6.4.2.1 (2016/02/05) URLの最後に､"/" を追加する処理を廃止｡
    234         *
    235         * @param       url 雛型のHTMLﾌｧｲﾙのﾃﾞｨﾚｸﾄﾘ
    236         */
    237        public void setFileURL( final String url ) {
    238                final String furl = nval( getRequestParameter( url ),null );
    239                if( furl != null ) {
    240                        fileURL = StringUtil.urlAppend( fileURL,furl );
    241                }
    242        }
    243
    244        /**
    245         * 【TAG】帳票IDを指定します｡
    246         *
    247         * @og.tag
    248         * 帳票IDを指定します｡
    249         *
    250         * @param       listId  帳票ID
    251         */
    252        public void setListId( final String listId ) {
    253                this.listId = nval( getRequestParameter( listId ), this.listId );
    254        }
    255
    256        /**
    257         * 【TAG】出力HTMLﾌｧｲﾙの保存してあるﾃﾞｨﾚｸﾄﾘを指定します
    258         *              (初期値:FILE_URL[={@og.value SystemData#FILE_URL}])｡
    259         *
    260         * @og.tag
    261         * この属性で指定されるﾃﾞｨﾚｸﾄﾘにﾌｧｲﾙを出力します｡
    262         * 指定方法は､通常の fileURL 属性と同様に､先頭が､'/' (UNIX) または､２文字目が､
    263         * ":" (Windows)の場合は､指定のURLそのままのﾃﾞｨﾚｸﾄﾘに､そうでない場合は､
    264         * ｼｽﾃﾑﾊﾟﾗﾒｰﾀ の FILE_URL 属性で指定のﾌｫﾙﾀﾞの下に､作成されます｡
    265         * fileURL = "{&#064;USER.ID}" と指定すると､FILE_URL 属性で指定のﾌｫﾙﾀﾞの下に､
    266         * さらに､各個人ID別のﾌｫﾙﾀﾞを作成して､そこに出力します｡
    267         * (初期値:FILE_URL[={@og.value SystemData#FILE_URL}])｡
    268         *
    269         * @og.rev 6.4.2.1 (2016/02/05) URLの最後に､"/" を追加する処理を廃止｡
    270         *
    271         * @param       url 出力HTMLﾌｧｲﾙのﾃﾞｨﾚｸﾄﾘ
    272         */
    273        public void setOutFileURL( final String url ) {
    274                final String furl = nval( getRequestParameter( url ),null );
    275                if( furl != null ) {
    276                        outFileURL = StringUtil.urlAppend( outFileURL,furl );
    277                }
    278        }
    279
    280        /**
    281         * 【TAG】ﾌｧｲﾙを作成するときの出力ﾌｧｲﾙ名をｾｯﾄします｡
    282         *
    283         * @og.tag
    284         * ﾌｧｲﾙを作成するときの出力ﾌｧｲﾙ名をｾｯﾄします｡
    285         * 紙に印字する場合などﾌｧｲﾙに出力しない場合は不要です｡
    286         *
    287         * @param   filename 出力ﾌｧｲﾙ名
    288         */
    289        public void setOutFilename( final String filename ) {
    290                this.outFilename = nval( getRequestParameter( filename ),this.outFilename );
    291        }
    292
    293        /**
    294         * 【TAG】固定部の{&#064;KEY} の KEY 部分をCSV形式で複数指定します｡
    295         *
    296         * @og.tag
    297         * ｶﾝﾏで複数指定できます｡
    298         * 分解方法は､CSV変数を先に分解してから､getRequestParameter で値を取得します｡
    299         * こうしないとﾃﾞｰﾀ自身にｶﾝﾏを持っている場合に分解をﾐｽる為です｡
    300         *
    301         * @param   hKeys 固定部のkey
    302         */
    303        public void setHeaderKeys( final String hKeys ) {
    304                headerKeys = getCSVParameter( hKeys );
    305        }
    306
    307        /**
    308         * 【TAG】固定部のKEY に対応する値をCSV形式で複数指定します｡
    309         *
    310         * @og.tag
    311         * ｶﾝﾏで複数指定で､ﾘｸｴｽﾄ情報でも設定できます｡
    312         * 分解方法は､CSV変数を先に分解してから､getRequestParameter で値を取得します｡
    313         * こうしないとﾃﾞｰﾀ自身にｶﾝﾏを持っている場合に分解をﾐｽる為です｡
    314         *
    315         * @param   hVals 固定部の値
    316         */
    317        public void setHeaderVals( final String hVals ) {
    318                headerVals = getCSVParameter( hVals );
    319        }
    320
    321        /**
    322         * 【TAG】繰り返し部の終了後に表示する key 部分をCSV形式で複数指定します｡
    323         *
    324         * @og.tag
    325         * ｶﾝﾏで複数指定できます｡
    326         * 分解方法は､CSV変数を先に分解してから､getRequestParameter で値を取得します｡
    327         * こうしないとﾃﾞｰﾀ自身にｶﾝﾏを持っている場合に分解をﾐｽる為です｡
    328         *
    329         * @param   ftKeys 繰り返し部の終了後に表示するkey
    330         */
    331        public void setFooterKeys( final String ftKeys ) {
    332                footerKeys = getCSVParameter( ftKeys );
    333        }
    334
    335        /**
    336         * 【TAG】固定部のKEY に対応する値をCSV形式で複数指定します｡
    337         *
    338         * @og.tag
    339         * ｶﾝﾏで複数指定で､ﾘｸｴｽﾄ情報でも設定できます｡
    340         * 分解方法は､CSV変数を先に分解してから､getRequestParameter で値を取得します｡
    341         * こうしないとﾃﾞｰﾀ自身にｶﾝﾏを持っている場合に分解をﾐｽる為です｡
    342         *
    343         * @param   ftVals 繰り返し部の終了後に表示する値
    344         */
    345        public void setFooterVals( final String ftVals ) {
    346                footerVals = getCSVParameter( ftVals );
    347        }
    348
    349        /**
    350         * 【TAG】ﾍﾟｰｼﾞｴﾝﾄﾞｶｯﾄするかどうか[true:する/false:しない]を指定します(初期値:true:ｶｯﾄする)｡
    351         *
    352         * @og.tag
    353         * ﾍﾟｰｼﾞｴﾝﾄﾞｶｯﾄとは､ﾎﾞﾃﾞｨｰ部(繰り返し部)がなくなったときに､それ以降の表示を打ち切る（ｶｯﾄする）
    354         * 機能で､(true:ｶｯﾄする) を指定すると､それ以降を出力しません｡
    355         * 初期値は "true" (なくなった時点で､出力しない)です｡
    356         *
    357         * @param   peCut ﾍﾟｰｼﾞ終了ｶｯﾄ [true:する/false:しない]
    358         */
    359        public void setPageEndCut( final String peCut ) {
    360                pageEndCut = nval( getRequestParameter( peCut ),pageEndCut );
    361        }
    362
    363        /**
    364         * 【TAG】各ｼｽﾃﾑのﾘｿｰｽ(ﾛｰｶﾙﾘｿｰｽ)を使用するかどうか[true:する/false:しない]を指定します(初期値:true)｡
    365         *
    366         * @og.tag
    367         * true の場合､各ｼｽﾃﾑに登録されたﾘｿｰｽ情報を使用して帳票ﾃﾞｰﾀが変換されます｡
    368         * false の場合は､帳票ﾃﾞｰﾓﾝが起動しているｼｽﾃﾑ(通常は'GE')のﾘｿｰｽが適用されます｡
    369         * 初期値は "true" (ﾛｰｶﾙﾘｿｰｽを使用する)です｡
    370         *
    371         * @param   fgl  ﾛｰｶﾙﾘｿｰｽの使用 [true:する/false:しない]
    372         */
    373        public void setUseLocalResource( final String fgl ) {
    374                useLocalResource = nval( getRequestParameter( fgl ),useLocalResource );
    375        }
    376
    377        /**
    378         * 【TAG】PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として使うかどうかをｾｯﾄします(初期値:false)｡
    379         *
    380         * @og.tag
    381         * PAGEBREAK で､ｼｰﾄﾁｪﾝｼﾞを行う場合､ｼｰﾄ名も指定したい場合があります｡
    382         * その場合､この､useSheetName="true" とすることで､PAGEBREAKｶﾗﾑの値を､ｼｰﾄ名として
    383         * 使用します｡
    384         * useSheetName="false" の場合は､"Page"+ﾍﾟｰｼﾞ番号+"_Row"+現在行番号 がｼｰﾄ名になります｡
    385         *
    386         * PAGEBREAK は､FIRSTｼｰﾄ雛形にも適用されます｡
    387         * ちなみに､FIRSTｼｰﾄ雛形は､特殊で､useSheetName="false" の場合でも､
    388         * FIRST_**** などと記述した場合は､**** 文字列をｼｰﾄ名に使用します｡
    389         * FIRST だけの場合は､従来と同じｼｰﾄ名になります｡
    390         * 初期値は､互換性を考慮し､false:ｼｰﾄ名として使用しない です｡
    391         *
    392         * @og.rev 5.7.6.2 (2014/05/16) 新規追加
    393         *
    394         * @param useSName PAGEBREAKｶﾗﾑのｼｰﾄ名使用可否 [true:使用/false:使用しない]
    395         */
    396        public void setUseSheetName( final String useSName ) {
    397                useSheetName = nval( getRequestParameter( useSName ),useSheetName );
    398        }
    399
    400        /**
    401         * 【TAG】出力方法を指定します(初期値:P(PDF出力))｡
    402         *
    403         * @og.tag
    404         * 出力方法のｺｰﾄﾞは､FGRUNのｺｰﾄﾞﾘｿｰｽと同じものが指定できます｡
    405         * 初期値は "P" (PDF出力)です｡
    406         *
    407         * @param   code 出力方法(FGRUNのｺｰﾄﾞﾘｿｰｽと同じもの)
    408         */
    409        public void setFgrun( final String code ) {
    410                fgrun= nval( getRequestParameter( code ),fgrun );
    411        }
    412
    413        /**
    414         * 【TAG】ﾌﾟﾘﾝﾀｰ名を指定します｡
    415         *
    416         * @og.tag
    417         * ﾌﾟﾘﾝﾀｰ名を指定します｡このﾌﾟﾘﾝﾀｰ名は帳票ｻｰﾊﾞｰ上でのﾌﾟﾘﾝﾀ名です｡
    418         * ﾌｧｲﾙ出力等､紙に印刷しない場合は不要です｡
    419         *
    420         * @param   ptnm ﾌﾟﾘﾝﾀｰ名
    421         */
    422        public void setPrinterName( final String ptnm ) {
    423                printerName = nval( getRequestParameter( ptnm ),printerName );
    424        }
    425
    426        /**
    427         * 【TAG】ｼｽﾃﾑ定数でｸﾗｳﾄﾞ設定されていても､ｸﾗｳﾄﾞ環境を使用しない場合､trueを指定します(初期値:false)｡
    428         *
    429         * @og.tag
    430         * ｸﾗｳﾄﾞ設定は､ｼｽﾃﾑ定数の『CLOUD_TARGET』と『CLOUD_BUCKET』の設定で自動的に使用しますが､
    431         * どうしてもﾛｰｶﾙでのみ使いたい場合は､この属性を true に設定します｡
    432         * 標準はfalse:設定どおりとなります｡
    433         *
    434         * true/false以外を指定した場合はfalse扱いとします｡
    435         *
    436         * @og.rev 8.0.1.0 (2021/10/29) useLocal 属性を追加｡
    437         *
    438         * @param flag ﾛｰｶﾙ環境のみ [true:ﾛｰｶﾙのみ/false:設定どおり]
    439         */
    440        public void setUseLocal( final String flag ) {
    441                useLocal = nval( getRequestParameter( flag ),useLocal );
    442        }
    443
    444        /**
    445         * 【TAG】(通常は使いません)結果のDBTableModelを､sessionに登録するときのｷｰを指定します
    446         *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])｡
    447         *
    448         * @og.tag
    449         * 検索結果より､DBTableModelｵﾌﾞｼﾞｪｸﾄを作成します｡これを､下流のviewﾀｸﾞ等に
    450         * 渡す場合に､通常は､session を利用します｡その場合の登録ｷｰです｡
    451         * query ﾀｸﾞを同時に実行して､結果を求める場合､同一ﾒﾓﾘに配置される為､
    452         * この tableId 属性を利用して､ﾒﾓﾘ空間を分けます｡
    453         *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])｡
    454         *
    455         * @param       id ﾃｰﾌﾞﾙID (sessionに登録する時のID)
    456         */
    457        public void setTableId( final String id ) {
    458                tableId = nval( getRequestParameter( id ), tableId );
    459        }
    460
    461        /**
    462         * ﾀｸﾞの名称を､返します｡
    463         * 自分自身のｸﾗｽ名より､自動的に取り出せないため､このﾒｿｯﾄﾞをｵｰﾊﾞｰﾗｲﾄﾞします｡
    464         *
    465         * @og.rev 4.0.0.0 (2005/01/31) 新規追加
    466         *
    467         * @return  ﾀｸﾞの名称
    468         * @og.rtnNotNull
    469         */
    470        @Override
    471        protected String getTagName() {
    472                return "report2" ;
    473        }
    474
    475        /**
    476         * このｵﾌﾞｼﾞｪｸﾄの文字列表現を返します｡
    477         * 基本的にﾃﾞﾊﾞｯｸﾞ目的に使用します｡
    478         *
    479         * @return このｸﾗｽの文字列表現
    480         * @og.rtnNotNull
    481         */
    482        @Override
    483        public String toString() {
    484                return ToString.title( this.getClass().getName() )
    485                                .println( "VERSION"             ,VERSION        )
    486                                .println( "fileURL"                     ,fileURL                        )
    487                                .println( "listId"                      ,listId                         )
    488                                .println( "outFileURL"          ,outFileURL                     )
    489                                .println( "outFilename"         ,outFilename            )
    490                                .println( "headerKeys"          ,headerKeys                     )
    491                                .println( "headerVals"          ,headerVals                     )
    492                                .println( "footerKeys"          ,footerKeys                     )
    493                                .println( "footerVals"          ,footerVals                     )
    494                                .println( "pageEndCut"          ,pageEndCut                     )
    495                                .println( "useLocalResource",useLocalResource   )
    496                                .println( "fgrun"                       ,fgrun                          )
    497                                .println( "printerName"         ,printerName            )
    498                                .println( "tableId"                     ,tableId                        )
    499                                .println( "BASE_URL"            ,BASE_URL                       )
    500                                .println( "Other..."    ,getAttributes().getAttribute() )
    501                                .fixForm().toString() ;
    502        }
    503}