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