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 *   X   extension          【廃止】拡張子を指定します(初期値:html) 6.3.8.4 (2015/10/09) 廃止
061 *       lbl                【TAG】ラベルリソースのラベルIDを指定します
062 *       target             【TAG】TARGET 属性を指定します(初期値:_blank)
063 *       viewMsg            【TAG】メッセージを常時表示させるかどうか[true/false]を指定します(初期値:false)
064 *       iconURL            【TAG】ヘルプリンクをアイコンで指定する場合のアイコンURLを指定します (初期値:DEFAULT_HELP_ICON[=/image/help.png])
065 *       faqIconURL         【TAG】FAQリンクをアイコンで指定する場合のアイコンURLを指定します (初期値:DEFAULT_FAQ_ICON[=/image/qaicon.png])
066 *       useFaq             【TAG】FAQ表示の機能を利用するかどうか[true/false]を指定します (初期値:USE_GUI_FAQ[=false])
067 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
068 *   /&gt;
069 *
070 * ●使用例
071 *     &lt;og:help guiInfoKey="{&#064;GUI.KEY}" lbl="HELP" /&gt;
072 *
073 *     &lt;og:help
074 *        guiInfoKey    = "GUIInfo のキーを指定します(必須)。"
075 *        extension     = "6.3.8.4 (2015/10/09) 廃止。拡張子を指定します(初期値:html)。"
076 *        lbl           = "ラベルリソースのメッセージIDを指定します。"
077 *        target        = "TARGET 属性を指定します(初期値:_blank)。"
078 *        viewMsg       = "メッセージを常時表示させるかどうか[true/false]を指定します(初期値:false)。"
079 *        iconURL       = "ヘルプアイコンのURL(初期値:/image/help.png)"; // 5.3.8.0 (2011/08/01)
080 *     /&gt;
081 *
082 * @og.group メニュー制御
083 *
084 * @version  4.0
085 * @author       Kazuhiko Hasegawa
086 * @since    JDK5.0,
087 */
088public class HelpTag extends CommonTagSupport {
089        /** このプログラムのVERSION文字列を設定します。   {@value} */
090        private static final String VERSION = "6.9.5.0 (2018/04/23)" ;
091        private static final long serialVersionUID = 695020180423L ;
092
093        private static final String     JSP = HybsSystem.sys( "JSP" );
094
095        // 6.3.8.4 (2015/10/09) GE80(FAQテーブル)の関連画面ID のキャッシュ
096        // GE80(FAQテーブル)の関連画面IDの初期一括読み込みのクエリー
097        // 関連画面ID は、後で分割します。
098        private static final String QUERY = "select KNRNGUI from GE80 where SYSTEM_ID = ? and FGJ='1' and KNRNGUI is not null" ;
099
100        // リソースの接続先を、取得します。
101        private static final String DBID = HybsSystem.sys( "RESOURCE_DBID" );
102
103        // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQテーブル)の関連画面ID のキャッシュ
104        private static final FileMap            HELP_MAP        = new FileMap();                // 6.4.1.1 (2016/01/16) helpMap → HELP_MAP  refactoring
105        private static final Set<String>        FAQ_SET         = new HashSet<>();              // 6.4.1.1 (2016/01/16) faqSet  → FAQ_SET  refactoring
106
107        // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQテーブル)の関連画面ID のキャッシュ
108        static {
109                final Cleanable clr = new Cleanable() {
110                        /**
111                         * 初期化(クリア)します。
112                         * 主に、キャッシュクリアで利用します。
113                         */
114                        public void clear() {
115                                HELP_MAP.clear();                       // 6.3.9.0 (2015/11/06)
116                                FAQ_SET.clear();
117                        }
118                };
119                SystemManager.addCleanable( clr );
120        }
121
122        private String  guiInfoKey      ;
123        private String  target          = "_blank";             // 3.6.0.7 (2004/11/06)
124        private boolean viewMsg         ;
125        private String  iconURL         = HybsSystem.sys( "DEFAULT_HELP_ICON" );        // 5.4.3.6 (2012/01/19)
126        private String  faqIconURL      = HybsSystem.sys( "DEFAULT_FAQ_ICON" );         // 5.5.0.4 (2012/03/16)
127        private String  faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );          // 5.5.0.4 (2012/03/16)
128
129//      private boolean  useFaq         = HybsSystem.sysBool( "USE_GUI_FAQ" );          // 5.6.7.3 (2013/08/23) 6.9.5.0 (2018/04/23) 廃止
130//      private boolean  useFaqCtrl     = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" ); // 6.3.8.4 (2015/10/09) 6.9.5.0 (2018/04/23) 廃止
131        private boolean  useFaq         ;                                                                                       // 6.9.5.0 (2018/04/23) 初期値固定
132
133        /**
134         * デフォルトコンストラクター
135         *
136         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
137         */
138        public HelpTag() { super(); }           // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
139
140        /**
141         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
142         *
143         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
144         * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対応
145         * @og.rev 5.5.0.4 (2012/03/16) FAQ対応
146         * @og.rev 5.6.4.3 (2013/05/26) FAQの画面別対応
147         * @og.rev 6.3.8.4 (2015/10/09) topMenu 内でのHelp機能を廃止します。
148         * @og.rev 6.3.9.0 (2015/11/06) helpMapの初期化を、initメソッドに変更する。
149         *
150         * @return      後続処理の指示
151         */
152        @Override
153        public int doEndTag() {
154                debugPrint();           // 4.0.0 (2005/02/28)
155
156                // 6.3.8.4 (2015/10/09) 初期化されているかどうかの判定を、helpMap で行う。
157                // 6.3.9.0 (2015/11/06) helpMapの初期化を、initメソッドに変更する。
158                if( !HELP_MAP.isInit() ) {
159                        final String baseURL = HybsSystem.sys( "HELP_URL" );
160                        HELP_MAP.init( HybsSystem.url2dir( baseURL ) , baseURL );
161                        loadGE80();
162                }
163
164                // 6.3.8.4 (2015/10/09) topMenu 内でのHelp機能を廃止します。
165                        jspPrint( makeHelpTag() );                      // メソッド名変更
166                        if( useFaq ) {
167                                jspPrint( makeTagFaq() );
168                        }
169
170                return EVAL_PAGE ;
171        }
172
173        /**
174         * タグリブオブジェクトをリリースします。
175         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
176         *
177         * @og.rev 2.0.0.4 (2002/09/27) カスタムタグの release() メソッドを、追加
178         * @og.rev 3.0.0.3 (2003/02/21) ターゲット属性の新規追加他
179         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
180         * @og.rev 3.6.0.7 (2004/11/06) target 属性の初期値を _new から _blank に変更
181         * @og.rev 5.3.8.0 (2011/08/01) iconURL追加
182         * @og.rev 5.5.0.4 (2012/03/16) faq
183         * @og.rev 5.6.4.3 (2013/05/24) faqCtrl
184         * @og.rev 5.6.7.3 (2013/08/23) useFaq と useFaqCtrl のキーの後ろにスペースが入っていた。
185         * @og.rev 6.3.8.4 (2015/10/09) extension 廃止。
186         * @og.rev 6.9.5.0 (2018/04/23) useFaq 初期値固定、useFaqCtrl 廃止。
187         */
188        @Override
189        protected void release2() {
190                super.release2();
191                guiInfoKey      = null;
192                target          = "_blank";                                                                             // 3.6.0.7 (2004/11/06)
193                viewMsg         = false;
194                iconURL         = HybsSystem.sys( "DEFAULT_HELP_ICON" );                // 5.4.3.6 (2012/01/19)
195                faqIconURL      = HybsSystem.sys( "DEFAULT_FAQ_ICON" );                 // 5.5.0.4 (2012/03/16)
196                faqGUI          = HybsSystem.sys( "DEFAULT_FAQ_GUI" );                  // 5.5.0.4 (2012/03/16)
197
198//              useFaq          = HybsSystem.sysBool( "USE_GUI_FAQ" );                  // 5.6.7.3 (2013/08/23)
199//              useFaqCtrl      = HybsSystem.sysBool( "USE_GUI_FAQ_CTRL" );             // 5.6.7.3 (2013/08/23)
200                useFaq          = false;                                                                                // 6.9.5.0 (2018/04/23)
201        }
202
203        /**
204         * HELPリンクを作成します。
205         *
206         * @og.rev 3.0.0.3 (2003/02/21) ターゲット属性の新規追加
207         * @og.rev 3.0.1.0 (2003/03/03) viewMsg フラグの制御のバグ修正
208         * @og.rev 5.3.8.0 (2011/08/01) iconURL対応
209         * @og.rev 5.3.9.0 (2011/09/01) メニューでのヘルプアイコン対応
210         * @og.rev 5.5.0.4 (2012/03/16) faq
211         * @og.rev 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQテーブル)の関連画面ID のキャッシュ
212         * @og.rev 6.3.8.4 (2015/10/09) メソッド名変更と、private 化。
213         *
214         * @return      リンクタグ文字列
215         */
216        private String makeHelpTag() {
217
218                if( guiInfoKey == null ) {
219                        guiInfoKey = getGUIInfoAttri( "KEY" );
220                }
221
222                // 6.3.8.4 (2015/10/09) ヘルプファイルと、GE80(FAQテーブル)の関連画面ID のキャッシュ
223                final String url = HELP_MAP.getFilename( guiInfoKey );
224                // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..;
225                return url == null
226                                        ? viewMsg
227                                                ? getLinkBody( null,getMsglbl() ) : ""
228                                        : getLink( url );
229
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        /**
289         * FAQリンク文字列を作成します。
290         *
291         * @og.rev 5.5.0.4 (2012/03/16) 新規作成
292         *
293         * @param       url     リンクのURL
294         *
295         * @return      リンク文字列
296         * @og.rtnNotNull
297         */
298        private String getFAQLink( final String url ) {
299                // 6.1.1.0 (2015/01/17) Attributesの連結記述
300                return XHTMLTag.link(
301                                new Attributes()
302                                        .set( "href"    , url )
303                                        .set( "body"    , getLinkBody( faqIconURL,"FAQ" ) )
304                                        .set( "target"  , target )
305                                        .set( "class"   , "faqlink" )
306                        ) ;
307
308        }
309
310        /**
311         * リンクのボディー部分を作成します。
312         *
313         * @og.rev 5.3.8.0 (2011/08/01) 新規作成
314         * @og.rev 5.3.9.0 (2011/09/01) 画像表示時にtitle属性を付加
315         * @og.rev 5.5.0.4 (2012/03/16) 引数対応
316         * @og.rev 6.2.2.0 (2015/03/27) BRと\nを相互に変換する処理を追加
317         * @og.rev 6.2.2.3 (2015/04/10) htmlフィルターに、BR→改行処理機能を追加。
318         *
319         * @param       icon    アイコン
320         * @param       title   タイトル
321         *
322         * @return      リンクボディー文字列
323         * @og.rtnNotNull
324         */
325        private String getLinkBody(final String icon, final String title) {
326                // 6.1.1.0 (2015/01/17) refactoring. ロジックの見直し
327
328                return icon == null || icon.isEmpty()
329                                                        ? getMsglbl()
330                                                        : "<img src=\"" + JSP + icon + "\" title=\"" + StringUtil.htmlFilter( title,true ) + "\"/>";
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は、スペース、またはカンマ区切りとして、分割します。
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}