    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 org.opengion.hayabusa.common.HybsSystem;
    019import org.opengion.hayabusa.common.SystemManager ;                                     // 6.3.8.4 (2015/10/09)
    020import org.opengion.hayabusa.resource.GUIInfo;
    021import org.opengion.fukurou.util.Attributes;
    022import org.opengion.fukurou.util.XHTMLTag;
    023import org.opengion.fukurou.util.ToString;                                                      // 6.1.1.0 (2015/01/17)
    024import org.opengion.fukurou.util.StringUtil ;                                           // 6.2.2.0 (2015/03/27)
    025import org.opengion.fukurou.util.Cleanable;                                                     // 6.3.8.4 (2015/10/09)
    026import org.opengion.fukurou.util.FileMap;                                                       // 6.3.8.4 (2015/10/09)
    027import org.opengion.fukurou.db.DBUtil;                                                          // 6.3.8.4 (2015/10/09)
    028
    029import static org.opengion.fukurou.util.StringUtil.nval ;
    030
    031import java.util.Set;                                                                                           // 6.3.8.4 (2015/10/09)
    032import java.util.HashSet;                                                                                       // 6.3.8.4 (2015/10/09)
    033
    034/**
    035 * 画面ＩＤと同じヘルプファイルがあればリンクを作成するタグです(通常は query.jsp に組込み)。
    036 *
    037 * ヘルプファイルは、システムパラメータ の HELP_URL で定義されているhelpフォルダに配置します。
    038 * このフォルダに、画面IDと同じファイル(例えば、GE0001.html など)があれば、リンクを作成します。
    039 * ファイルがなければ、リンクは表示されません。
    040 * メッセージの表示の制御は、viewMsg 属性で指定します。(false でファイルが存在した場合のみ表示)
    041 * ファイルの拡張子も指定できますが、一般に、html でヘルプファイルを作成するほうが
    042 * すばやく表示できます。
    043 * ※ 6.3.8.4 (2015/10/09) topMenuタグ内のhelpタグ機能 廃止
    044 * <del>また、og:topMenuタグ内にこのタグを記述することで、各画面分類に対するヘルプを表示することが
    045 * できるようになります。
    046 * (この場合も、画面分類のキーがヘルプファイルのキーになります)</del>
    047 *
    048 * ※ 6.3.8.4 (2015/10/09)
    049 *    ヘルプファイルと、GE80(FAQﾃｰﾌﾞﾙ)の関連画面IDについて、先に検索してMapにセットする方法に変更します。
    050 *    従来は、ヘルプファイルは都度、GE80(FAQﾃｰﾌﾞﾙ)は、org.opengion.hayabusa.resource.GUIDataLoader
    051 *    で、読込処理していました。
    052 *
    053 * @og.formSample
    054 * ●形式：一般ユーザーが直接組み込むことはありません。
    055 * ●body：なし
    056 *
    057 * ●Tag定義：
    058 *   &lt;og:help
    059 *       guiInfoKey         【TAG】GUIInfo のキーを指定します
    060 *       lbl                【TAG】ラベルリソースのラベルIDを指定します
    061 *       target             【TAG】TARGET 属性を指定します(初期値:_blank)
    062 *       viewMsg            【TAG】メッセージを常時表示させるかどうか[true/false]を指定します(初期値:false)
    063 *       iconURL            【TAG】ヘルプリンクをアイコンで指定する場合のアイコンURLを指定します (初期値:DEFAULT_HELP_ICON[=/icon/help.png])
    064 *       faqIconURL         【TAG】FAQリンクをアイコンで指定する場合のアイコンURLを指定します (初期値:DEFAULT_FAQ_ICON[=/icon/qaicon.png])
    065 *       useFaq             【TAG】FAQ表示の機能を利用するかどうか[true/false]を指定します (初期値:USE_GUI_FAQ[=false])
    066 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    067 *   /&gt;
    068 *
    069 * 【廃止】6.3.8.4 (2015/10/09) 物理削除
    070 *   //  extension          【廃止】拡張子を指定します(初期値:html) 6.3.8.4 (2015/10/09) 廃止
    071 *
    072 * ●使用例
    073 *     &lt;og:help guiInfoKey="{&#064;GUI.KEY}" lbl="HELP" /&gt;
    074 *
    075 *     &lt;og:help
    076 *        guiInfoKey    = "GUIInfo のキーを指定します(必須)。"
    077 *        lbl           = "ラベルリソースのメッセージIDを指定します。"
    078 *        target        = "TARGET 属性を指定します(初期値:_blank)。"
    079 *        viewMsg       = "メッセージを常時表示させるかどうか[true/false]を指定します(初期値:false)。"
    080 *        iconURL       = "ヘルプアイコンのURL(初期値:/icon/help.png)"; // 5.3.8.0 (2011/08/01)
    081 *     /&gt;
    082 *
    083 * @og.rev 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    084 * @og.group メニュー制御
    085 *
    086 * @version  4.0
    087 * @author       Kazuhiko Hasegawa
    088 * @since    JDK5.0,
    089 */
    090public class HelpTag extends CommonTagSupport {
    091        /** このプログラムのVERSION文字列を設定します。   {@value} */
    092        private static final String VERSION = "8.1.0.2 (2022/01/14)" ;
    093        private static final long serialVersionUID = 810220220114L ;
    094
    095        private static final String     JSP = HybsSystem.sys( "JSP" );
    096
    097        // 6.3.8.4 (2015/10/09) GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    098        // GE80(FAQﾃｰﾌﾞﾙ)の関連画面IDの初期一括読み込みのクエリー
    099        // 関連画面ID は、後で分割します。
    100        private static final String QUERY = "select KNRNGUI from GE80 where SYSTEM_ID = ? and FGJ='1' and KNRNGUI is not null" ;
    101
    102        // リソースの接続先を、取得します。
    103        private static final String DBID = HybsSystem.sys( "RESOURCE_DBID" );
    104
    105        // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    106        private static final FileMap            HELP_MAP        = new FileMap();                // 6.4.1.1 (2016/01/16) helpMap → HELP_MAP  refactoring
    107        private static final Set<String>        FAQ_SET         = new HashSet<>();              // 6.4.1.1 (2016/01/16) faqSet  → FAQ_SET  refactoring
    108
    109        // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    110        static {
    111                final Cleanable clr = new Cleanable() {
    112                        /**
    113                         * 初期化(クリア)します。
    114                         * 主に、キャッシュクリアで利用します。
    115                         */
    116                        public void clear() {
    117                                HELP_MAP.clear();                       // 6.3.9.0 (2015/11/06)
    118                                FAQ_SET.clear();
    119                        }
    120                };
    121                SystemManager.addCleanable( clr );
    122        }
    123
    124        // 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    125        private static final String ICON_DIR = "/" + HybsSystem.sys( "ICON_DIR" ) + "/" ;               // 互換性の為、前後に "/" を付けておく。
    126
    127        private String  guiInfoKey      ;
    128        private String  target          = "_blank";             // 3.6.0.7 (2004/11/06)
    129        private boolean viewMsg         ;
    130
    131        // 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    132//      private String  iconURL         = HybsSystem.sys( "DEFAULT_HELP_ICON" );        // 5.4.3.6 (2012/01/19)
    133//      private String  faqIconURL      = HybsSystem.sys( "DEFAULT_FAQ_ICON" );         // 5.5.0.4 (2012/03/16)
    134//      private String  faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );          // 5.5.0.4 (2012/03/16)
    135        private String  iconURL         = ICON_DIR + HybsSystem.sys( "DEFAULT_HELP_ICON" );     // 7.3.2.3 (2021/04/09)
    136        private String  faqIconURL      = ICON_DIR + HybsSystem.sys( "DEFAULT_FAQ_ICON" );      // 7.3.2.3 (2021/04/09)
    137//      private String  faqGUI          = ICON_DIR + HybsSystem.sys( "DEFAULT_FAQ_GUI" );       // 7.3.2.3 (2021/04/09)
    138        private String  faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );                          // 8.1.0.2 (2022/01/14)
    139
    140//      private boolean  useFaq         = HybsSystem.sysBool( "USE_GUI_FAQ" );          // 5.6.7.3 (2013/08/23) 6.9.5.0 (2018/04/23) 廃止
    141//      private boolean  useFaqCtrl     = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" ); // 6.3.8.4 (2015/10/09) 6.9.5.0 (2018/04/23) 廃止
    142        private boolean  useFaq         ;                                                                                       // 6.9.5.0 (2018/04/23) 初期値固定
    143
    144        /**
    145         * デフォルトコンストラクター
    146         *
    147         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    148         */
    149        public HelpTag() { super(); }           // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    150
    151        /**
    152         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    153         *
    154         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    155         * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対応
    156         * @og.rev 5.5.0.4 (2012/03/16) FAQ対応
    157         * @og.rev 5.6.4.3 (2013/05/26) FAQの画面別対応
    158         * @og.rev 6.3.8.4 (2015/10/09) topMenu 内でのHelp機能を廃止します。
    159         * @og.rev 6.3.9.0 (2015/11/06) helpMapの初期化を、initメソッドに変更する。
    160         *
    161         * @return      後続処理の指示
    162         */
    163        @Override
    164        public int doEndTag() {
    165                debugPrint();           // 4.0.0 (2005/02/28)
    166
    167                // 6.3.8.4 (2015/10/09) 初期化されているかどうかの判定を、helpMap で行う。
    168                // 6.3.9.0 (2015/11/06) helpMapの初期化を、initメソッドに変更する。
    169                if( !HELP_MAP.isInit() ) {
    170                        final String baseURL = HybsSystem.sys( "HELP_URL" );
    171                        HELP_MAP.init( HybsSystem.url2dir( baseURL ) , baseURL );
    172                        loadGE80();
    173                }
    174
    175                // 6.3.8.4 (2015/10/09) topMenu 内でのHelp機能を廃止します。
    176                        jspPrint( makeHelpTag() );                      // メソッド名変更
    177                        if( useFaq ) {
    178                                jspPrint( makeTagFaq() );
    179                        }
    180
    181                return EVAL_PAGE ;
    182        }
    183
    184        /**
    185         * タグリブオブジェクトをリリースします。
    186         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
    187         *
    188         * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
    189         * @og.rev 3.0.0.3 (2003/02/21) ターゲット属性の新規追加他
    190         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    191         * @og.rev 3.6.0.7 (2004/11/06) target 属性の初期値を _new から _blank に変更
    192         * @og.rev 5.3.8.0 (2011/08/01) iconURL追加
    193         * @og.rev 5.5.0.4 (2012/03/16) faq
    194         * @og.rev 5.6.4.3 (2013/05/24) faqCtrl
    195         * @og.rev 5.6.7.3 (2013/08/23) useFaq と useFaqCtrl のキーの後ろにスペースが入っていた。
    196         * @og.rev 6.3.8.4 (2015/10/09) extension 廃止。
    197         * @og.rev 6.9.5.0 (2018/04/23) useFaq 初期値固定、useFaqCtrl 廃止。
    198         * @og.rev 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    199         * @og.rev 8.1.0.2 (2022/01/14) faqGUI にICON_DIRを間違って付けていたので元に戻す。
    200         */
    201        @Override
    202        protected void release2() {
    203                super.release2();
    204                guiInfoKey      = null;
    205                target          = "_blank";                                                                             // 3.6.0.7 (2004/11/06)
    206                viewMsg         = false;
    207
    208                // 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    209//              iconURL         = HybsSystem.sys( "DEFAULT_HELP_ICON" );                // 5.4.3.6 (2012/01/19)
    210//              faqIconURL      = HybsSystem.sys( "DEFAULT_FAQ_ICON" );                 // 5.5.0.4 (2012/03/16)
    211//              faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );                  // 5.5.0.4 (2012/03/16)
    212
    213                iconURL         = ICON_DIR + HybsSystem.sys( "DEFAULT_HELP_ICON" );     // 7.3.2.3 (2021/04/09)
    214                faqIconURL      = ICON_DIR + HybsSystem.sys( "DEFAULT_FAQ_ICON" );      // 7.3.2.3 (2021/04/09)
    215//              faqGUI          = ICON_DIR + HybsSystem.sys( "DEFAULT_FAQ_GUI" );       // 7.3.2.3 (2021/04/09)
    216                faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );                  // 8.1.0.2 (2022/01/14)
    217
    218//              useFaq          = HybsSystem.sysBool( "USE_GUI_FAQ" );                  // 5.6.7.3 (2013/08/23)
    219//              useFaqCtrl      = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" );             // 5.6.7.3 (2013/08/23)
    220                useFaq          = false;                                                                                // 6.9.5.0 (2018/04/23)
    221        }
    222
    223        /**
    224         * HELPリンクを作成します。
    225         *
    226         * @og.rev 3.0.0.3 (2003/02/21) ターゲット属性の新規追加
    227         * @og.rev 3.0.1.0 (2003/03/03) viewMsg フラグの制御のバグ修正
    228         * @og.rev 5.3.8.0 (2011/08/01) iconURL対応
    229         * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対応
    230         * @og.rev 5.5.0.4 (2012/03/16) faq
    231         * @og.rev 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    232         * @og.rev 6.3.8.4 (2015/10/09) メソッド名変更と、private 化。
    233         *
    234         * @return      リンクタグ文字列
    235         */
    236        private String makeHelpTag() {
    237
    238                if( guiInfoKey == null ) {
    239                        guiInfoKey = getGUIInfoAttri( "KEY" );
    240                }
    241
    242                // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    243                final String url = HELP_MAP.getFilename( guiInfoKey );
    244                // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..;
    245                return url == null
    246                                        ? viewMsg
    247                                                ? getLinkBody( null,getMsglbl() ) : ""
    248                                        : getLink( url );
    249        }
    250
    251        /**
    252         * FAQリンクを作成します。
    253         *
    254         * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対応
    255         * @og.rev 5.6.4.3 (2013/05/24) FAQ存在チェック対応
    256         * @og.rev 6.3.8.4 (2015/10/09) 判定ロジックを、画面リソースではなく、内部Setで行う。
    257         * @og.rev 6.9.5.0 (2018/04/23) useFaqCtrl 廃止(画面IDがある場合のみ表示)。
    258         *
    259         * @return      リンクタグ文字列
    260         */
    261        private String makeTagFaq() {
    262                String rtn = "";
    263
    264                if( guiInfoKey == null ) {
    265                        guiInfoKey = getGUIInfoAttri( "KEY" );
    266                }
    267
    268                // 6.3.8.4 (2015/10/09) 判定ロジック変更。前の判定方法は、間違っていたため、修正。
    269//              if( !useFaqCtrl || FAQ_SET.contains( guiInfoKey ) ) {
    270                if( FAQ_SET.contains( guiInfoKey ) ) {                                          // 6.9.5.0 (2018/04/23) useFaqCtrl 廃止(画面IDがある場合のみ表示)
    271                        final GUIInfo guiInfo = getGUIInfo( faqGUI );
    272                        if( guiInfo == null ) { return rtn; }   // 見つからない場合は、アクセス不可
    273
    274                        final String address = guiInfo.getRealAddress( get( "href" ) );
    275                        // KNRNGUI は、前後に %(のURLencode文字)を付けます。RequestParameter 処理は不要
    276                        final String url = address+"index.jsp?command=NEW&GAMENID="+faqGUI+"&KNRNGUI=%25"+guiInfoKey+"%25" ;
    277
    278                        rtn = getFAQLink( url );
    279                }
    280
    281                return rtn;
    282        }
    283
    284        /**
    285         * リンク文字列を作成します。
    286         *
    287         * @og.rev 5.3.9.0 (2011/09/01) 新規作成
    288         * @og.rev 5.5.0.4 (2012/03/16) faq
    289         *
    290         * @param       url     リンクのURL
    291         *
    292         * @return      リンク文字列
    293         * @og.rtnNotNull
    294         */
    295        private String getLink( final String url ) {
    296                // 6.1.1.0 (2015/01/17) Attributesの連結記述
    297                return XHTMLTag.link(
    298                                new Attributes()
    299                                        .set( "href"    , getContextPath() + "/" + url )
    300                                        .set( "body"    , getLinkBody( iconURL,getMsglbl() ) )          //5.5.0.4 (2012/03/16)
    301                                        .set( "target"  , target )
    302                                        .set( "class"   , "helplink" )
    303                        );
    304        }
    305
    306        /**
    307         * FAQリンク文字列を作成します。
    308         *
    309         * @og.rev 5.5.0.4 (2012/03/16) 新規作成
    310         *
    311         * @param       url     リンクのURL
    312         *
    313         * @return      リンク文字列
    314         * @og.rtnNotNull
    315         */
    316        private String getFAQLink( final String url ) {
    317                // 6.1.1.0 (2015/01/17) Attributesの連結記述
    318                return XHTMLTag.link(
    319                                new Attributes()
    320                                        .set( "href"    , url )
    321                                        .set( "body"    , getLinkBody( faqIconURL,"FAQ" ) )
    322                                        .set( "target"  , target )
    323                                        .set( "class"   , "faqlink" )
    324                        ) ;
    325        }
    326
    327        /**
    328         * リンクのボディー部分を作成します。
    329         *
    330         * @og.rev 5.3.8.0 (2011/08/01) 新規作成
    331         * @og.rev 5.3.9.0 (2011/09/01) 画像表示時にtitle属性を付加
    332         * @og.rev 5.5.0.4 (2012/03/16) 引数対応
    333         * @og.rev 6.2.2.0 (2015/03/27) BRと\nを相互に変換する処理を追加
    334         * @og.rev 6.2.2.3 (2015/04/10) htmlフィルターに、BR→改行処理機能を追加。
    335         * @og.rev 7.0.1.0 (2018/10/15) XHTML → HTML5 対応(空要素の、"／＞" 止めを、"＞" に変更します)。
    336         *
    337         * @param       icon    アイコン
    338         * @param       title   タイトル
    339         *
    340         * @return      リンクボディー文字列
    341         * @og.rtnNotNull
    342         */
    343        private String getLinkBody(final String icon, final String title) {
    344                // 6.1.1.0 (2015/01/17) refactoring. ロジックの見直し
    345
    346                return icon == null || icon.isEmpty()
    347                                                        ? getMsglbl()
    348//                                                      : "<img src=\"" + JSP + icon + "\" title=\"" + StringUtil.htmlFilter( title,true ) + "\"/>";
    349                                                        : "<img src=\"" + JSP + icon + "\" title=\"" + StringUtil.htmlFilter( title,true ) + "\">";             // 7.0.1.0 (2018/10/15)
    350        }
    351
    352        /**
    353         * 【TAG】GUIInfo のキーを指定します。
    354         *
    355         * @og.tag GUIInfo のキーを指定します。
    356         *
    357         * @param       key     GUIInfoのキー
    358         */
    359        public void setGuiInfoKey( final String key ) {
    360                guiInfoKey = getRequestParameter( key );
    361        }
    362
    363//      /**
    364//       * 【廃止】拡張子を指定します(初期値:html)。
    365//       *
    366//       * @og.tag
    367//       * なにも設定されていない場合は、"html" が初期値となります。
    368//       * ここでは、ピリオドは、含める必要はありません。
    369//       *
    370//       * @og.rev 6.3.8.4 (2015/10/09) 廃止。
    371//       *     フォルダをスキャンして、必要なHelpファイルを見つけるため、
    372//       *     拡張子を指示する必要がなくなりました。
    373//       *
    374//       * @og.rev 6.9.5.0 (2018/04/23) 物理的に廃止
    375//       * @param       ext 拡張子
    376//       */
    377//      public void setExtension( final String ext ) {
    378//      }
    379
    380        /**
    381         * 【TAG】TARGET 属性を指定します(初期値:_blank)。
    382         *
    383         * @og.tag
    384         * 初期値は、 "_blank" として、新規に画面を立ち上げます。
    385         * CONTENTS 等を指定すれば、コンテンツフレーム(メニューの右側全面)に、
    386         * RESULT を指定すれば、リザルトフレーム(メニュー右下側)に表示します。
    387         *
    388         * @og.rev 3.0.0.3 (2003/02/21) ターゲット属性の新規追加
    389         *
    390         * @param       val TARGET属性(初期値:"_blank")
    391         */
    392        public void setTarget( final String val ) {
    393                target = nval( getRequestParameter( val ),target );
    394        }
    395
    396        /**
    397         * 【TAG】メッセージを常時表示させるかどうか[true/false]を指定します(初期値:false)。
    398         *
    399         * @og.tag
    400         * "true"の場合は、常時表示させます。
    401         * ファイルが、存在した場合は、リンクが張られ、存在しない場合は、リンクが
    402         * 張られません。
    403         * "false" の場合は、ファイルが、存在した場合は、リンクが張られ、存在しない場合は、
    404         * なにも表示されません。
    405         * 初期値は、 "false"(メッセージを常時表示しない)です。
    406         *
    407         * @og.rev 3.0.0.3 (2003/02/21) メッセージ表示属性の新規追加
    408         *
    409         * @param       flag メッセージ常時表示 [true:常時表示/false:非表示]
    410         */
    411        public void setViewMsg( final String flag ) {
    412                viewMsg = nval( getRequestParameter( flag ),viewMsg );
    413        }
    414
    415        /**
    416         * 【TAG】ヘルプリンクをアイコンで指定する場合のアイコンURLを指定します
    417         *              (初期値:DEFAULT_HELP_ICON[={@og.value SystemData#DEFAULT_HELP_ICON}])。
    418         *
    419         * @og.tag
    420         * ヘルプリンクをアイコンで指定する場合、そのアイコン画像のURLを指定します。
    421         * URLは、/[CONTEXT_PATH]/jspを基準として指定します。
    422//       * 例) /ge/jsp/image/help.pngに存在する画像を指定する場合、iconURL=/image/help.pngを指定します。
    423         * 例) /ge/jsp/icon/help.pngに存在する画像を指定する場合、iconURL=/icon/help.pngを指定します。
    424         * このURLが指定されない場合、ヘルプリンクは、msgLbl属性で指定されたテキストで表示されます。
    425         * (初期値:システム定数のDEFAULT_HELP_ICON[={@og.value SystemData#DEFAULT_HELP_ICON}])。
    426         *
    427         * @og.rev 5.3.8.0 (2011/08/01) 新規追加
    428         * @og.rev 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    429         *
    430         * @param url アイコンURL
    431         * @see         org.opengion.hayabusa.common.SystemData#DEFAULT_HELP_ICON
    432         */
    433        public void setIconURL( final String url ) {
    434                iconURL = nval( getRequestParameter( url ),iconURL );
    435        }
    436
    437        /**
    438         * 【TAG】FAQリンクをアイコンで指定する場合のアイコンURLを指定します
    439         *              (初期値:DEFAULT_FAQ_ICON[={@og.value SystemData#DEFAULT_FAQ_ICON}])。
    440         *
    441         * @og.tag
    442         * FAQリンクをアイコンで指定する場合、そのアイコン画像のURLを指定します。
    443         * URLは、/[CONTEXT_PATH]/jspを基準として指定します。
    444//       * 例) /ge/jsp/image/help.pngに存在する画像を指定する場合、iconURL=/image/help.pngを指定します。
    445         * 例) /ge/jsp/icon/help.pngに存在する画像を指定する場合、iconURL=/icon/help.pngを指定します。
    446         * (初期値:システム定数のDEFAULT_FAQ_ICON[={@og.value SystemData#DEFAULT_FAQ_ICON}])。
    447         *
    448         * @og.rev 5.3.8.0 (2011/08/01) 新規追加
    449         * @og.rev 7.3.2.3 (2021/04/09) ｼｽﾃﾑ定数のICON_DIRを使用します。
    450         *
    451         * @param url アイコンURL
    452         * @see         org.opengion.hayabusa.common.SystemData#DEFAULT_FAQ_ICON
    453         */
    454        public void setFaqIconURL( final String url ) {
    455                faqIconURL = nval( getRequestParameter( url ),faqIconURL );
    456        }
    457
    458        /**
    459         * 【TAG】FAQ表示の機能を利用するかどうか[true/false]を指定します(初期値:false)。
    460         *
    461         * @og.tag
    462         * trueを指定すると、FAQ画面へのリンクが表示されます。(GE80にデータが存在するかは無関係)
    463         * リンク先はfaqGUIでセットした画面に対して画面IDを引数としてわたします。
    464         * (初期値:false)。
    465         *
    466         * @og.rev 5.5.0.4 (2012/03/16) 新規追加
    467         * @og.rev 6.9.5.0 (2018/04/23) 初期値固定
    468         *
    469         * @param       flag FAQ表示利用 [true:利用する/false:利用しない]
    470         */
    471        public void setUseFaq( final String flag ) {
    472                useFaq = nval( getRequestParameter( flag ),useFaq );
    473        }
    474
    475//      /**
    476//       * 【TAG】FAQに関連画面機能を利用するかどうか[true/false]を指定します
    477//       *              (初期値:USE_GUI_FAQ_CTRL[={@og.value SystemData#USE_GUI_FAQ_CTRL}])。
    478//       *
    479//       * @og.tag
    480//       * trueを指定すると、GE80にデータが関連画面IDとして存在する場合のみアイコンを
    481//       * リンク先はfaqGUIでセットした画面に対して画面IDを引数として渡します。
    482//       * falseの場合は、瀬音ｚ内チェックを行わないため、常に表示されます。
    483//       * (ただし、useFaq=true の場合のみ)
    484//       * (初期値:システム定数のUSE_GUI_FAQ[={@og.value SystemData#USE_GUI_FAQ}])。
    485//       *
    486//       * @og.rev 5.6.4.3 (2013/05/24) 新規追加
    487//       * @og.rev 6.9.5.0 (2018/04/23) useFaqCtrl 廃止(画面IDがある場合のみ表示)。
    488//       *
    489//       * @param       flag FAQの存在チェック機能 [true:利用する/false:利用しない]
    490//       * @see         org.opengion.hayabusa.common.SystemData#USE_GUI_FAQ_CTRL
    491//       * @see         #setUseFaq( String )
    492//       */
    493//      public void setUseFaqCtrl( final String flag ) {
    494//              useFaqCtrl = nval( getRequestParameter( flag ),useFaqCtrl );
    495//      }
    496
    497        /**
    498         * GE80(FAQﾃｰﾌﾞﾙ)より 関連画面IDを取得、分割して、FAQセットに設定します。
    499         *
    500         * 関連画面IDは、スペース、またはCSV形式として、分割します。
    501         * 分割後、trim() されたデータを、FAQセット に追加していきます。
    502         * 画面IDは、存在チェックに使うため、重複は関係ありません。
    503         *
    504         * @og.rev 6.3.8.4 (2015/10/09) GE80(FAQﾃｰﾌﾞﾙ)の関連画面ID のキャッシュ
    505         */
    506        private void loadGE80() {
    507                final String[] args = new String[] { HybsSystem.sys( "SYSTEM_ID" ) };
    508
    509                final String[][] vals = DBUtil.dbExecute( QUERY,args,getApplicationInfo(),DBID );
    510                final int len = vals.length;
    511
    512                for( int i=0; i<len; i++ ) {
    513                        final String[] guis = vals[i][0].split( "[ ,]" );               // 最初のカラムを、スペースかカンマで分解する。
    514                        for( int j=0; j<guis.length; j++ ) {
    515                                FAQ_SET.add( guis[j] );
    516                        }
    517                }
    518        }
    519
    520        /**
    521         * このオブジェクトの文字列表現を返します。
    522         * 基本的にデバッグ目的に使用します。
    523         *
    524         * @return このクラスの文字列表現
    525         * @og.rtnNotNull
    526         */
    527        @Override
    528        public String toString() {
    529                return ToString.title( this.getClass().getName() )
    530                                .println( "VERSION"             ,VERSION        )
    531                                .println( "guiInfoKey"  ,guiInfoKey     )
    532                                .println( "target"              ,target         )
    533                                .println( "viewMsg"             ,viewMsg        )
    534                                .println( "iconURL"             ,iconURL        )
    535                                .println( "Other..."    ,getAttributes().getAttribute() )
    536                                .fixForm().toString() ;
    537        }
    538}