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