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     */
016    package org.opengion.hayabusa.resource;
017    
018    import org.opengion.hayabusa.common.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.fukurou.util.StringUtil;
021    import org.opengion.fukurou.util.HybsEntry;
022    
023    import java.util.List;
024    import java.util.ArrayList;
025    import java.util.Set;
026    import java.util.LinkedHashSet;
027    
028    /**
029     * ç”»é¢æƒ??ã®å–å¾—ã?為ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã§ã™ã?
030     *
031     * {@GUI.XXXX} ã§ã€XXXX 部ã«ã€GUIInfo オブジェクトã§å®šç¾©ã•れã¦ã?‚‹
032     * 属æ?æƒ??ã‚’å–りå?ã™ã“ã¨ãŒå?æ¥ã¾ã™ã?
033     *
034     * ・KEY           ç”»é¢ID
035     * ・ADDRESS       実行アドレス
036     * ・REALADDRESS   実行実アドレス
037     * ・SEQUENCE      表示�
038     * ・GROUPS        メニュグルー�
039     * ・CLASSIFY      メニュåˆ?¡?
040     * ・LEVEL         メニュ階層番å·
041     * ・LABEL         ç”»é¢åç§°
042     * ・NAME          ç”»é¢åç§°(=SNAME)
043     * ・SNAME         ç”»é¢åç§°(short)
044     * ・LNAME         ç”»é¢åç§°(long)
045     * ・ROLES         ロールズ
046     * ・MODE          アクセスモードå?(mr,mw,-r,-w ã®ç¾??)
047     * ・TARGET        ターゲãƒ?ƒˆ
048     * ・PARAM         設定å?(パラメータ)
049     * ・KBLINK        リンク区�
050     * ・DESCRIPTION   概è¦èª¬æ˜?
051     * ・IMAGEKEY      イメージキー
052     * ・DYUPD         更新日�
053     * ・ISREAD        読å–り許å¯[true/false]
054     * ・ISWRITE       書込ã¿è¨±å¯[true/false]
055     *
056     * @og.group リソース管ç?
057     *
058     * @version  4.0
059     * @author   Kazuhiko Hasegawa
060     * @since    JDK5.0,
061     */
062    public final class GUIInfo implements Comparable<GUIInfo> {       // 4.3.3.6 (2008/11/15) Generics警告対�
063    
064            private static final String YOYAKU = "|KEY|ADDRESS|REALADDRESS|SEQUENCE"
065                                                                                    + "|GROUPS|CLASSIFY|LEVEL|LABEL|NAME"
066                                                                                    + "|SNAME|LNAME|ROLES|MODE|TARGET"
067    //                                                                              + "|PARAM|KBLINK|DESCRIPTION|" ;
068    //                                                                              + "|PARAM|KBLINK|DESCRIPTION|DYUPD|" ;
069                                                                                    + "|PARAM|KBLINK|DESCRIPTION|DYUPD|IMAGEKEY|" ;         // 5.5.2.5 (2012/05/21) イメージアイコン
070    
071            private final GUIData   guiData ;
072            private final LabelData labelData ;
073            private final String[]  groupKeys ;
074    
075            private final boolean   menuFlag  ;             // メニューã¸ã®è¡¨ç¤ºå¯å¦å±žæ?
076            private final boolean   writeFlag ;             // 書ãè¾¼ã¿è¨±å¯å±žæ?
077    //      private final boolean   fileDFlag ;             // 4.3.0.0 (2008/07/04) ファイル出力許å¯å±žæ?
078    //      private final boolean   fileUFlag ;             // 4.3.0.0 (2008/07/04) ファイル入力許å¯å±žæ?
079            private final byte              bitMode ;               // ビットモーãƒ?UserInfo åŠ?‘³æ¸ˆã¿)
080            private final boolean   pulldownFlag;   // 4.3.3.0 (2008/10/01) 強制プルãƒ?‚¦ãƒ³åŒ–属æ?
081    
082            private final GUIAccessCount accessCount ;              // ã“ã?ç”»é¢ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹çµ±è¨ˆã‚’管ç?—ã¾ã™ã?
083    
084            private int   level = 0;
085    
086            private final Set<String> nextGui = new LinkedHashSet<String>();    // 5.2.3.0 (2010/12/01) アクセス履歴管ç?
087    
088            /**
089             * コンストラクター
090             *
091             * 引数㮠bitMode ã¯ã€UserInfo ã¨åŠ?‘³æ¸ˆã¿
092             *
093             * @og.rev 4.3.0.0 (2008/07/04) ファイル入出力制御追�
094             * @og.rev 4.3.3.0 (2008/10/01) 強制プルãƒ?‚¦ãƒ³ãƒ¢ãƒ¼ãƒ‰è¿½åŠ?
095             *
096             * @param       guiData         ç”»é¢ãƒ??タオブジェクãƒ?D
097             * @param       labelData       ラベル�?タオブジェク�
098             * @param       bitMode ビットモードé?åˆ?"--:000","-r:001","-w:010","mr:101","mw:110" ã«å¯¾å¿œã—ãŸæ•°å­?0,1,2,5,6)
099             */
100            public GUIInfo( final GUIData   guiData ,
101                                            final LabelData labelData ,
102                                            final byte              bitMode ) {
103                    this.guiData    = guiData;
104                    this.labelData  = labelData;
105                    groupKeys               = StringUtil.csv2Array( guiData.getGroups() );
106    
107                    menuFlag        = RoleMode.isMenu( bitMode );
108                    writeFlag       = RoleMode.isWrite( bitMode );
109                    pulldownFlag = RoleMode.isPulldown( bitMode ); // 4.3.3.0 (2008/10/01)
110    //              fileDFlag       = RoleMode.isDownload( bitMode );
111    //              fileUFlag       = RoleMode.isUpload( bitMode );
112                    accessCount = new GUIAccessCount( guiData.getGuiKey() ) ;
113                    this.bitMode = bitMode ;
114    
115                    level = guiData.getGuiLevel();
116            }
117    
118            /**
119             * ç”»é¢æƒ?? ç”»é¢ID ã‚’å–å¾—ã—ã¾ã™ã?
120             *
121             * @return      ç”»é¢ID
122             */
123            public String getKey() {
124                    return guiData.getGuiKey();
125            }
126    
127            /**
128             * 実行アドレスæƒ??ã‚’å–å¾—ã—ã¾ã™ã?
129             *
130             * @return      実行アドレス
131             */
132            public String getAddress() {
133                    return guiData.getAddress();
134            }
135    
136            /**
137             * トップã‹ã‚‰ã?実行アドレスæƒ??ã‚’å–å¾—ã—ã¾ã™ã?
138             * コンãƒ?‚­ã‚¹ãƒˆåã¨ãƒªãƒ³ã‚¯åŒºåˆ?±žæ?を利用ã—ã¦ã€ã‚µãƒ¼ãƒã?トップã‹ã‚‰ã?アドレスã‚?
139             * è¿”ã—ã¾ã™ã?ãŸã ã—ã?GUIリソースã«ã€http://??ã¾ãŸã?ã€???ã‹ã‚‰å§‹ã¾ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯
140             * ãã?ã¾ã¾ã€ãªã«ã‚‚変æ›ã›ãšã«è¿”ã—ã¾ã™ã?
141             * 実アドレスã«ã¯ã€param属æ?ã®æƒ??を付加ã—ã¾ã™ã?param属æ?ã¯ã€æŽ¥ç¶šæ–‡å­—を用ã?šã«
142             * ãã?ã¾ã¾é€£çµã•れã¾ã™ã?ã§ã€?index.jsp?AAA=XX&amp;BBB=YY ã¨ã?†æ„Ÿã˜ã§ "/" ã‹ã‚‰
143             * ã¯ã˜ã‚ã¾ã™ã?
144             *
145             * http://AAAA  � http://AAAA
146             * ../../AAAA/  � ../../AAAA/
147             * AAAA         â‡? /CONTEXT_NAME/KBLINK/AAAA/    param ãªã?
148             * AAAA         â‡? /CONTEXT_NAME/KBLINK/AAAA/index.jsp?AAA=XX&amp;BBB=YY  param ã‚り
149             *
150             * @og.rev 3.5.5.0 (2004/03/12) æ–°è¦è¿½åŠ?
151             * @og.rev 4.0.0.0 (2005/01/31) param属æ?追åŠ?
152             *
153             * @return      実行実アドレス
154             */
155            public String getRealAddress() {
156                    return guiData.getRealAddress();
157            }
158    
159            /**
160             * トップã‹ã‚‰ã?実行アドレスæƒ??ã‚’å–å¾—ã—ã¾ã™ã?
161             * コンãƒ?‚­ã‚¹ãƒˆåã¨ãƒªãƒ³ã‚¯åŒºåˆ?±žæ?を利用ã—ã¦ã€ã‚µãƒ¼ãƒã?トップã‹ã‚‰ã?アドレスã‚?
162             * è¿”ã—ã¾ã™ã?ãŸã ã—ã?GUIリソースã«ã€http://??ã¾ãŸã?ã€???ã‹ã‚‰å§‹ã¾ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯
163             * ãã?ã¾ã¾ã€ãªã«ã‚‚変æ›ã›ãšã«è¿”ã—ã¾ã™ã?
164             * 実アドレスã«ã¯ã€param属æ?ã®æƒ??を付加ã—ã¾ã™ã?param属æ?ã¯ã€æŽ¥ç¶šæ–‡å­—を用ã?šã«
165             * ãã?ã¾ã¾é€£çµã•れã¾ã™ã?ã§ã€?index.jsp?AAA=XX&amp;BBB=YY ã¨ã?†æ„Ÿã˜ã§ "/" ã‹ã‚‰
166             * ã¯ã˜ã‚ã¾ã™ã?
167             * ã¾ãŸã?ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æœ?¾ŒãŒã‚¹ãƒ©ãƒ?‚·ãƒ¥(/)ã§çµ‚äº?—ã¦ã?‚‹å ´åˆã?ã€page属æ?を追åŠ?—ã¾ã™ã?
168             *
169             * http://AAAA  � http://AAAA
170             * ../../AAAA/  � ../../AAAA/
171             * AAAA         â‡? /CONTEXT_NAME/KBLINK/AAAA/    param ãªã?
172             * AAAA         â‡? /CONTEXT_NAME/KBLINK/AAAA/index.jsp?AAA=XX&amp;BBB=YY  param ã‚り
173             *
174             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?param属æ?追åŠ?
175             *
176             * @param    page          実行ã?ージ(index.jsp ãªã©)
177             *
178             * @return      実行実アドレス
179             */
180            public String getRealAddress( final String page ) {
181                    return guiData.getRealAddress( page );
182            }
183    
184            /**
185             * ç”»é¢ã®è¡¨ç¤ºé ?‚’å–å¾—ã—ã¾ã™ã?
186             *
187             * @return      ç”»é¢ã®è¡¨ç¤ºé ?
188             */
189            public int getSequence() {
190                    return guiData.getSeqno();
191            }
192    
193            /**
194             * ç”»é¢ã®éšŽå±¤ç•ªå·(レベル)ã‚’å–å¾—ã—ã¾ã™ã?
195             * ç”»é¢éšŽå±¤ã¯ã€?
196             * ã€?:予ç´?šŽå±¤(å°?¥çš?«ã‚¿ãƒ–ブラウザ対応時ã«ä½¿ç”¨
197             * ã€?:トップ階層(通常ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®åˆ?¡žã¨ã—ã¦è¡¨ç¤ºã•れã¾ã™ã?)
198             * ã€?:é¸æŠžéšŽå±¤(é€šå¸¸ã®æŠ˜ã‚ŠãŸãŸã¿ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®ç”»é¢é¸æŠžæ™‚ã«ä½¿ç”¨ã•れã¾ã™ã?)
199             * ã€?以ä¸?下ä½éšŽå±¤(通常ã®é¸æŠžãƒ¡ãƒ‹ãƒ¥ãƒ¼ã¨ã—ã¦ã€?¼‘段下ã’ã¦è¡¨ç¤ºã•れã¾ã™ã?)
200             * ã§ã™ã?
201             * ãªãŠã?ã“れらã?æ„味ã¯ã€å®Ÿéš›ã«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’作æ?/表示ã™ã‚‹ã‚¯ãƒ©ã‚¹ã«ä¾å­˜ã—ã¾ã™ã?
202             *
203             * @return      ç”»é¢ã®è¡¨ç¤ºé ?
204             */
205            public int getLevel() {
206                    return level;
207            }
208    
209            /**
210             * ç”»é¢ã®éšŽå±¤ç•ªå·(レベル)ã‚’ã‚¢ãƒ??ã—ã¾ã™ã?
211             *
212             * ã“れã¯ã€ãƒ¬ãƒ™ãƒ«ãŒï¼“ã?å ´å?階層時ã?éš?—メニュー)をレベル?’ã«
213             * ã™ã‚‹ã“ã¨ã§ã€å¸¸ã«è¦‹ãˆã¦ã?‚‹ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«æ ¼ä¸Šã’ã—ã¾ã™ã?
214             * 具体的ã«ã¯ã€è¨­å®šå?ãŒéš ã—メニューã®å ´åˆã«ã€ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¨ãƒ¬ãƒ™ãƒ«?’ã¸æ ¼ä¸Šã’
215             * ã™ã‚‹ã“ã¨ã§ã€å?人å˜ä½ã§ã€?ŽåŽ»ã®å±¥æ­´ã«å¿œã˜ãŸãƒ¡ãƒ‹ãƒ¥ãƒ¼é…ç½®ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
216             */
217            public void setLevelUp() {
218    //              if( level == 3 ) { level = 2; }
219                    if( level == 4 ) { level = 3; } // 4.0.0.0 (2007/10/30)
220            }
221    
222            /**
223             * ç”»é¢æƒ?? メニュグループã?オリジナルキー ã‚’å–å¾—ã—ã¾ã™ã?
224             * メニュグループã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã§è¤?•°ç™»éŒ²ã§ãã¾ã™ã?
225             *
226             * @return      メニュåˆ?¡žã?キー
227             */
228            public String getGroups() {
229                    return guiData.getGroups();
230            }
231    
232            /**
233             * æŒ?®šã?æ–?­—å?ãŒã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹ã‚’判定ã—ã¾ã™ã?
234             * メニュグループã?ã€ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã§è¤?•°ç™»éŒ²ã§ãã¾ã™ã?ã§ã€ãã®ã?¡ã®
235             * ã©ã‚Œã‹ã«å«ã¾ã‚Œã¦ã?‚Œã°ã€true ã‚’è¿”ã—ã¾ã™ã?
236             * ã“ã?メニューãã?ã‚‚ã?ã«ã€ã‚°ãƒ«ãƒ¼ãƒ—ãŒæŒ?®šã•れã¦ã?ªã??åˆã?ã€?
237             * ãƒ?ƒ•ォルトグループã¨ã?†æ‰±ã?§ã€true ã‚’è¿”ã—ã¾ã™ã?
238             * 引数ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒ­æ–?­—å?ã®å ´åˆã‚‚ã€åŒæ§˜ã«ã€true ã‚’è¿”ã—ã¾ã™ã?
239             *
240             * @param       group   判定ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ?
241             *
242             * @return      グループã«å«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹
243             */
244            public boolean isGroupIn( final String group ) {
245                    if( groupKeys.length == 0 || group == null || group.length() == 0 ) {
246                            return true;
247                    }
248    
249                    for( int i=0; i<groupKeys.length; i++ ) {
250                            if( group.equals( groupKeys[i] ) ) {
251                                    return true;
252                            }
253                    }
254                    return false;
255            }
256    
257            /**
258             * ç”»é¢æƒ?? メニュåˆ?¡žã?オリジナルキー ã‚’å–å¾—ã—ã¾ã™ã?
259             *
260             * @return      メニュåˆ?¡žã?キー
261             */
262            public String getClassify() {
263                    return guiData.getClassify();
264            }
265    
266            /**
267             * ç”»é¢æƒ?? ç”»é¢åç§° ã‚’å–å¾—ã—ã¾ã™ã?
268             * ã“れã¯ã€åŠ å·¥å‰ã?ラベルリソースã«ç™»éŒ²ã•れã¦ã?‚‹å€¤ã§ã™ã?
269             *
270             * @return      ç”»é¢åç§°
271             */
272            public String getLabel() {
273                    return labelData.getLabel();
274            }
275    
276            /**
277             * ç”»é¢æƒ?? ç”»é¢åç§°(short) ã‚’å–å¾—ã—ã¾ã™ã?
278             * ã“ã?åç§°ã¯ã€ãƒãƒ??表示付ãã®æ–?­—å?ã‚’è¿”ã—ã¾ã™ã?
279             *
280             * @return      ç”»é¢åç§°(short)
281             */
282            public String getName() {
283                    return labelData.getShortLabel();
284            }
285    
286            /**
287             * ç”»é¢æƒ?? ç”»é¢åç§°(long) ã‚’å–å¾—ã—ã¾ã™ã?
288             * ã“ã?åç§°ã¯ã€ãƒãƒ??表示付ãã®æ–?­—å?ã‚’è¿”ã—ã¾ã™ã?
289             *
290             * @return      ç”»é¢åç§°(long)
291             */
292            public String getLongName() {
293                    return labelData.getLongLabel();
294            }
295    
296            /**
297             * ç”»é¢æƒ?? ロール ã‚’å–å¾—ã—ã¾ã™ã?
298             * ロールã¯ã€AAA|BBB|CCC ã¨ã€Ž|ã€ã?区åˆ?‚Šæ–?­—ã§è¤?•°ç™»éŒ²ã§ãã¾ã™ã?
299             * ユーザーã®ãƒ­ãƒ¼ãƒ«(ã“ã¡ã‚‰ã‚‚ã€XXX|YYY|AAAã¨è¤?•°ç™»éŒ²å¯èƒ½)ã¨ãƒžãƒƒãƒã™ã‚?
300             * ロールãŒã‚れã?ã€ãã®ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒã‚りã¾ã™ã?
301             * èª­ã¿æ›¸ãã¨ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼è¡¨ç¤ºã¯ã€ã‚¢ã‚¯ã‚»ã‚¹ãƒ¢ãƒ¼ãƒ‰ã§æŒ?®šã—ã¾ã™ã?
302             *
303             * @return      ロール
304             */
305            public String getRoles() {
306                    return guiData.getRoles();
307            }
308    
309            /**
310             * アクセスモードをå–å¾—ã—ã¾ã™ã?
311             *
312             * r,w,_ ã‚’å„ロール毎ã«è¨­å®šã—ã¾ã™ã?
313             * mr:メニューよりアクセスã§ãる読å–専用画é¢ã§ã™ã?登録ボタンã¯è¡¨ç¤ºã•れã¾ã›ã‚“ã€?
314             * mw:メニューよりアクセスã§ãる登録編é›?”»é¢ã§ã™ã?表示もã—ã¾ã™ã?
315             * -r:メニューã«ç¾ã‚Œã¾ã›ã‚“ãŒã?アクセスã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã?読å–専用ã€?
316             * -w:メニューã«ç¾ã‚Œã¾ã›ã‚“ãŒã?アクセスã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã?èª­ã¿æ›¸ãå?æ¥ã¾ã™ã?
317             *
318             * ã“ã??’文字ãšã¤ã®ã‚»ãƒ?ƒˆãŒã?å?ƒ­ãƒ¼ãƒ«ã«å¯¾å¿œä»˜ã‘られãŸã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã«ãªã‚Šã¾ã™ã?
319             * ロールãŒã?AAA|BBB|CCC|DDD ã§ã€ãƒ¢ãƒ¼ãƒ‰ãŒ mw|mr|-r|-w ã§ã‚れã°ã€?
320             * AAA ã¯ã€mw , BBB ã¯ã€mr ?ŒCCC ã¯ã€?r ?ŒDDD 㯠-w ã¨è¨­å®šã•れãŸã“ã¨ã«ãªã‚Šã¾ã™ã?
321             * 特別ã«ã€?¼’文字ã?ã¿ç™»éŒ²ã•れãŸå?åˆã?ã€å?ロールãŒåŒä¸?ƒ¢ãƒ¼ãƒ‰ã«è¨­å®?
322             * ã•れãŸã¨ã¿ãªã—ã¾ã™ã?
323             *
324             * @return      ロール毎ã?アクセスモードå?(mr,mw,-r,-w ã®ç¾??)
325             */
326            public String getMode() {
327                    return guiData.getMode();
328            }
329    
330            /**
331             * ç”»é¢ã‚’表示ã™ã‚‹æ™‚ã?ターゲãƒ?ƒˆå±žæ?ã‚’å–å¾—ã—ã¾ã™ã?
332             *
333             * @return      ターゲãƒ?ƒˆ
334             */
335            public String getTarget() {
336                    return guiData.getTarget();
337            }
338    
339            /**
340             * ç”»é¢ã‚’表示ã™ã‚‹æ™‚ã?パラメータ属æ?ã‚’å–å¾—ã—ã¾ã™ã?
341             *
342             * @return      パラメータ
343             */
344            public String getParam() {
345                    return guiData.getParam();
346            }
347    
348            /**
349             * リンク区åˆ?±žæ?ã‚’å–å¾—ã—ã¾ã™ã?
350             *
351             * @og.rev 3.4.0.0 (2003/09/01) リンク区åˆ?KBLINK)属æ?を追åŠ??
352             *
353             * @return      リンク区�
354             */
355            public String getKblink() {
356                    return guiData.getKblink();
357            }
358    
359            /**
360             * 概è¦èª¬æ˜Žå±žæ?ã‚’å–å¾—ã—ã¾ã™ã?
361             * 概è¦èª¬æ˜ŽãŒè¨­å®šã•れã¦ã?ªã??åˆã?ã€longName ã‚’è¿”ã—ã¾ã™ã?
362             *
363             * @og.rev 3.5.6.5 (2004/08/09) 概è¦èª¬æ˜?DESCRIPTION)属æ?を追åŠ??
364             *
365             * @return      概è¦èª¬æ˜?
366             */
367            public String getDescription() {
368                    return labelData.getDescription() ;
369            }
370    
371            /**
372             * 更新日時をå–å¾—ã—ã¾ã™ã?
373             *
374             * @og.rev 5.3.3.0 (2011/03/01) æ–°è¦ä½œæ?
375             *
376             * @return      更新日�
377             */
378            public String getDyupd() {
379                    return guiData.getDyupd();
380            }
381    
382            /**
383             * イメージアイコンã®ã‚­ãƒ¼ã‚’è¿”ã—ã¾ã™ã?
384             *
385             * ç”»é¢ã«ã‚¢ã‚¤ã‚³ãƒ³ã‚’追åŠ?™ã‚‹å?åˆã?jsp/menuImage フォルãƒ?«ã€ç”»é¢ID ã¨åŒã˜åç§°ã®
386             * ç”»åƒãƒ•ァイルを置ãå¿?¦ãŒã‚りã¾ã™ã?
387             * 本æ¥ã¯ã€ç”»é¢ãƒªã‚½ãƒ¼ã‚¹(GEA11)ã«ã€ã‚«ãƒ©ãƒ?‚’追åŠ?—ã¦å¯¾å¿œã™ã¹ãã§ã™ãŒã€äº’æ›æ€§ã®é–¢ä¿‚よりã?
388             * PARAM 属æ?ã§ã€æ‰€å®šã?キーを登録ã™ã‚‹ã“ã¨ã§ä½¿ãˆã‚‹ã‚ˆã†ã«ã—ã¾ã™ã?
389             * ã“ã?ã€PARAMã¯ã€ç”»é¢ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å¼•æ•°(ãŸã¨ãˆã?ã€command=NEW ãªã©)を使ã?Ÿã‚ã?パラメータã§ã™ãŒã€?
390             * アイコン割り当ã¦(IMAGE_KEY=XXXX)を使用ã™ã‚‹ã“ã¨ã§ã€XXXX をキーã¨ã—ã¦ä½¿ã?¾ã™ã?
391             * IMAGE_KEY=XXXX ãŒæŒ‡å®šã•れãªã??åˆã?ã€ç”»é¢IDãŒã?imageKey ã¨ã—ã¦è¿”ã•れã¾ã™ã?
392             *
393             * @og.rev 5.5.2.5 (2012/05/21) æ–°è¦è¿½åŠ?
394             *
395             * @return      イメージアイコンã®ã‚­ãƒ¼
396             */
397            public String getImageKey() {
398                    return guiData.getImageKey();
399            }
400    
401            /**
402             * ロールモード情報をå–å¾—ã—ã¾ã™ã?
403             *
404             * @og.rev 4.3.0.0 (2008/07/04) æ–°è¦è¿½åŠ?
405             *
406             * @return      ロールモー�
407             */
408            public RoleMode getRoleMode() {
409                    return guiData.getRoleMode() ;
410            }
411    
412            /**
413             * リードアクセス(読å–り許å¯)ã® å¯å¦ã‚?ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
414             * アクセスãƒã‚§ãƒ?‚¯ã¯ã€ç”»é¢ã®ãƒ­ãƒ¼ãƒ«ã‚’ユーザーã®
415             * ãã‚Œã¨æ¯”è¼?—ã¦æ¡ä»¶ãŒå«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹ã‚’確èªã—ã¾ã™ã?
416             * æ¡ä»¶ã?null (ã¾ãŸã??ストリング)ã®å ´åˆã?, true ã¨ãªã‚Šã¾ã™ã?
417             * æ¡ä»¶ã®åˆ¤æ–­ã¯ã€AND æ¡ä»¶ã§ã™ã?
418             * ã•らã«ã€ãã®ä»–ã?æ¡ä»¶éƒ¨åˆ?‚’判断ã—ã¦ã€OR æ¡ä»¶ã§å…ˆã?çµæžœã¨çªãåˆã‚ã›ã¾ã™ã?
419             * ユーザーã®ãƒ­ãƒ¼ãƒ«ãŒã? "root" ã®å ´åˆã?,rw 属æ?ã®ã¿ã®ãƒã‚§ãƒ?‚¯ã§åˆ¤æ–­ã—ã¾ã™ã?
420             *
421             * @og.rev 3.5.4.0 (2003/11/25) 引数ã«ãƒ­ãƒ¼ãƒ«ã‚ºã‚’渡ã—ã¾ã™ã?
422             *
423             * @return  アクセスOK?štrue  アクセス拒å¦?šfalse
424             */
425            public boolean isRead() {
426                    return menuFlag;
427            }
428    
429            /**
430             * ライトアクセス(書込ã¿è¨±å¯)ã® å¯å¦ã‚?ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
431             * アクセスãƒã‚§ãƒ?‚¯ã¯ã€ç”»é¢ã®ãƒ­ãƒ¼ãƒ«ã‚’ユーザーã®
432             * ãã‚Œã¨æ¯”è¼?—ã¦æ¡ä»¶ãŒå«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹ã‚’確èªã—ã¾ã™ã?
433             * æ¡ä»¶ã?null (ã¾ãŸã??ストリング)ã®å ´åˆã?, true ã¨ãªã‚Šã¾ã™ã?
434             * æ¡ä»¶ã®åˆ¤æ–­ã¯ã€AND æ¡ä»¶ã§ã™ã?
435             * ã•らã«ã€ãã®ä»–ã?æ¡ä»¶éƒ¨åˆ?‚’判断ã—ã¦ã€OR æ¡ä»¶ã§å…ˆã?çµæžœã¨çªãåˆã‚ã›ã¾ã™ã?
436             * ユーザーã®ãƒ­ãƒ¼ãƒ«ãŒã? "root" ã®å ´åˆã?,rw 属æ?ã®ã¿ã®ãƒã‚§ãƒ?‚¯ã§åˆ¤æ–­ã—ã¾ã™ã?
437             *
438             * @og.rev 3.5.4.0 (2003/11/25) 引数ã«ãƒ­ãƒ¼ãƒ«ã‚ºã‚’渡ã—ã¾ã™ã?
439             *
440             * @return  アクセスOK?štrue  アクセス拒å¦?šfalse
441             */
442            public boolean isWrite() {
443                    return writeFlag;
444            }
445    
446            /**
447             * ボタンメニューã«ãƒ—ルãƒ?‚¦ãƒ³ã‚’指定ã™ã‚‹ã?ã‹ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
448             *
449             * @og.rev 4.3.3.0 (2008/10/01) æ–°è¦ä½œæ?
450             *
451             * @return プルãƒ?‚¦ãƒ³åŒ–ã?å ´å?rue
452             */
453            public boolean isPulldown() {
454                    return pulldownFlag;
455            }
456    
457            /**
458             * æŒ?®šã?ユーザーロールã«å¯¾ã™ã‚‹ãƒ“ットæ¡ä»¶ã‚’å–å¾—ã—ã¾ã™ã?
459             * ã“ã? bitMode ã¯ã€ã™ã§ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼å˜ä½ã«ä½œæ?ã•れãŸå?ã§ã™ã?
460             *
461             * @og.rev 4.3.0.0 (2008/07/04) ロールモードã?ルãƒå¯¾å¿?
462             *
463             * @return アクセスビッ�
464             */
465            public byte getBitMode() {
466                    return bitMode;
467            }
468            
469            /**
470             * FAQãŒGE80ã«é–¢é€£ç”»é¢IDã¨ã—ã¦å­˜åœ¨ã—ã¦ã?‚‹ã‹ã©ã?‹
471             * 
472             * @og.rev 5.6.4.3 (2013/05/25) 追�
473             *
474             * @return      FAQã®å­˜åœ¨
475             */
476            public boolean isFaq() {
477                    return guiData.isFaq();
478            }
479    
480            /**
481             * ファイル出åŠ?ファイル出力許å¯)ã® å¯å¦ã‚?ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
482             * ファイル出力ã?ã€ç”»é¢å€‹ã?ã«è¨­å®šã§ãã‚‹ フロãƒ?ƒ”ーアイコンを制御ã™ã‚‹ã®ã«
483             * 使用ã—ã¾ã™ã?
484             * ユーザーã¨ç”»é¢ã®ãƒ­ãƒ¼ãƒ«ã‚’比è¼?—ã¦æ¡ä»¶ãŒå«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹ã‚’確èªã—ã¾ã™ã?
485             *
486             * @og.rev 4.3.0.0 (2008/07/04) æ–°è¦è¿½åŠ?
487             *
488             * @return  ファイル出力許å¯?štrue  ファイル出力ä¸å¯?šfalse
489             */
490    //      public boolean isFileDownload() {
491    //              return fileDFlag;
492    //      }
493    
494            /**
495             * ファイル入åŠ?ファイル入力許å¯)ã® å¯å¦ã‚?ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?
496             * ファイル入力ã?ã€ç”»é¢å€‹ã?ã«è¨­å®šã§ãã‚‹ フロãƒ?ƒ”ーアイコンを制御ã™ã‚‹ã®ã«
497             * 使用ã—ã¾ã™ã?
498             * ユーザーã¨ç”»é¢ã®ãƒ­ãƒ¼ãƒ«ã‚’比è¼?—ã¦æ¡ä»¶ãŒå«ã¾ã‚Œã¦ã?‚‹ã‹ã©ã?‹ã‚’確èªã—ã¾ã™ã?
499             *
500             * @og.rev 4.3.0.0 (2008/07/04) æ–°è¦è¿½åŠ?
501             *
502             * @return  ファイル入力許å¯?štrue  ファイル入力ä¸å¯?šfalse
503             */
504    //      public boolean isFileUpload() {
505    //              return fileUFlag;
506    //      }
507    
508            /**
509             * GUIInfoã®å±žæ?æ–?­—å?ã‚’å–å¾—ã—ã¾ã™ã?
510             *
511             * ・KEY           ç”»é¢ID
512             * ・ADDRESS       実行アドレス
513             * ・REALADDRESS   実行実アドレス
514             * ・SEQUENCE      表示�
515             * ・GROUPS        メニュグルー�
516             * ・CLASSIFY      メニュåˆ?¡?
517             * ・LEVEL         メニュ階層番å·
518             * ・LABEL         ç”»é¢åç§°
519             * ・NAME          ç”»é¢åç§°(=SNAME)
520             * ・SNAME         ç”»é¢åç§°(short)
521             * ・LNAME         ç”»é¢åç§°(long)
522             * ・ROLES         ロール
523             * ・MODE          アクセスモードå?(mr,mw,-r,-w ã®ç¾??)
524             * ・TARGET        ターゲãƒ?ƒˆ
525             * ・PARAM         設定å?(パラメータ)
526             * ・KBLINK        リンク区�
527             * ・DESCRIPTION   概è¦èª¬æ˜?
528             * ・IMAGEKEY      イメージキー
529             * ・DYUPD         更新日�
530             * ・ISREAD        読å–り許å¯[true/false]
531             * ・ISWRITE       書込ã¿è¨±å¯[true/false]
532             *
533             * @og.rev 3.4.0.0 (2003/09/01) リンク区åˆ?KBLINK)属æ?を追åŠ??
534             * @og.rev 3.5.5.0 (2004/03/12) 実行実アドレス(REALADDRESS)属æ?を追åŠ??
535             * @og.rev 3.5.6.5 (2004/08/09) 概è¦èª¬æ˜?DESCRIPTION)属æ?を追åŠ??
536             * @og.rev 4.0.0.0   (2005/11/30) ISREAD,ISWRITE 属æ?を追åŠ??
537             * @og.rev 5.3.3.0 (2011/03/01) 更新日時を追�
538             * @og.rev 5.5.2.5 (2012/05/21) IMAGEKEY 追�
539             * @og.rev 5.6.4.3 (2013/05/25) FAQ追�
540             *
541             * @param       key     キー
542             *
543             * @return      属æ?æ–?­—å?ã®å€¤
544             */
545            public String getAttribute( final String key ) {
546                    if( key == null ) { return null; }
547                    final String rtn ;
548    
549                    if(      key.equalsIgnoreCase( "KEY"         ) ) { rtn = getKey(); }
550                    else if( key.equalsIgnoreCase( "GUICLM"      ) ) { rtn = labelData.getKey(); }
551                    else if( key.equalsIgnoreCase( "ADDRESS"     ) ) { rtn = getAddress(); }
552                    else if( key.equalsIgnoreCase( "REALADDRESS" ) ) { rtn = getRealAddress(); }
553                    else if( key.equalsIgnoreCase( "SEQUENCE"    ) ) { rtn = String.valueOf( getSequence() ); }
554                    else if( key.equalsIgnoreCase( "GROUPS"      ) ) { rtn = getGroups(); }
555                    else if( key.equalsIgnoreCase( "CLASSIFY"    ) ) { rtn = getClassify(); }
556                    else if( key.equalsIgnoreCase( "LEVEL"       ) ) { rtn = String.valueOf( getLevel() ); }
557                    else if( key.equalsIgnoreCase( "LABEL"       ) ) { rtn = getLabel(); }
558                    else if( key.equalsIgnoreCase( "NAME"        ) ) { rtn = getName(); }
559                    else if( key.equalsIgnoreCase( "SNAME"       ) ) { rtn = getName(); }
560                    else if( key.equalsIgnoreCase( "LNAME"       ) ) { rtn = getLongName(); }
561                    else if( key.equalsIgnoreCase( "ROLE"        ) ) { rtn = getRoles(); }
562                    else if( key.equalsIgnoreCase( "ROLES"       ) ) { rtn = getRoles(); }
563                    else if( key.equalsIgnoreCase( "MODE"        ) ) { rtn = getMode(); }
564                    else if( key.equalsIgnoreCase( "TARGET"      ) ) { rtn = getTarget(); }
565                    else if( key.equalsIgnoreCase( "PARAM"       ) ) { rtn = getParam(); }
566                    else if( key.equalsIgnoreCase( "KBLINK"      ) ) { rtn = getKblink(); }
567                    else if( key.equalsIgnoreCase( "DESCRIPTION" ) ) { rtn = getDescription(); }    // 3.5.6.5 (2004/08/09)
568                    else if( key.equalsIgnoreCase( "IMAGEKEY"    ) ) { rtn = getImageKey(); }               // 3.5.6.5 (2004/08/09)
569                    else if( key.equalsIgnoreCase( "DYUPD"       ) ) { rtn = getDyupd(); }                  // 5.5.2.5 (2012/05/21)
570                    else if( key.equalsIgnoreCase( "ISREAD"      ) ) { rtn = String.valueOf( isRead() ); }  // 4.0.0 (2005/11/30)
571                    else if( key.equalsIgnoreCase( "ISWRITE"     ) ) { rtn = String.valueOf( isWrite() ); } // 4.0.0 (2005/11/30)
572                    else if( key.equalsIgnoreCase( "FAQ"         ) ) { rtn = String.valueOf(isFaq()); } // 5.6.4.3 (2013/05/24)
573                    else {
574                            String errMsg = "属æ?æ–?­—å?キーãŒä¸æ­£ã§ã™ã? key=[" + key + "]"
575                                                    + HybsSystem.CR
576                                                    + "予ç´?ª?" + YOYAKU + ") 以外ã?æŒ?®šã§ãã¾ã›ã‚“ã€? ;
577                            throw new HybsSystemException( errMsg );
578                    }
579                    return rtn ;
580            }
581    
582            /**
583             * GUIInfoã®å±žæ?æ–?­—å?ã®å†?ƒ¨æƒ??ã‚’è¿”ã—ã¾ã™ã?
584             * ã“ã?å†?ƒ¨æƒ??ã®ä¸­ã«ã¯ã€getAttribute( String ) ã§å–å¾—ã§ãる管ç?ƒ…å ±ã§ã™ã?
585             *
586             * @og.rev 4.0.0.0 (2004/12/31) æ–°è¦ä½œæ?
587             * @og.rev 5.3.3.0 (2011/03/01) 更新日時を追�
588             * @og.rev 5.5.2.5 (2012/05/21) IMAGEKEY 追�
589             *
590             * @return      属æ?æ–?­—å?ã®HybsEntryオブジェクトé?åˆ?
591             */
592            public HybsEntry[] getEntrys() {
593                    List<HybsEntry> list = new ArrayList<HybsEntry>();
594    
595                    list.add( new HybsEntry( "GUI.KEY"         , getAttribute( "KEY"         ) , "ç”»é¢ID" ) );
596                    list.add( new HybsEntry( "GUI.GUICLM"      , getAttribute( "GUICLM"      ) , "ç”»é¢ã‚«ãƒ©ãƒ?D" ) );
597                    list.add( new HybsEntry( "GUI.ADDRESS"     , getAttribute( "ADDRESS"     ) , "実行アドレス" ) );
598                    list.add( new HybsEntry( "GUI.REALADDRESS" , getAttribute( "REALADDRESS" ) , "実行実アドレス" ) );
599                    list.add( new HybsEntry( "GUI.SEQUENCE"    , getAttribute( "SEQUENCE"    ) , "表示� ) );
600                    list.add( new HybsEntry( "GUI.GROUPS"      , getAttribute( "GROUPS"      ) , "メニュグルー� ) );
601                    list.add( new HybsEntry( "GUI.CLASSIFY"    , getAttribute( "CLASSIFY"    ) , "メニュåˆ?¡? ) );
602                    list.add( new HybsEntry( "GUI.LEVEL"       , getAttribute( "LEVEL"       ) , "メニュ階層番å·" ) );
603                    list.add( new HybsEntry( "GUI.LABEL"       , getAttribute( "LABEL"       ) , "ç”»é¢åç§°" ) );
604                    list.add( new HybsEntry( "GUI.NAME"        , getAttribute( "NAME"        ) , "ç”»é¢åç§°(=SNAME)" ) );
605                    list.add( new HybsEntry( "GUI.SNAME"       , getAttribute( "SNAME"       ) , "ç”»é¢åç§°(short)" ) );
606                    list.add( new HybsEntry( "GUI.LNAME"       , getAttribute( "LNAME"       ) , "ç”»é¢åç§°(long)" ) );
607                    list.add( new HybsEntry( "GUI.ROLES"       , getAttribute( "ROLES"       ) , "ロール" ) );
608                    list.add( new HybsEntry( "GUI.MODE"        , getAttribute( "MODE"        ) , "アクセスモードå?(mr,mw,-r,-w ã®ç¾??)" ) );
609                    list.add( new HybsEntry( "GUI.TARGET"      , getAttribute( "TARGET"      ) , "ターゲãƒ?ƒˆ" ) );
610                    list.add( new HybsEntry( "GUI.PARAM"       , getAttribute( "PARAM"       ) , "パラメータ" ) );
611                    list.add( new HybsEntry( "GUI.KBLINK"      , getAttribute( "KBLINK"      ) , "リンク区� ) );
612                    list.add( new HybsEntry( "GUI.DESCRIPTION" , getAttribute( "DESCRIPTION" ) , "概è¦èª¬æ˜? ) );
613                    list.add( new HybsEntry( "GUI.IMAGEKEY"    , getAttribute( "IMAGEKEY"    ) , "イメージキー" ) );        // 5.5.2.5 (2012/05/21)
614                    list.add( new HybsEntry( "GUI.DYUPD"       , getAttribute( "DYUPD"       ) , "更新日� ) );             // 5.3.3.0 (2011/03/01)
615                    list.add( new HybsEntry( "GUI.ISREAD"      , getAttribute( "ISREAD"      ) , "読å–り許å¯[true/false]" ) );
616                    list.add( new HybsEntry( "GUI.ISWRITE"     , getAttribute( "ISWRITE"     ) , "書込ã¿è¨±å¯[true/false]" ) );
617    
618                    return list.toArray( new HybsEntry[list.size()] );
619            }
620    
621            /**
622             * ãƒ??タベã?ス検索ã—ãŸæ•°ã¨ã€æŽ›ã‹ã£ãŸæ™‚é–?ms)ã‚’ã?ã‚»ãƒ?ƒˆã—ã¾ã™ã?
623             * ã“れã¯ã€ã‚»ã‚­ãƒ¥ãƒªãƒ?‚£ä¸Šã?監視フラグã§ã€ä¸å¿?¦ã«ã€å¤§é‡ã?
624             * ãƒ??ã‚¿ãŒæ¤œç´¢ã•れãŸå?åˆã‚„ã€ä¸æ­£ãªãƒ??タアクセスãŒã‚ã‚‹ã‹ã©ã?‹ã‚?
625             * 監視ã™ã‚‹ãŸã‚ã?統計情報をå–å¾—ã—ã¾ã™ã?
626             * ç”»é¢ã‚ªãƒ–ジェクトã?ã€å„ユーザー毎ã«ä½œæ?ã•れã¦ã?‚‹ãŸã‚ã€å?ã€??
627             * ユーザーæ¯?ç”»é¢æ¯Žã?アクセス状æ³ã‚’見るã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
628             *
629             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?
630             *
631             * @param  cnt ãƒ??タベã?ス検索ã—ãŸæ•°
632             * @param  time ãƒ??タベã?ス検索ã—ãŸæ•°
633             * @param  query ãã?ã¨ãã?SQLæ–?
634             */
635            public void addReadCount( final int cnt,final long time,final String query ) {
636                    accessCount.addReadCount( cnt,time,query );
637            }
638    
639            /**
640             * ãƒ??タベã?ス登録ã—ãŸæ•°ã¨ã€æŽ›ã‹ã£ãŸæ™‚é–?ms)ã‚’ã?ã‚»ãƒ?ƒˆã—ã¾ã™ã?
641             * ã“れã¯ã€ã‚»ã‚­ãƒ¥ãƒªãƒ?‚£ä¸Šã?監視フラグã§ã€ä¸å¿?¦ã«ã€å¤§é‡ã?
642             * ãƒ??ã‚¿ãŒç™»éŒ²ã•れãŸå?åˆã‚„ã€ä¸æ­£ãªãƒ??タアクセスãŒã‚ã‚‹ã‹ã©ã?‹ã‚?
643             * 監視ã™ã‚‹ãŸã‚ã?統計情報をå–å¾—ã—ã¾ã™ã?
644             * ç”»é¢ã‚ªãƒ–ジェクトã?ã€å„ユーザー毎ã«ä½œæ?ã•れã¦ã?‚‹ãŸã‚ã€å?ã€??
645             * ユーザーæ¯?ç”»é¢æ¯Žã?アクセス状æ³ã‚’見るã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
646             *
647             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?
648             *
649             * @param  cnt ãƒ??タベã?ス登録ã—ãŸæ•°
650             * @param  time ãƒ??タベã?ス検索ã—ãŸæ•°
651             * @param  query ãã?ã¨ãã?SQLæ–?
652             */
653            public void addWriteCount( final int cnt,final long time,final String query ) {
654                    accessCount.addWriteCount( cnt,time,query );
655            }
656    
657            /**
658             * ã“ã?ç”»é¢ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹å›žæ•°ã‚’ã??‹ï¼‘ã—ã¾ã™ã?
659             * アクセス回数ã¯ã€ã“ã®ãƒ¡ã‚½ãƒ?ƒ‰ã®å‘¼ã³å‡ºã—回数ã®ã“ã¨ã§ã™ã?
660             * ç¾çжã§ã¯ã€result.jsp ç”»é¢ã§ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ã§ã€ã‚¢ã‚¯ã‚»ã‚¹æ•°ã‚?
661             * æ•°ãˆã‚‹ã“ã¨ã«ã—ã¾ã™ã?
662             *
663             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?
664             *
665             */
666            public void addAccessCount() {
667    //              if( level == 3 ) { level = 2; }
668                    if( level == 4 ) { level = 3; } // 4.0.0.0 (2007/10/30)
669                    accessCount.addAccessCount();
670            }
671    
672            /**
673             * エラー発生時ã®ä»¶æ•°ã‚’+1ã—ã¾ã™ã?
674             * ã“れã¯ã€ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«å‘¼ã³å‡ºã™ã“ã¨ã§ã€ã‚¨ãƒ©ãƒ¼ä»¶æ•°ã‚’ãƒã‚§ãƒ?‚¯ã™ã‚‹ã“ã¨ã?
675             * å¯èƒ½ã«ãªã‚Šã¾ã™ã?
676             * ä¸?ˆ¬ã«ã‚¨ãƒ©ãƒ¼ã«ã¯ã€äºˆæœŸã™ã‚‹ã‚¨ãƒ©ãƒ¼(å¿??入力登録æ¼ã‚Œç­?ã¨ã€äºˆæœŸã—ãªã?‚¨ãƒ©ãƒ¼
677             * ãŒã‚りã¾ã™ãŒã€ã“ã“ã§ã¯ã€Java ã® ExceptionãŒç™ºç”Ÿã™ã‚‹äºˆæœŸã—ãªã?‚¨ãƒ©ãƒ¼ã®
678             * 件数をカウントã—ã¾ã™ã?
679             *
680             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?
681             *
682             */
683            public void addErrorCount() {
684                    accessCount.addErrorCount();
685            }
686    
687            /**
688             * ã“ã?ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹çµ±è¨ˆã‚ªãƒ–ジェクトをå–å¾—ã—ã¾ã™ã?
689             *
690             * @og.rev 4.0.0.0 (2005/01/31) æ–°è¦è¿½åŠ?
691             *
692             * @return      アクセス統計オブジェク�
693             */
694            public GUIAccessCount getGUIAccessCount() {
695                    return accessCount;
696            }
697    
698            /**
699             * ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢IDã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
700             *
701             * ã“れã¯ã€ç”»é¢ã‚¢ã‚¯ã‚»ã‚¹ã®å±¥æ­´(é ?•ª)を管ç?™ã‚‹æ©Ÿè?ã‚’æä¾›ã—ã¾ã™ã?
702             * 自åˆ??èº«ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れる画é¢IDã®é›?ˆã‚’管ç?™ã‚‹ã“ã¨ã§
703             * QUERYç”»é¢ä¸Šéƒ¨ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒ?ƒˆãƒªãƒ³ã‚¯ã«ã€æ¬¡ã«ä½¿ç”¨ã™ã‚‹ç”»é¢ã®
704             * リンクを用æ„ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?
705             *
706             * @og.rev 5.2.3.0 (2010/12/01) アクセス履歴管ç?
707             *
708             * @param       guiKey  ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢ID
709             */
710            public void setNextGuiKey( final String guiKey ) {
711                    // 自åˆ??身ã®å ´åˆã?ã€ã‚»ãƒ?ƒˆã—ãªã??
712                    if( guiKey != null && !guiKey.equals( getKey() ) ) {
713                            synchronized( nextGui ) {
714                                    // 冿Œ¿å…¥ã‚’é¿ã‘ã¦ã?‚‹ã®ã¯ã€å?ç?™‚é–“ã‚’è€??ã—ã¦ã?‚‹ã?‘。æ„味ãŒã‚ã‚‹ã‹ã¯ä¸æ?ã€?
715                                    if( !nextGui.contains( guiKey ) ) {
716                                            nextGui.add( guiKey ) ;
717                                    }
718                            }
719                    }
720            }
721    
722            /**
723             * ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢IDã®CSVæ–?­—å?ã‚’å–å¾—ã—ã¾ã™ã?
724             *
725             * ã“れã¯ã€ç”»é¢ã‚¢ã‚¯ã‚»ã‚¹ã®å±¥æ­´(é ?•ª)をカンマ区åˆ?‚Šæ–?­—å?ã§å–り出ã—ã¾ã™ã?
726             * アクセス履歴を外部記æ?媒体ã«å‡ºåŠ›ã™ã‚‹å?åˆã«ä½¿ç”¨ã—ã¾ã™ã?
727             *
728             * @og.rev 5.2.3.0 (2010/12/01) アクセス履歴管ç?
729             *
730             * @return      ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢IDã®CSVæ–?­—å?
731             */
732            public String getNextGuiKeys() {
733                    StringBuilder buf = new StringBuilder();
734                    synchronized( nextGui ) {
735                            for( String key : nextGui ) {
736                                    buf.append( key ).append( "," );
737                            }
738                    }
739                    return buf.toString();
740            }
741    
742            /**
743             * ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢IDã®æ–?­—å?é…å?ã§å–å¾—ã—ã¾ã™ã?
744             *
745             * ã“れã¯ã€ç”»é¢ã‚¢ã‚¯ã‚»ã‚¹ã®å±¥æ­´(é ?•ª)を文字å?é…å?ã§å–り出ã—ã¾ã™ã?
746             *
747             * @og.rev 5.2.3.0 (2010/12/01) アクセス履歴管ç?
748             *
749             * @return      ã“ã?ç”»é¢ã®æ¬¡ã«ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸç”»é¢IDã®æ–?­—å?é…å?
750             */
751            public String[] getNextGuiArray() {
752                    final String[] rtnAry ;
753                    synchronized( nextGui ) {
754                            rtnAry = nextGui.toArray( new String[nextGui.size()] );
755                    }
756    
757                    return rtnAry ;
758            }
759            
760            /**
761             * 自然比è¼?ƒ¡ã‚½ãƒ?ƒ‰
762             * インタフェース Comparable 㮠実è£?«é–¢é€£ã—ã¦ã€å?定義ã—ã¦ã?¾ã™ã?
763             * 登録ã•れãŸã‚·ãƒ¼ã‚±ãƒ³ã‚¹(ç”»é¢ã®è¡¨ç¤ºé ?ã§æ¯”è¼?—ã¾ã™ã?
764             * equals メソãƒ?ƒ‰ã§ã¯ã€ã‚­ãƒ¼ã®åŒä¸??ã®ã¿ã«ç?›®ã—ã¦åˆ¤å®šã—ã¦ã?¾ã™ã?
765             * ã“ã?比è¼?§ã¯ã€?é‹ç”¨ä¸ŠåŒä¸?‚­ãƒ¼ã¯ç™ºç”Ÿã—ã¾ã›ã‚“ã?ãŸã¨ãˆåŒä¸?‚­ãƒ¼ãŒå­˜åœ¨ã—ãŸ
766             * ã¨ã—ã¦ã‚‚ã?ãã?比è¼??ãŒåŒã˜ã«ãªã‚‹ã“ã¨ã‚’ä¿è¨¼ã—ã¦ã?¾ã›ã‚“ã€?
767             *
768             * @param   other 比è¼?¯¾è±¡ã®Object
769             *
770             * @return  ã“ã?ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæŒ?®šã•れãŸã‚ªãƒ–ジェクトよりå°ã•ã??åˆã?è²??æ•´æ•°ã€ç­‰ã—ã??åˆã?ゼロã€å¤§ãã„å ´åˆã?æ­£ã®æ•´æ•°
771             * @throws  ClassCastException 引数ã?GUIInfo ã§ã¯ãªã??å?
772             * @throws  IllegalArgumentException 引数ã?null ã®å ´å?
773             */
774    //      public int compareTo( final Object object ) {
775            public int compareTo( final GUIInfo other ) {           // 4.3.3.6 (2008/11/15) Generics警告対�
776    //              if( object == null ) {
777                    if( other == null ) {
778                            String errMsg = "引数ãŒã?null ã§ã™ã?" ;
779                            throw new IllegalArgumentException( errMsg );
780                    }
781                    return getSequence() - other.getSequence();             // 4.3.3.6 (2008/11/15) Generics警告対�
782    
783    //              if( object instanceof GUIInfo ) {
784    //                      return getSequence() - ((GUIInfo)object).getSequence();         // 表示�
785    //              }
786    //              String errMsg = "引数ã?GUIInfo オブジェクトã§ã¯ã‚りã¾ã›ã‚“ã€? ;
787    //              throw new ClassCastException( errMsg );
788            }
789    
790            /**
791             * ã“ã?オブジェクトã¨ä»–ã?オブジェクトãŒç­‰ã—ã?‹ã©ã?‹ã‚’示ã—ã¾ã™ã?
792             * ç”»é¢ã¯ã€ç”»é¢IDãŒç­‰ã—ã‘れã°ã€è¨?ªžã‚„表示é ?«é–¢ä¿‚ãªãåŒä¸?¨ã¿ãªã•れã¾ã™ã?
793             * GUIInfo ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼å€‹åˆ¥ã«æ‰±ã‚れã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã«ã¯ã€key ã¯å”¯ä¸?§ã€ã‹ã¤
794             * åŒä¸?¨?ªžå?ã§æ‰±ã‚れるオブジェクトã?為ã€åŒä¸?¨ã¿ãªã—ã¾ã™ã?
795             *
796             * @param   object 比è¼?¯¾è±¡ã®å‚ç?オブジェクãƒ?
797             *
798             * @return      å¼•æ•°ã«æŒ?®šã•れãŸã‚ªãƒ–ジェクトã¨ã“ã?オブジェクトãŒç­‰ã—ã??åˆã? trueã€ãã?§ãªã??åˆã? false
799             */
800            @Override
801            public boolean equals( final Object object ) {
802                    if( object instanceof GUIInfo ) {
803                            return getKey().equals( ((GUIInfo)object).getKey() );
804                    }
805                    return false ;
806            }
807    
808            /**
809             * オブジェクトã?ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰å?ã‚’è¿”ã—ã¾ã™ã?
810             * ã“ã?メソãƒ?ƒ‰ã¯ã€java.util.Hashtable ã«ã‚ˆã£ã¦æä¾›ã•れるよã†ãª
811             * ãƒãƒƒã‚·ãƒ¥ãƒ??ブルã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã«ç”¨æ„ã•れã¦ã?¾ã™ã?
812             * equals( Object ) メソãƒ?ƒ‰ã‚’オーãƒã?ライトã—ãŸå?åˆã?ã€hashCode() メソãƒ?ƒ‰ã‚?
813             * å¿?š 記述ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
814             * ã“ã?実è£?§ã¯ã€getKey().hashCode() ã¨åŒå?ã‚’è¿”ã—ã¾ã™ã?
815             *
816             * @return  ã“ã?オブジェクトã?ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰å?
817             */
818            @Override
819            public int hashCode() {
820                    return getKey().hashCode() ;
821            }
822    
823            /**
824             * オブジェクトã?識別å­ã¨ã—ã¦?Œè©³ç´°ãªç”»é¢æƒ??ã‚’è¿”ã—ã¾ã™ã?
825             *
826             * @og.rev 3.4.0.0 (2003/09/01) リンク区åˆ?KBLINK)属æ?を追åŠ??
827             * @og.rev 3.5.5.0 (2004/03/12) 実行アドレス(ADDRESS)属æ?を追åŠ??
828             * @og.rev 5.3.3.0 (2011/03/01) 更新日時を追�
829             * @og.rev 5.5.2.5 (2012/05/21) IMAGEKEY 追�
830             *
831             * @return  詳細ãªç”»é¢æƒ??
832             */
833            @Override
834            public String toString() {
835                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
836                    rtn.append( "key        :").append( getKey()           ).append( HybsSystem.CR );       // ç”»é¢ID
837                    rtn.append( "lvlclm     :").append( labelData.getKey() ).append( HybsSystem.CR );       // ç”»é¢ã‚«ãƒ©ãƒ?D
838                    rtn.append( "address    :").append( getAddress()       ).append( HybsSystem.CR );       // 実行アドレス
839                    rtn.append( "sequence   :").append( getSequence()      ).append( HybsSystem.CR );       // 表示�
840                    rtn.append( "groups     :").append( getGroups()        ).append( HybsSystem.CR );       // メニュグルー�
841                    rtn.append( "classify   :").append( getClassify()      ).append( HybsSystem.CR );       // メニュåˆ?¡?
842                    rtn.append( "level      :").append( getLevel()         ).append( HybsSystem.CR );       // 階層レベル
843                    rtn.append( "name       :").append( getName()          ).append( HybsSystem.CR );       // ç”»é¢åç§°
844                    rtn.append( "longName   :").append( getLongName()      ).append( HybsSystem.CR );       // ç”»é¢åç§°(long)
845                    rtn.append( "roles      :").append( getRoles()         ).append( HybsSystem.CR );       // ロール
846                    rtn.append( "mode       :").append( getMode()          ).append( HybsSystem.CR );       // アクセスモー� "rwrwrw"
847                    rtn.append( "target     :").append( getTarget()        ).append( HybsSystem.CR );       // ターゲãƒ?ƒˆ
848                    rtn.append( "kblink     :").append( getKblink()        ).append( HybsSystem.CR );       // リンク区�
849                    rtn.append( "description:").append( getDescription()   ).append( HybsSystem.CR );       // 概è¦èª¬æ˜?
850                    rtn.append( "imageKey   :").append( getImageKey()      ).append( HybsSystem.CR );       // イメージキー 5.5.2.5 (2012/05/21)
851                    rtn.append( "dyupd      :").append( getDyupd()         ).append( HybsSystem.CR );       // 更新日�
852                    return rtn.toString();
853            }
854    }