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 java.sql.SQLException;
019    import java.util.ArrayList;
020    import java.util.Arrays;
021    import java.util.HashMap;
022    import java.util.List;
023    import java.util.Map;
024    import java.util.Set;
025    
026    import org.opengion.fukurou.db.DBSimpleTable;
027    import org.opengion.fukurou.db.DBUtil;
028    import org.opengion.fukurou.util.ApplicationInfo;
029    import org.opengion.fukurou.util.Cleanable;
030    import org.opengion.fukurou.util.HybsEntry;
031    import org.opengion.fukurou.util.LogWriter;
032    import org.opengion.hayabusa.common.HybsSystem;
033    import org.opengion.hayabusa.common.HybsSystemException;
034    import org.opengion.hayabusa.common.UserSummary;
035    import org.opengion.hayabusa.db.DBEditConfig;
036    import org.opengion.hayabusa.db.DBEditConfigManager;
037    
038    /**
039     * 繝ヲ繝シ繧カ繝シ諠??縺ョ蜿門セ励?轤コ縺ョ繧、繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ繧貞ョ溯」?@縺溘け繝ゥ繧ケ縺ァ縺吶?
040     *
041     * 繝ュ繧ー繧、繝ウ譎ゅ?繝代せ繝ッ繝シ繝峨?繝√ぉ繝?け繧?蝗ス蜷阪?隴伜挨ID?後?繝シ繧ソ繝ォ繝壹?繧ク縺ョURL縺ェ縺ゥ
042     * 蛟倶ココ諠??繧堤ョ。逅?&縺帙∪縺吶?
043     * 迚ケ縺ォ,逕サ髱「繧「繧ッ繧サ繧ケ譎ゅ?讓ゥ髯舌d繝。繝シ繝ォ縺ョ騾∽ソ。?悟推逕サ髱「縺ォ繝ヲ繝シ繧カ繝シ諠??繧定。ィ遉コ縺励◆繧?
044     * 繧ィ繝ゥ繝シ譎ゅ?繝ュ繧ー繝輔ぃ繧、繝ォ?後ユ繝ウ繝昴Λ繝ェ繝?ぅ繝ャ繧ッ繝医Μ縺ェ縺ゥ繧らョ。逅?@縺セ縺吶?
045     *
046     * {@USER.XXXX} 縺ァ縲々XXX 驛ィ縺ォ縲ゞserInfo 繧ェ繝悶ず繧ァ繧ッ繝医〒螳夂セゥ縺輔l縺ヲ縺?k
047     * 螻樊?諠??繧貞叙繧雁?縺吶%縺ィ縺悟?譚・縺セ縺吶?
048     *
049     * 莉・荳九?蛟、縺ッ UserInfo 繧ェ繝悶ず繧ァ繧ッ繝医?鬆?岼縺九i蜿門セ励@縺セ縺吶?
050     * 繝サJNAME      繝ヲ繝シ繧カ繝シ譌・譛ャ隱槫錐遘ー
051     * 繝サID         繝ヲ繝シ繧カ繝シ?ゥ?、
052     * 繝サINFO       繝ヲ繝シ繧カ繝シ諠??(繝ヲ繝シ繧カ繝シID?壽律譛ャ隱槫錐遘ー)
053     * 繝サLANG       險?ェ?
054     * 繝サROLES      繝ュ繝シ繝ォ
055     * 繝サIPADDRESS  IP繧「繝峨Ξ繧ケ
056     * 繝サLOGINTIME  繝ュ繧ー繧、繝ウ譎ょ綾
057     * 繝サLASTACCESS 譛?オゅい繧ッ繧サ繧ケ逕サ髱「ID
058     *
059     * 莉・荳九?蛟、縺ッ縺ゅi縺九§繧√?蜍慕噪縺ォ菴懈?縺輔l縺セ縺吶?
060     * 繝サYMD       ?話yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・莉?
061     * 繝サYMDH    ?托シ巴yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・譎?
062     *
063     * 縺昴l莉・螟悶?,螟夜Κ繧医j險ュ螳壹&繧後◆蛟、縺ァ縺吶?
064     * 蠕捺擂縺ッ縲ゞSER.IDNO 縺ッUSER.ID 縺鯉シ稗yte莉・荳翫?譎ゅ?縺ソ蜈磯??第枚蟄励r髯、縺?◆繝ヲ繝シ繧カ繝シ?ゥ?、縺ィ縺励※
065     * 繧ェ繝悶ず繧ァ繧ッ繝磯?逶ョ縺九i縺ョ蜿門セ励〒縺励◆縺後?迴セ蝨ィ縺ッ蛻晄悄蛟、縺ィ縺励※險ュ螳壹@縺ヲ縺ゅj縺セ縺吶?
066     * 螟夜Κ繧医j蜀崎ィュ螳壼庄閭ス縺ォ縺ェ縺」縺ヲ縺?∪縺吶?
067     *
068     * @og.group 繝ェ繧ス繝シ繧ケ邂。逅?
069     *
070     * @version  4.0
071     * @author   Kazuhiko Hasegawa
072     * @since    JDK5.0,
073     */
074    public class UserInfo implements UserSummary , Cleanable {
075            private static final long serialVersionUID = 4000 ;     // 4.0.0 (2005/06/30)
076    
077            // 繝ヲ繝シ繧カ繝シ繝ェ繧ス繝シ繧ケ縺ョ繧ュ繝シ謖?ョ夊ェュ縺ソ霎シ縺ソ縺ョ繧ッ繧ィ繝ェ繝シ
078            private static final String QUERY_PARAM = HybsSystem.sys( "USER_PARAMETER_SQL" );
079    
080            // 邨ア險医ユ繝シ繝悶Ν(GE15)縺ク縺ョ謗・邯壼?繧偵?繝ェ繧ス繝シ繧ケ縺ョ謗・邯壼?繧医j蜿門セ励@縺セ縺吶?
081            private final String DBID = HybsSystem.sys( "RESOURCE_DBID" );
082    
083            //private static final String YOYAKU = "|JNAME|ID|INFO|LANG|ROLES|IPADDRESS|LOGINTIME|LASTACCESS|YMD|YMDH|" ;
084            private static final String YOYAKU = "|JNAME|ID|INFO|LANG|ROLES|IPADDRESS|LOGINTIME|LASTACCESS|YMD|YMDH|LASTGAMENNM" ; // 4.4.0.1 (2009/08/08)
085    
086            private final boolean useAccessTable = HybsSystem.sysBool( "USE_ACCESS_TOKEI_TABLE" );
087    //      private final String  accessPastDays = HybsSystem.sys( "ACCESS_TOKEI_PAST_DAYS" ); // 4.1.0.1 (2008/01/31)
088    
089            private final String    userID  ;
090    //      private final String    lang    ;
091            private       String    lang    ;       // 5.1.4.0 (2010/03/01) lang 繧呈嶌縺肴鋤縺亥庄閭ス縺ィ縺吶k縲?
092            private final String    jname   ;
093            private final String    roles   ;
094            private final String    droles  ; // 4.4.0.0 (2009/08/02) 繝??繧ソ繝ュ繝シ繝ォ蟇セ蠢?
095    //      private final String[]  userRoles       ;
096            private final String    ipAddress       ;
097            private final long              loginTime       ;
098            private final Map<String,String>  attribute  ;
099            private final RoleMode  roleMode ;              // 繝ュ繝シ繝ォ繧コ縺ィ繝「繝シ繝峨r邂。逅?☆繧九が繝悶ず繧ァ繧ッ繝?
100            private final DataRole  dataRole ;              // 繝??繧ソ繝ュ繝シ繝ォ繧堤ョ。逅?☆繧九が繝悶ず繧ァ繧ッ繝?
101    
102    //      private final boolean   isRootRole      ;                               // 4.3.0.0 (2008/07/04) 蟒?ュ「
103            private final int               hashcode        ;                               // 3.5.6.0 (2004/06/18)
104            private Map<String,GUIInfo>       guiMap  ;                               // 4.0.0 (2005/01/31)
105            private           boolean       isInfoSet       = false;                        // 4.0.0 (2005/01/31)
106            private           long          usedTime        = 0L;                           // 4.0.0 (2005/01/31)
107            private final Map<String,String>  paramMap = new HashMap<String,String>();
108            private final Object    guiLock         = new Object();
109            private final String    systemId        ;
110            private Map<String,FavoriteGUIData> favoriteGuiMap = null;        // 4.1.1.0 (2008/01/22)
111            private Set<String> forbidAddrSet         = null;                 // 5.2.0.0 (2010/09/01)
112            private final DBEditConfigManager editMgr = new DBEditConfigManager(); // 5.3.6.0 (2011/06/01)
113    
114            /** 繧ウ繝阪け繧キ繝ァ繝ウ縺ォ繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ諠??繧定ソス險倥☆繧九°縺ゥ縺?°謖?ョ?*/
115            public static final boolean USE_DB_APPLICATION_INFO  = HybsSystem.sysBool( "USE_DB_APPLICATION_INFO" ) ;
116    
117            // 3.8.7.0 (2006/12/15) 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳?
118            private final ApplicationInfo appInfo;
119    
120            // GE20 繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ諠??豌ク邯壼喧繝??繝悶Ν 隱ュ縺ソ霎シ縺ソ逕ィSQL
121            // 4.3.4.0 (2008/12/01) ROLE='*'繧よ、懃エ「縺ァ縺阪k繧医≧縺ォ縺吶k
122            // 5.3.6.0 (2011/06/01) USERID='*'繧よ、懃エ「縺ァ縺阪k繧医≧縺ォ縺吶k
123            private static final String QUERY_GE20          = "select PARAM_ID,PARAM from GE20 where SYSTEM_ID = ? and USERID in ( ?, '*' ) and ROLES in ( ?, '*' ) and FGJ = '1' order by USERID,ROLES";
124    
125            // 4.3.4.0 (2008/12/01) GE20縺ォ繧サ繝シ繝匁凾縺ォ蟄伜惠繝√ぉ繝?け繧定。後≧縺溘a縺ョSQL
126            // 4.3.4.4 (2009/01/01) private static 繧剃サ伜刈
127            private static final String QUERY_GE20_KEY      = "select KBSET from GE20 where SYSTEM_ID = ? and USERID = ? and ROLES = ? and PARAM_ID = ? and FGJ = '1'";
128    
129            // 5.2.3.0 (2010/12/01) 繧「繧ッ繧サ繧ケ螻・豁エ邂。逅?
130            private GUIInfo lastGuiInfo = null;
131    
132            /**
133             * 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ繝シ
134             *
135             * @og.rev 3.0.0.1 (2003/02/14) 繝ヲ繝シ繧カ繝シ豈弱?繧ィ繝ウ繧ウ繝シ繝画欠螳壽婿豕輔r蟒?ュ「縺励∪縺吶?
136             * @og.rev 3.1.3.0 (2003/04/10) 繝ヲ繝シ繧カ繝シ諠??縺九i縲√お繝ウ繧ウ繝シ繝画ュ蝣ア繧貞炎髯、縺吶k縲?
137             * @og.rev 3.4.0.3 (2003/09/10) "root","manager","admin" 縺ョ繝ュ繝シ繝ォ繧偵?縺吶∋縺ヲ root 讓ゥ髯舌r荳弱∴繧九?
138             * @og.rev 3.8.5.3 (2006/06/30) USE_USER_IDNO_C_SAPLESS 繧貞愛螳壽擅莉カ縺ォ蜉?∴繧九?
139             * @og.rev 3.8.7.0 (2006/12/15) 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳?
140             * @og.rev 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
141             * @og.rev 4.4.0.0 (2009/08/02) 繝??繧ソ繝ュ繝シ繝ォ蟇セ蠢?
142             * @og.rev 5.3.6.0 (2011/06/01) GE20縺ョ隱ュ縺ソ霎シ縺ソ繧旦serInfoFactory縺九i遘サ蜍?
143             *
144             * @param       userID          繝ヲ繝シ繧カ繝シ
145             * @param       lang            險?ェ?
146             * @param       jname           譌・譛ャ隱槫錐遘ー
147             * @param       roles           繝ュ繝シ繝ォ
148             * @param       droles          繝??繧ソ繝ュ繝シ繝ォ
149             * @param       systemId        繧キ繧ケ繝?ΒID
150             * @param       ipAddress       IP繧「繝峨Ξ繧ケ
151             * @param   appInfo             繧「繝励Μ諠??繧ェ繝悶ず繧ァ繧ッ繝?
152             */
153            public UserInfo( final String userID            ,
154                                             final String lang                      ,
155                                             final String jname                     ,
156                                             final String roles                     ,
157                                             final String droles            , // 4.4.0.0 (2009/08/02)
158                                             final String systemId          ,
159                                             final String ipAddress         ,
160                                             final ApplicationInfo appInfo  ) {
161                    this.userID             = userID        ;
162                    this.lang               = lang          ;
163                    this.jname              = jname         ;
164                    this.roles              = roles         ;
165                    this.droles             = droles        ; // 4.4.0.0 (2009/08/02)
166                    this.systemId   = systemId      ;
167    //              userRoles               = StringUtil.csv2Array( roles,HybsSystem.GUI_DELIMITER );
168                    this.roleMode   = RoleMode.newInstance( roles );        // 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝?
169                    this.dataRole   = DataRole.newInstance( droles, systemId, appInfo ); // 4.4.0.0 (2009/08/02)
170                    this.ipAddress  = ipAddress     ;
171                    this.appInfo    = appInfo       ;
172                    loginTime               = System.currentTimeMillis();
173                    usedTime                = loginTime;
174                    attribute               = new HashMap<String,String>();
175    
176                    // 3.4.0.3 (2003/09/10) "root","manager","admin" 縺ョ繝ュ繝シ繝ォ繧偵?縺吶∋縺ヲ root 讓ゥ髯舌r荳弱∴繧九?
177                    // 4.3.0.0 (2008/07/04) 蟒?ュ「
178    //              isRootRole = "root".equals( roles ) || "manager".equals( roles ) || "admin".equals( roles ) ;
179    
180                    // 3.5.6.0 (2004/06/18) hashCode 繧定ィ育ョ励@縺ヲ縺翫″縺セ縺吶?
181                    hashcode = (int)(loginTime^(loginTime>>>32)) ;
182    
183                    // 3.8.1.2 (2005/12/19) USER.IDNO 繧但ttribute縺ォ繧サ繝?ヨ縺吶k縲?
184                    // 3.8.5.3 (2006/06/30) USE_USER_IDNO_C_SAPLESS 繧貞愛螳壽擅莉カ縺ォ蜉?∴繧九?
185                    boolean IDNO_C_SAPLESS = HybsSystem.sysBool( "USE_USER_IDNO_C_SAPLESS" );
186                    String idno = ( userID.length() > 5 && IDNO_C_SAPLESS ) ? userID.substring(1) : userID ;
187                    attribute.put( "IDNO",idno ) ;
188    
189                    // 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ縺ェ縺ゥ縺ョ蛻晄悄險ュ螳壹r陦後>縺セ縺吶?
190                    initLoad() ;
191    
192                    // 5.3.6.0 (2011/06/01) GE20縺九iDB縺ォ菫晏ュ倥&繧後◆UserInfo諠??繧定ェュ縺ソ蜃コ縺励∪縺吶?
193                    dbLoad();
194    
195                    // 5.3.6.0 (2011/06/01) Edit諠??縺ョ荳?ヲァ繧剃ス懈?縺励∪縺吶?
196                    makeEditConfigMap();
197            }
198    
199            /**
200             * 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ繧貞叙蠕励@縺セ縺吶?
201             * 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ繝シ縺ッ縲??蟶ク縲;E16 繝??繝悶Ν繧医j蜿門セ励@縺セ縺吶?
202             * 蜿門セ励☆繧鬼QL譁??縲ヾystemData 縺ョ USER_PARAMETER_SQL 縺ォ險倩ソー縺励※縺翫″縺セ縺吶?
203             * 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ縺ォ縲∝?縺悟ュ伜惠縺励↑縺??蜷医?縲√す繧ケ繝?Β繝ェ繧ス繝シ繧ケ繧医j
204             * 蜿門セ励@縺セ縺吶?
205             *
206             * @param       key     繝代Λ繝。繝シ繧ソ繧ュ繝シ
207             *
208             * @return      繝代Λ繝。繝シ繧ソ蛟、(繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ縺ォ縺ェ縺代l縺ー縲√す繧ケ繝?Β繝ェ繧ス繝シ繧ケ繧医j蜿門セ?
209             */
210            public String getParameter( final String key ) {
211                    String val = null;
212                    if( key != null ) {
213                            synchronized( paramMap ) {
214                                    val = paramMap.get( key );
215                            }
216                            if( val == null ) { val = HybsSystem.sys( key ); }
217                    }
218                    return val;
219            }
220    
221            /**
222             * 繝ヲ繝シ繧カ繝シ繝ュ繧ー繧、繝ウ譎ょ綾繧貞叙蠕励@縺セ縺吶?
223             *
224             * @return      繝ュ繧ー繧、繝ウ譎ょ綾
225             */
226            public long getLoginTime() {
227                    return loginTime;
228            }
229    
230            /**
231             * 繝ヲ繝シ繧カ繝シ縺ョ繝ュ繧ー繧、繝ウIP繧「繝峨Ξ繧ケ繧貞叙蠕励@縺セ縺吶?
232             *
233             * @return      IP繧「繝峨Ξ繧ケ
234             *
235             */
236            public String getIPAddress() {
237                    return ipAddress;
238            }
239    
240            /**
241             * 繝ヲ繝シ繧カ繝シ繧貞叙蠕励@縺セ縺吶?
242             *
243             * @return      繝ヲ繝シ繧カ繝シ
244             *
245             */
246            public String getUserID() {
247                    return userID;
248            }
249    
250            /**
251             * 繝ヲ繝シ繧カ繝シ諠??繝ュ繧ア繝シ繝ォ(險?ェ?繧貞叙蠕励@縺セ縺吶?
252             *
253             * @return      繝ュ繧ア繝シ繝ォ(險?ェ?
254             */
255            public String getLang() {
256                    return lang ;
257            }
258    
259            /**
260             * 繝ヲ繝シ繧カ繝シ諠??繝ュ繧ア繝シ繝ォ(險?ェ?繧偵そ繝?ヨ縺励∪縺吶?
261             *
262             * @og.rev 5.1.4.0 (2010/03/01) lang 繧呈嶌縺肴鋤縺亥庄閭ス縺ィ縺吶k縲?
263             *
264             * @param newLang       繝ュ繧ア繝シ繝ォ(險?ェ?
265             */
266            public void setLang( final String newLang ) {
267                    lang = newLang ;
268            }
269    
270            /**
271             * 繝ヲ繝シ繧カ繝シ諠?? 蜷咲ァー(譌・譛ャ隱?繧貞叙蠕励@縺セ縺吶?
272             *
273             * @return      蜷咲ァー(譌・譛ャ隱?
274             */
275            public String getJname() {
276                    return jname ;
277            }
278    
279            /**
280             * 繝ヲ繝シ繧カ繝シ諠?? 繝ュ繝シ繝ォ(蠖ケ蜑イ)繧貞叙蠕励@縺セ縺吶?
281             *
282             * @return      繝ュ繝シ繝ォ(蠖ケ蜑イ)
283             */
284            public String getRoles() {
285                    return roles ;
286            }
287    
288            /**
289             * 繝ュ繝シ繝ォ繝「繝シ繝画ュ蝣ア繧貞叙蠕励@縺セ縺吶?
290             *
291             * @og.rev 4.3.0.0 (2008/07/04) 譁ー隕剰ソス蜉?
292             *
293             * @return      繝ュ繝シ繝ォ繝「繝シ繝画ュ蝣ア
294             */
295            public RoleMode getRoleMode() {
296                    return roleMode ;
297            }
298    
299            /**
300             * 繧ェ繝悶ず繧ァ繧ッ繝医?隴伜挨蟄舌→縺励※?後Θ繝シ繧カ繝シ諠??繧定ソ斐@縺セ縺吶?
301             *
302             * @return  繝ヲ繝シ繧カ繝シ諠??
303             */
304            public String getInfo() {
305                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
306                    rtn.append( userID ).append( " ??" );
307                    rtn.append( jname  ).append( HybsSystem.CR );
308                    return rtn.toString();
309            }
310    
311            /**
312             * UserInfo縺ョ螻樊?譁?ュ怜?繧堤匳骭イ縺励∪縺吶?
313             *
314             * 莠育エ?枚蟄?JNAME,ID,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,YMD,YMDH,LASTGAMENNM)繧?
315             * 逋サ骭イ縺励h縺?→縺励◆蝣エ蜷医?縲√お繝ゥ繝シ縺ォ縺励∪縺吶?
316             *
317             * @param       key     繧ュ繝シ
318             * @param       value   蛟、
319             * @param       save    GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺ォ諠??繧剃ソ晏ュ倥☆繧九°
320             * @throws HybsSystemException
321             */
322            public void setAttribute( final String key,final String value, final boolean save ) {
323                    setAttribute( key, value, save, false );
324            }
325    
326            /**
327             * UserInfo縺ョ螻樊?譁?ュ怜?繧堤匳骭イ縺励∪縺吶?
328             *
329             * 莠育エ?枚蟄?JNAME,ID,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,YMD,YMDH,LASTGAMENNM)繧?
330             * 逋サ骭イ縺励h縺?→縺励◆蝣エ蜷医?縲√お繝ゥ繝シ縺ォ縺励∪縺吶?
331             *
332             * @og.rev 3.5.6.0 (2004/06/18) synchronized 繧誕ttribute 縺ォ陦後>縺セ縺吶?
333             * @og.rev 4.3.4.0 (2008/12/01) GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺ク逋サ骭イ縺吶k縺九?繝輔Λ繧ー繧定ソス蜉?
334             * @og.rev 5.3.6.0 (2011/06/01) GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺ク逋サ骭イ譎ゅ↓蜈ィ繝ヲ繝シ繧カ繝シ蜈ャ髢九☆繧九°縺ョ繝輔Λ繧ー繧定ソス蜉?
335             *
336             * @param       key     繧ュ繝シ
337             * @param       value   蛟、
338             * @param       save    GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺ォ諠??繧剃ソ晏ュ倥☆繧九°
339             * @param       common  GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺ォ菫晏ュ倥@縺滓ュ蝣ア繧貞?繝ヲ繝シ繧カ繝シ蜈ャ髢九☆繧九°
340             * @throws HybsSystemException
341             */
342    //      public void setAttribute( final String key,final String value ) {
343    //      public void setAttribute( final String key,final String value, final boolean save ) {
344            private void setAttribute( final String key,final String value, final boolean save, final boolean common ) {
345                    if( key != null && YOYAKU.indexOf( "|" + key + "|" ) < 0 ) {
346                            synchronized( attribute ) {
347                                    attribute.put( key,value ) ;
348                            }
349    
350                            // 4.3.4.0 (2008/12/01) 霑ス蜉?
351                            if( save ) {
352                                    savePermanently( key ,value, common );
353                            }
354                    }
355                    else {
356                            String errMsg = "螻樊?譁?ュ怜?繧ュ繝シ縺御ク肴ュ」縺ァ縺吶? key=[" + key + "]"
357                                                    + HybsSystem.CR
358                                                    + "null 縺セ縺溘?莠育エ?ェ?" + YOYAKU + ") 縺ッ謖?ョ壹〒縺阪∪縺帙s縲?;
359                            throw new HybsSystemException( errMsg );
360                    }
361            }
362    
363            /**
364             * 繝ヲ繝シ繧カ繝シ縺ョ繝ュ繝シ繝ォ縺後?"root" 讓ゥ髯舌′縺ゅk縺九←縺?°縲∬ソ斐@縺セ縺吶?
365             *
366             * "root" 讓ゥ髯舌→縺ッ縲√Ο繝シ繝ォ縺後?"root","manager","admin" 縺ョ縺?★繧後°縺ョ蝣エ蜷医?
367             *
368             * @og.rev 3.4.0.3 (2003/09/10) 譁ー隕剰ソス蜉?
369             * @og.rev 4.3.0.0 (2008/07/04) 蟒?ュ「
370             *
371             * @return  "root" 讓ゥ髯舌°縺ゥ縺?°
372             */
373    //      public boolean isRoot() {
374    //              return isRootRole ;
375    //      }
376    
377            /**
378             * UserInfo縺ョ螻樊?譁?ュ怜?繧貞叙蠕励@縺セ縺吶?
379             *
380             * 莉・荳九?蛟、縺ッ UserInfo 繧ェ繝悶ず繧ァ繧ッ繝医?鬆?岼縺九i蜿門セ励@縺セ縺吶?
381             * <pre>
382             * 繝サJNAME      繝ヲ繝シ繧カ繝シ譌・譛ャ隱槫錐遘ー
383             * 繝サID         繝ヲ繝シ繧カ繝シ?ゥ?、
384             * 繝サIDNO       (蛻晄悄蛟、)USER.ID 縺鯉シ稗yte莉・荳翫?譎ゅ?縺ソ蜈磯??第枚蟄励r髯、縺?◆繝ヲ繝シ繧カ繝シ?ゥ?、
385             * 繝サINFO       繝ヲ繝シ繧カ繝シ諠??(繝ヲ繝シ繧カ繝シID?壽律譛ャ隱槫錐遘ー)
386             * 繝サLANG       險?ェ?
387             * 繝サROLES      繝ュ繝シ繝ォ
388             * 繝サIPADDRESS  IP繧「繝峨Ξ繧ケ
389             * 繝サLOGINTIME  繝ュ繧ー繧、繝ウ譎ょ綾
390             * 繝サLASTACCESS 譛?オゅい繧ッ繧サ繧ケ逕サ髱「ID
391             * 繝サLASTGAMENNM 譛?オゅい繧ッ繧サ繧ケ逕サ髱「蜷?
392             *
393             * 莉・荳九?蛟、縺ッ縺ゅi縺九§繧√?蜍慕噪縺ォ菴懈?縺輔l縺セ縺吶?
394             * 繝サYMD       ?話yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・莉?
395             * 繝サYMDH    ?托シ巴yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・譎?
396             * </pre>
397             *
398             * 縺昴l莉・螟悶?,螟夜Κ繧医j險ュ螳壹&繧後◆蛟、縺ァ縺吶?
399             *
400             * @og.rev 2.1.0.2 (2002/11/07) USER.IDNO 縺ョ霑斐☆蛟、繧旦SER.ID 縺鯉シ稗yte莉・荳翫?譎ゅ?縺ソ縲?
401             * 蜈磯?1譁?ュ励r髯、縺?◆蛟、繧定ソ斐☆讒倥↓螟画峩縲ゅ◎繧御サ・螟悶?縲ゞSER.ID繧定ソ斐☆縲?
402             *
403             * @og.rev 2.2.0.0 (2002/12/17) 荳ュ蝗ス隱?蝗ス髫帛喧)蟇セ蠢? ENCODE 霑ス蜉?
404             * @og.rev 3.1.3.0 (2003/04/10) 繝ヲ繝シ繧カ繝シ諠??縺九i縲√お繝ウ繧ウ繝シ繝画ュ蝣ア繧貞炎髯、縺吶k縲?
405             * @og.rev 3.5.4.2 (2003/12/15) ENAME,MAILTO縲`AILUSERID縲`AILPASSWD縲;ROUP縲 ̄ROJECT繧貞炎髯、縺吶k縲?
406             * @og.rev 3.5.6.0 (2004/06/18) synchronized 繧誕ttribute 縺ォ陦後>縺セ縺吶?
407             * @og.rev 3.6.0.0 (2004/09/17) PASSWD 繧貞炎髯、縺吶k縲?
408             * @og.rev 3.8.1.2 (2005/12/19) USER.IDNO 繧貞炎髯、縺吶k縲?螟夜Κ險ュ螳壼庄閭ス縺ォ縺吶k縺溘a)
409             * @og.rev 3.8.7.0 (2006/12/15) ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医°繧画怙邨ゅい繧ッ繧サ繧ケ逕サ髱「繧貞叙蠕?
410             * @og.rev 4.4.0.0 (2009/08/02) 繝??繧ソ繝ュ繝シ繝ォ螻樊?蟇セ蠢?
411             * @og.rev 4.4.0.1 (2009/08/08) LASTGAMENNM霑ス蜉?
412             *
413             * @param       key     繧ュ繝シ
414             *
415             * @return      UserInfo縺ョ螻樊?譁?ュ怜?
416             */
417            public String getAttribute( final String key ) {
418                    if( key == null ) { return null; }
419                    String rtn = null;
420    
421                    if(      key.equalsIgnoreCase( "JNAME"  ) ) { rtn = jname; }
422                    else if( key.equalsIgnoreCase( "ID"             ) ) { rtn = userID; }
423                    else if( key.equalsIgnoreCase( "INFO"           ) ) { rtn = getInfo(); }
424                    else if( key.equalsIgnoreCase( "LANG"           ) ) { rtn = lang; }
425                    else if( key.equalsIgnoreCase( "ROLE"           ) ) { rtn = roles; }
426                    else if( key.equalsIgnoreCase( "ROLES"          ) ) { rtn = roles; }
427                    else if( key.equalsIgnoreCase( "DROLES"         ) ) { rtn = droles; } // 4.4.0.0 (2009/08/02)
428                    else if( key.equalsIgnoreCase( "IPADDRESS"      ) ) { rtn = ipAddress; }
429                    else if( key.equalsIgnoreCase( "LOGINTIME"      ) ) {
430                            rtn = HybsSystem.getDate( loginTime );
431                    }
432                    else if( key.equalsIgnoreCase( "LASTACCESS"  ) ) {              // 3.8.7.0 (2006/12/15)
433                            if( appInfo != null ) { rtn = appInfo.getGamenId(); }
434                    }
435                    else if( key.equalsIgnoreCase( "YMD" ) ) {
436                            rtn = HybsSystem.getDate( "yyyyMMdd" );
437                    }
438                    else if ( key.equalsIgnoreCase( "LASTGAMENNM" ) ){              // 4.4.0.1 (2009/08/08)
439                            if( appInfo != null && appInfo.getGamenId() != null){
440                                    if( getGUIInfo( appInfo.getGamenId() ) != null){
441                                            rtn = getGUIInfo( appInfo.getGamenId() ).getName();
442                                    }
443                            }
444                    }
445                    else if( key.equalsIgnoreCase( "YMDH" ) ) {
446                            rtn = HybsSystem.getDate( "yyyyMMddHHmmss" );
447                    }
448                    else {
449                            synchronized( attribute ) {
450                                    rtn = attribute.get( key ) ;
451                            }
452                    }
453                    return rtn ;
454            }
455    
456            /**
457             * UserInfo縺ョ螻樊?譁?ュ怜?縺ョ蜀?Κ諠??繧定ソ斐@縺セ縺吶?
458             * 縺薙?蜀?Κ諠??縺ョ荳ュ縺ォ縺ッ縲ゞserInfo 閾ェ霄ォ縺ョ邂。逅?ュ蝣ア繧ょ性繧√∪縺吶?
459             * 迢ャ閾ェ邂。逅?く繝シ縺ッ縲゛NAME,ID,IDNO,INFO,LANG,ROLES,IPADDRESS,LOGINTIME,LASTACCESS,LASTGAMENNM 縺ァ縺吶?
460             *
461             * 縺昴l莉・螟悶?,螟夜Κ繧医j險ュ螳壹&繧後◆蛟、縺ァ縺吶?
462             *
463             * @og.rev 4.0.0.0 (2004/12/31) 譁ー隕丈ス懈?
464             * @og.rev 4.4.0.1 (2009/08/08) LASTGAMENNM霑ス蜉?
465             *
466             * @return 螻樊?譁?ュ怜?縺ョHybsEntry繧ェ繝悶ず繧ァ繧ッ繝磯?蛻?
467             */
468            public HybsEntry[] getEntrys() {
469                    List<HybsEntry> list = new ArrayList<HybsEntry>();
470    
471                    list.add( new HybsEntry( "JNAME"                , getAttribute( "JNAME"         ) ,"繝ヲ繝シ繧カ繝シ譌・譛ャ隱槫錐遘ー" ) );
472                    list.add( new HybsEntry( "ID"                   , getAttribute( "ID"            ) ,"繝ヲ繝シ繧カ繝シ?ゥ?、" ) );
473                    list.add( new HybsEntry( "IDNO"                 , getAttribute( "IDNO"          ) ,"USER.ID 縺鯉シ稗yte莉・荳翫?譎ゅ?縺ソ蜈磯??第枚蟄励r髯、縺?◆繝ヲ繝シ繧カ繝シ?ゥ?、" ) );
474                    list.add( new HybsEntry( "INFO"                 , getAttribute( "INFO"          ) ,"繝ヲ繝シ繧カ繝シ諠??(繝ヲ繝シ繧カ繝シID?壽律譛ャ隱槫錐遘ー)" ) );
475                    list.add( new HybsEntry( "LANG"                 , getAttribute( "LANG"          ) ,"險?ェ? ) );
476                    list.add( new HybsEntry( "ROLES"                , getAttribute( "ROLES"         ) ,"繝ュ繝シ繝ォ繧コ" ) );
477                    list.add( new HybsEntry( "IPADDRESS"    , getAttribute( "IPADDRESS" ) ,"IP繧「繝峨Ξ繧ケ" ) );
478                    list.add( new HybsEntry( "LOGINTIME"    , getAttribute( "LOGINTIME" ) ,"繝ュ繧ー繧、繝ウ譎ょ綾" ) );
479                    list.add( new HybsEntry( "LASTACCESS"   , getAttribute( "LASTACCESS" ) ,"譛?オゅい繧ッ繧サ繧ケ逕サ髱「ID" ) );
480                    list.add( new HybsEntry( "LASTGAMENNM"  , getAttribute( "LASTGAMENNM") ,"譛?オゅい繧ッ繧サ繧ケ逕サ髱「蜷? ) ); // 4.4.0.1 (2009/08/08)
481                    list.add( new HybsEntry( "YMD"                  , getAttribute( "YMD"           ) ,"縲?シ話yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・莉? ) );
482                    list.add( new HybsEntry( "YMDH"                 , getAttribute( "YMDH"          ) ,"?托シ巴yte 縺ョ莉頑律縺ョ繧キ繧ケ繝?Β譌・譎? ) );
483    
484                    synchronized( attribute ) {
485                            String[] keys = attribute.keySet().toArray( new String[attribute.size()] );
486                            Arrays.sort( keys );
487                            for( int i=0; i<keys.length; i++ ) {
488                                    list.add( new HybsEntry( keys[i],getAttribute( keys[i] ) ) );
489                            }
490                    }
491                    return list.toArray( new HybsEntry[list.size()] );
492            }
493    
494            /**
495             * UserInfo縺ョ螻樊?譁?ュ怜?繧貞炎髯、縺励∪縺吶?
496             *
497             * @param       key     繧ュ繝シ
498             * @param       save    GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺九i諠??繧貞炎髯、縺吶k縺?
499             */
500            public void removeAttribute( final String key, final boolean save ) {
501                    removeAttribute( key, save, false );
502            }
503    
504            /**
505             * UserInfo縺ョ螻樊?譁?ュ怜?繧貞炎髯、縺励∪縺吶?
506             *
507             * @og.rev 3.5.6.0 (2004/06/18) synchronized 繧誕ttribute 縺ォ陦後>縺セ縺吶?
508             * @og.rev 5.3.6.0 (2011/06/01) GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺九i蜑企勁縺吶k縺九?繝輔Λ繧ー繧定ソス蜉?
509             *
510             * @param       key     繧ュ繝シ
511             * @param       save    GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺九i諠??繧貞炎髯、縺吶k縺?
512             * @param       common  GE20(繝ヲ繝シ繧カ繝シ螳壽焚)縺九i諠??蜑企勁譎ゅ?蜈ィ繝ヲ繝シ繧カ繝シ蜈ャ髢区ュ蝣ア繧貞炎髯、縺吶k縺?
513             */
514            private void removeAttribute( final String key, final boolean save, final boolean common ) {
515                    synchronized( attribute ) {
516                            attribute.remove( key ) ;
517                    }
518    
519                    if( save ) {
520                            deletePermanently( key, common );
521                    }
522            }
523    
524            /**
525             * 繝ヲ繝シ繧カ繝シ蛟句挨縺ョ逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励r繧サ繝?ヨ縺励∪縺吶?
526             *
527             * @og.rev 3.8.7.0 (2006/12/15) 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳?
528             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
529             * @og.rev 4.1.1.0 (2008/01/29) 逕サ髱「縺ョ譬シ荳翫£縺ィ縺頑ー励↓蜈・繧翫?繝??菴懈?縺ッ繧ッ繝ゥ繧ケUserAccessTable縺ォ萓晞?
530             * @og.rev 5.2.0.0 (2010/09/01) 繧「繧ッ繧サ繧ケ遖∵ュ「繧「繝峨Ξ繧ケ縺ォ繧医k荳肴ュ」繧「繧ッ繧サ繧ケ髦イ豁「讖溯?霑ス蜉?
531             *
532             * @param       newGuiMap                       逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝?
533             * @param       newForbidAddrSet        繧「繧ッ繧サ繧ケ遖∵ュ「繧「繝峨Ξ繧ケ繧サ繝?ヨ
534             */
535    //      public void setGUIMap( final Map<String,GUIInfo> newGuiMap ) {
536            public void setGUIMap( final Map<String,GUIInfo> newGuiMap, final Set<String> newForbidAddrSet ) {
537                    if( newGuiMap != null ) {
538                            synchronized( guiLock ) {
539                                    guiMap = newGuiMap ;
540                                    forbidAddrSet = newForbidAddrSet;
541                                    favoriteGuiMap = UserAccessTable.makeAccessDB( guiMap,systemId,userID,lang );
542                                    isInfoSet = true;
543                            }
544                    }
545            }
546    
547            /**
548             * 繝ヲ繝シ繧カ繝シ蛟句挨縺ョ逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医r蜿門セ励@縺セ縺吶?
549             * 繧「繧ッ繧サ繧ケ縺ァ縺阪↑縺?判髱「ID縺梧欠螳壹&繧後◆縺ィ縺阪?縲]ull 縺瑚ソ斐j縺セ縺吶?
550             *
551             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
552             * @og.rev 5.2.0.0 (2010/09/01) guiMap 縺ョ null 蛻、螳壹r霑ス蜉?
553             *
554             * @param       gamenId 逕サ髱「ID
555             *
556             * @return      逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝?
557             */
558            public GUIInfo getGUIInfo( final String gamenId ) {
559                    synchronized( guiLock ) {
560                            if( guiMap != null) {                                           // 5.2.0.0 (2010/09/01) guiMap 縺ョ null 蛻、螳?
561                                    return guiMap.get( gamenId );
562                            }
563                            else {
564                                    return null;                                                    // 5.2.0.0 (2010/09/01) 
565                            }
566                    }
567            }
568    
569            /**
570             * 繝ヲ繝シ繧カ繝シ蛟句挨縺ョ逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励r蜿門セ励@縺セ縺吶?
571             *
572             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
573             * @og.rev 5.2.0.0 (2010/09/01) guiMap 縺ョ null 蛻、螳壹r霑ス蜉?
574             *
575             * @return      逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?驟榊?
576             */
577            public GUIInfo[] getGUIInfos() {
578                    synchronized( guiLock ) {
579                            if( guiMap != null) {                                           // 5.2.0.0 (2010/09/01) guiMap 縺ョ null 蛻、螳?
580                                    return guiMap.values().toArray( new GUIInfo[ guiMap.size() ] ) ;
581                            }
582                            else {
583                                    return null;                                                    // 5.2.0.0 (2010/09/01) 
584                            }
585                    }
586            }
587    
588            /**
589             * 繧「繧ッ繧サ繧ケ縺瑚ィア蜿ッ縺輔l縺ヲ縺?k繧「繝峨Ξ繧ケ縺九←縺?°繧偵メ繧ァ繝?け縺励∪縺吶?
590             *
591             * 繝√ぉ繝?け縺ョ譁ケ豕輔?縲√ヶ繝ゥ繝?け繝ェ繧ケ繝域婿蠑上〒縺吶?
592             * 逕サ髱「繝ェ繧ス繝シ繧ケ縺ォ逋サ骭イ縺輔l縺滉ク?ヲァ縺ョ蜀??縺昴?繝ヲ繝シ繧カ繝シ縺瑚ィア蜿ッ縺輔l縺ヲ縺?↑縺?い繝峨Ξ繧ケ縺ォ
593             * 蟇セ縺励※縺ョ縺ソfalse縺瑚ソ斐j縺セ縺吶?
594             * 逕サ髱「繝ェ繧ス繝シ繧ケ縺ォ逋サ骭イ縺輔l縺ヲ縺?↑縺?い繝峨Ξ繧ケ繧??繧「繝峨Ξ繧ケ縺ォURL縺ョ蛹コ蛻?j譁?ュ?/)縺?
595             * 蜷ォ縺セ繧後※縺?k蝣エ蜷医?繝√ぉ繝?け縺輔l縺セ縺帙s縲?true縺瑚ソ斐j縺セ縺?
596             *
597             * @og.rev 5.2.0.0 (2010/09/01) 譁ー隕剰ソス蜉?
598             *
599             * @param addr 繝√ぉ繝?け蟇セ雎。縺ョ繧「繝峨Ξ繧ケ
600             *
601             * @return 繧「繧ッ繧サ繧ケ縺瑚ィア蜿ッ縺輔l縺ヲ縺?k繧「繝峨Ξ繧ケ縺九←縺?°
602             */
603            public boolean isValidAddr( final String addr ) {
604                    synchronized( guiLock ) {
605                            return ( forbidAddrSet == null || !forbidAddrSet.contains( addr ) );
606                    }
607            }
608    
609            /**
610             * 繝ヲ繝シ繧カ繝シ蛟句挨縺ョ縺頑ー励↓蜈・繧顔判髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励r蜿門セ励@縺セ縺吶?
611             *
612             * @og.rev 4.1.1.0 (2008/01/31) 譁ー隕剰ソス蜉?
613             *
614             * @return      縺頑ー励↓蜈・繧顔判髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝?
615             */
616            public Map<String,FavoriteGUIData> getFavoriteMap() {
617                    return favoriteGuiMap;
618            }
619    
620            /**
621             * 逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励′繧サ繝?ヨ貂医∩縺九←縺?°繧貞叙蠕励@縺セ縺吶?
622             *
623             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
624             *
625             * @return 逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励′繧サ繝?ヨ貂医∩縺九←縺?°(true:繧サ繝?ヨ貂医∩ / false:譛ェ繧サ繝?ヨ)
626             */
627            public boolean isGUIInfoSet() {
628                    return isInfoSet ;
629            }
630    
631            /**
632             * 謖?ョ壹?繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ縺ォ蟇セ縺吶k譛?オら噪縺ェ繧「繧ッ繧サ繧ケ譚。莉カ繧貞叙蠕励@縺セ縺吶?
633             * 繧「繧ッ繧サ繧ケ譚。莉カ縺ッ縲∬、?焚縺ゅk繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ縺ョ荳ュ縺ァ縲∵怙螟ァ縺ョ繧「繧ッ繧サ繧ケ譚。莉カ繧堤ョ怜?縺励∪縺吶?
634             * 萓九∴縺ー縲、AA(-r)|BBB(-w)|CCC(mr) 縺ョ?薙▽縺ョ繝ュ繝シ繝ォ/繝「繝シ繝峨′險ュ螳壹&繧後※縺?k蝣エ蜷医?
635             * 繝ヲ繝シ繧カ繝シ縺後?AAA 縺?¢縺ョ蝣エ蜷医?縲?r 縺ァ縺吶′縲、AA|BBB 繧呈戟縺」縺ヲ縺?k蝣エ蜷医?縲?w 縺ォ縺ェ繧翫∪縺吶?
636             * 縺輔i縺ォ縲。BB|CCC 縺ィ謖√▲縺ヲ縺?k蝣エ蜷医?縲?-w:譖ク縺崎セシ縺ソ險ア蜿ッ)縺ィ(mr:繝。繝九Η繝シ縺九i隱ュ蜿冶ィア蜿ッ)縺ョ
637             * 讓ゥ髯舌↓繧医j縲[w:繝。繝九Η繝シ縺九i縺ョ譖ク縺崎セシ縺ソ險ア蜿ッ縺御ク弱∴繧峨l縺セ縺吶?
638             * 繝「繝シ繝画欠螳壹′縺ゅk蝣エ蜷医?縲、ND貍皮ョ励↓縺ェ繧翫∪縺吶?
639             * 萓九∴縺ー縲、AA(-r)|BBB(-w)|CCC(mr) 縺ィ BBB|CCC(-r) 縺ョ蝣エ蜷医?(-r)+(-w)+(mr)*(-r)=-w 縺ォ
640             * 縺ェ繧翫∪縺吶?繝ュ繝シ繝ォ縺ッ縲^R 縺ァ縺吶′縲√Δ繝シ繝峨?縲∝酔荳?Ο繝シ繝ォ縺ァ縺ョAND 縺ォ縺ェ繧翫∪縺吶?
641             * 螳滄圀縺ォ縺ッ縲√Γ繝九Η繝シ陦ィ遉コ縺ョ蜿ッ蜷ヲ縺ッ縲√?繝??繧「繝??邉サ縺ォ繧医¥逕ィ縺?i繧後∪縺吶?縺ァ縲∽ク願ィ倥?繧医≧縺ェ
642             * 險ア蜿ッ縺悟ョ滄圀縺ォ縺ゅk縺九←縺?°縺ッ荳肴?縺ァ縺吶′縲√☆縺ケ縺ヲ縺ョ繝「繝シ繝峨?OR譚。莉カ縺ァ縺ョ邨仙粋縺ォ縺ェ繧翫∪縺吶?
643             *
644             * @og.rev 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
645             *
646             * @param       other   繝ュ繝シ繝ォ繝「繝シ繝?
647             *
648             * @return 繧「繧ッ繧サ繧ケ繝薙ャ繝?
649             */
650            public byte getAccessBitMode( final RoleMode other ) {
651                    return roleMode.getAccessBitMode( other );
652            }
653    
654            /**
655             * 謖?ョ壹?繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ縺ォ蟇セ縺吶k譛?オら噪縺ェ繧「繧ッ繧サ繧ケ譚。莉カ繧貞叙蠕励@縺セ縺吶?
656             *
657             * @og.rev 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
658             *
659             * @param       roles   繝ュ繝シ繝ォ譁?ュ怜?
660             *
661             * @return 繧「繧ッ繧サ繧ケ繝薙ャ繝?
662             */
663    //      public byte getAccessBitMode( final String roles ) {
664    //              return roleMode.getAccessBitMode( RoleMode.newInstance( roles ) );
665    //      }
666    
667            /**
668             * 縺薙?繝ヲ繝シ繧カ繝シ縺ョ讓ゥ髯舌〒縲∵欠螳壹?繝ュ繝シ繝ォ縺瑚ィア蜿ッ縺輔l縺ヲ縺?k縺九←縺?°繧貞愛螳壹@縺セ縺吶?
669             *
670             * @og.rev 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
671             * @og.rev 4.3.0.1 (2008/08/11) 繝ュ繝シ繝ォ繝√ぉ繝?け譎ゅ?蠑墓焚髢馴&縺??譏ッ豁」
672             *
673             * @param       role    繝√ぉ繝?け繧定。後≧繝ュ繝シ繝ォ
674             *
675             * @return      繧「繧ッ繧サ繧ケ縺ァ縺阪k(true)/蜃コ譚・縺ェ縺?false)
676             */
677            public boolean isAccess( final String role ) {
678                    if( role == null || role.length() == 0 ) {
679                            return true;
680                    }
681    
682    //              return ( roleMode.getAccessBitMode( RoleMode.newInstance( roles ) ) > 0 );
683                    return ( roleMode.getAccessBitMode( RoleMode.newInstance( role ) ) > 0 );            // 4.3.0.1 (2008/08/11)
684            }
685    
686            /**
687             * 縺薙?繝ヲ繝シ繧カ繝シ縺ョ讓ゥ髯舌〒縲∵欠螳壹?繝ュ繝シ繝ォ縺瑚ィア蜿ッ縺輔l縺ヲ縺?k縺九←縺?°繧貞愛螳壹@縺セ縺吶?
688             *
689             * @og.rev 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
690             *
691             * @param otherRoles 繝√ぉ繝?け繧定。後≧繝ュ繝シ繝ォ
692             *
693             * @return 繧「繧ッ繧サ繧ケ縺ァ縺阪k(true)/蜃コ譚・縺ェ縺?false)
694             */
695    ////    public boolean isAccess( final String role ) {
696    //      public boolean isAccess( final String otherRoles ) {
697    //              // 繝ヲ繝シ繧カ繝シ縺後Ν繝シ繝医°縲∵欠螳壹?繝ュ繝シ繝ォ縺檎┌縺??蜷医?縲∫┌蛻カ髯舌い繧ッ繧サ繧ケ蜿ッ閭ス
698    ////            if( isRootRole || role == null || role.length() == 0 ) {
699    //              if( otherRoles == null || otherRoles.length() == 0 ) {
700    //                      return true;
701    //              }
702    //
703    //              // 繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ縺檎┌縺??蜷医?縲√い繧ッ繧サ繧ケ荳崎ィア蜿ッ
704    //              if( roles == null || roles.length() == 0 ) {
705    //                      return false;
706    //              }
707    //
708    //              // 4.3.0.0 (2008/07/04) 繝ュ繝シ繝ォ繝「繝シ繝峨?繝ォ繝∝ッセ蠢?
709    //              RoleMode otherRoleMode = RoleMode.newInstance( otherRoles );
710    //              byte bit = roleMode.getAccessBitMode( otherRoleMode );
711    //
712    //              return bit > 0 ;
713    //
714    ////            // 繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ縺檎┌縺??蜷医?縲√い繧ッ繧サ繧ケ荳崎ィア蜿ッ
715    ////            if( userRoles == null || userRoles.length == 0 ) {
716    ////                    return false;
717    ////            }
718    ////
719    ////            String[] otherRoles = StringUtil.csv2Array( role,HybsSystem.GUI_DELIMITER );
720    ////            for( int g=0; g<otherRoles.length; g++ ) {
721    ////                    if( otherRoles[g] != null ) {
722    ////                            for( int u=0; u<userRoles.length; u++ ) {
723    ////                                    if( otherRoles[g].equalsIgnoreCase( userRoles[u] ) ) {
724    ////                                            return true;
725    ////                                    }
726    ////                            }
727    ////                    }
728    ////            }
729    ////            return false;
730    //      }
731    
732            /**
733             * 蛻晄悄蛹?繧ッ繝ェ繧「)縺励∪縺?org.opengion.fukurou.util.Cleanable 縺ョ螳溯」?縲?
734             * 逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励r繧ッ繝ェ繧「縺励?繧サ繝?ヨ貂医∩繝輔Λ繧ー繧呈悴繧サ繝?ヨ縺ォ險ュ螳壹@縺セ縺吶?
735             * 繧キ繧ケ繝?Β繝ェ繧ス繝シ繧ケ縺ョ USE_ACCESS_TOKEI_TABLE 縺?true 縺ョ蝣エ蜷医?縲?
736             * 逕サ髱「繧「繧ッ繧サ繧ケ迥カ豕√r縲√い繧ッ繧サ繧ケ邨ア險医ユ繝シ繝悶Ν(GE15)縺ォ譖ク縺崎セシ縺ソ縺セ縺吶?
737             * 繝ヲ繝シ繧カ繝シ蜊倅ス阪?繝代Λ繝。繝シ繧ソ縺ッ縲√す繧ケ繝?Β繝ェ繧ス繝シ繧ケ縺ョ USER_PARAMETER_SQL 縺ァ
738             * 螳夂セゥ縺輔l縺溷?繧呈、懃エ「縺励※縲∝叙繧願セシ縺ソ縺セ縺吶?
739             *
740             * @og.rev 3.8.7.0 (2006/12/15) 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳?
741             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
742             */
743            public void clear() {
744                    if( useAccessTable && isInfoSet ) { saveGUIAccessInfo(); }
745                    initLoad() ;
746            }
747    
748            /**
749             * 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ繧貞叙蠕励@縺セ縺吶?
750             * 逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?繝槭ャ繝励r繧ッ繝ェ繧「縺励?繧サ繝?ヨ貂医∩繝輔Λ繧ー繧呈悴繧サ繝?ヨ縺ォ險ュ螳壹@縺セ縺吶?
751             * 繝ヲ繝シ繧カ繝シ蜊倅ス阪?繝代Λ繝。繝シ繧ソ縺ッ縲√す繧ケ繝?Β繝ェ繧ス繝シ繧ケ縺ョ USER_PARAMETER_SQL 縺ァ
752             * 螳夂セゥ縺輔l縺溷?繧呈、懃エ「縺励※縲∝叙繧願セシ縺ソ縺セ縺吶?
753             *
754             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
755             */
756            private void initLoad() {
757    
758                    // 繝ヲ繝シ繧カ繝シ繝代Λ繝。繝シ繧ソ縺ョ蜿門セ?
759                    if( QUERY_PARAM != null && QUERY_PARAM.length() > 0 ) {
760                            String[] args = new String[] { systemId,userID };
761                            // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
762                            if( appInfo != null ) {
763                                    // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
764                                    appInfo.setModuleInfo( "UserInfo",null,"initLoad" );
765                            }
766                            String[][] vals = DBUtil.dbExecute( QUERY_PARAM,args,appInfo,DBID );
767    
768                            synchronized( paramMap ) {
769                                    paramMap.clear();
770                                    for( int i=0; i<vals.length; i++ ) {
771                                            String key   = vals[i][0];
772                                            String val   = vals[i][1];
773                                            if( val != null && val.length() == 0 ) { continue; }
774                                            paramMap.put( key,val );
775                                    }
776                            }
777                    }
778            }
779    
780            /**
781             * GE20縺九iDB縺ォ菫晏ュ倥&繧後◆UserInfo縺ョ繝代Λ繝。繝シ繧ソ繝シ繧貞叙蠕励@縺セ縺吶?
782             *
783             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
784             */
785            private void dbLoad() {
786                    // GE20 繝ヲ繝シ繧カ繝シ繝ュ繝シ繝ォ諠??豌ク邯壼喧繝??繝悶Ν隱ュ縺ソ霎シ縺ソ
787                    String[] argsGe20 = new String[] { systemId,userID,roles };
788                    String[][] valsGe20 = DBUtil.dbExecute( QUERY_GE20,argsGe20,appInfo,DBID );
789    
790                    for( int i=0; i<valsGe20.length; i++ ) {
791                            // 4.3.4.0 (2008/12/01) GE20縺九i隱ュ縺ソ霎シ繧薙〒縺?k縺ョ縺ァ縲∝ス鍋┯菫晏ュ倥@縺ェ縺?
792                            setAttribute( valsGe20[i][0], valsGe20[i][1], false );
793                    }
794            }
795    
796            /**
797             * 螻樊?荳?ヲァ縺九iEDIT險ュ螳壽ュ蝣ア繧偵が繝悶ず繧ァ繧ッ繝亥喧縺励?逕サ髱「ID豈弱?繝槭ャ繝励↓逋サ骭イ縺励∪縺吶?
798             *
799             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
800             */
801            private void makeEditConfigMap() {
802                    String[] keys = attribute.keySet().toArray( new String[0] );
803                    String[][] keySet = DBEditConfig.getKeySet( keys );
804                    if( keySet != null ) {
805                            for( String[] set : keySet ) {
806                                    String guikey = set[0];
807                                    String editName = set[1];
808                                    String[] editKeys = DBEditConfig.getEditKeys( guikey, editName );
809                                    String[] editVals = new String[editKeys.length];
810                                    for( int i=0; i<editKeys.length; i++ ) {
811                                            editVals[i] = attribute.get( editKeys[i] );
812                                    }
813                                    editMgr.addEditConfig( guikey, editName, new DBEditConfig( editVals ) );
814                            }
815                    }
816            }
817    
818            /**
819             * 蠑墓焚縺ョ逕サ髱「縺ァ逋サ骭イ縺輔l縺ヲ縺?k繧ィ繝?ぅ繝?ヨ險ュ螳壹r驟榊?縺ァ霑斐@縺セ縺吶?
820             * 霑斐&繧後k驟榊?縺ッ縲√お繝?ぅ繝?ヨ蜷埼?縺ォ繧ス繝シ繝医&繧後◆迥カ諷九〒霑斐&繧後∪縺吶?
821             *
822             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
823             *
824             * @param guikey 逕サ髱「ID
825             *
826             * @return 繧ィ繝?ぅ繝?ヨ險ュ螳?驟榊?)
827             */
828            public DBEditConfig[] getEditConfigs( final String guikey ) {
829                    return editMgr.getEditConfigs( guikey );
830            }
831    
832            /**
833             * 逕サ髱「ID縲√お繝?ぅ繝?ヨ蜷阪h繧翫お繝?ぅ繝?ヨ險ュ螳壹が繝悶ず繧ァ繧ッ繝医r霑斐@縺セ縺吶?
834             * 縺セ縺溘?縺薙%縺ァ謖?ョ壹&繧後◆繧ィ繝?ぅ繝?ヨ蜷阪′縺薙?逕サ髱「縺ァ縺ョ驕ク謚樊ク医∩繧ィ繝?ぅ繝?ヨ縺ィ縺励※逋サ骭イ縺輔l縺セ縺吶?
835             *
836             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
837             *
838             * @param guikey 逕サ髱「ID
839             * @param editName 繧ィ繝?ぅ繝?ヨ蜷?
840             *
841             * @return 繧ィ繝?ぅ繝?ヨ驟榊?
842             */
843            public DBEditConfig getEditConfig( final String guikey, final String editName ) {
844                    if( editName != null ) {
845                            String selEditName = getSelectedEdit( guikey );
846                            if( !editName.equals( selEditName ) ) {
847                                    setSelectedEdit( guikey, editName );
848                            }
849                    }
850                    else {
851                            setSelectedEdit( guikey, null );
852                    }
853                    return editMgr.getEditConfig( guikey, editName );
854            }
855    
856            /**
857             * 謖?ョ壹?逕サ髱「ID縲√お繝?ぅ繝?ヨ蜷阪〒繧ィ繝?ぅ繝?ヨ險ュ螳壹が繝悶ず繧ァ繧ッ繝医r霑ス蜉?@縺セ縺吶?
858             * 譌「縺ォ逋サ骭イ縺輔l縺ヲ縺?k蝣エ蜷医?縲∵里蟄倥?繧ィ繝?ぅ繝?ヨ諠??繧呈峩譁ー縺励∪縺吶?
859             *
860             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
861             *
862             * @param guikey 逕サ髱「ID
863             * @param editName 繧ィ繝?ぅ繝?ヨ蜷?
864             * @param config 繧ィ繝?ぅ繝?ヨ險ュ螳壹が繝悶ず繧ァ繧ッ繝?
865             */
866            public void addEditConfig( final String guikey, final String editName, final DBEditConfig config ) {
867                    if( config == null ) { return; }
868    
869                    boolean isCommon = config.isCommon();
870                    String[] editKeys = DBEditConfig.getEditKeys( guikey, editName );
871                    String[] editVals = config.getEditVals();
872    
873                    // 蛟句挨險ュ螳壹?蝣エ蜷医?蜷後§繧ュ繝シ縺ァ蜈ア騾壽ュ蝣ア縺悟ュ伜惠縺励※縺?◆蝣エ蜷医?繧ィ繝ゥ繝シ縺ィ縺吶k縲?
874                    if( !isCommon && isExistValue( editKeys[0], "*", "*" ) ) {
875                            String msg = "蜷後§邱ィ髮?錐縺ァ蜈ア騾夊ィュ螳壹&繧後※縺?k縺溘a蛟句挨邱ィ髮?r菫晏ュ倥〒縺阪∪縺帙s縲?;
876                            throw new HybsSystemException( msg );
877                    }
878                    // 蜈ア騾夊ィュ螳壹?蝣エ蜷医?蜷後§繧ュ繝シ縺ァ蛟句挨諠??縺悟ュ伜惠縺励※縺?◆蝣エ蜷医?繧ィ繝ゥ繝シ縺ィ縺吶k縲?
879                    if( isCommon && isExistValue( editKeys[0], userID, "*" ) ) {
880                            String msg = "蜷後§邱ィ髮?錐縺ァ蛟句挨險ュ螳壹&繧後※縺?k縺溘a蜈ア騾夂キィ髮?r菫晏ュ倥〒縺阪∪縺帙s縲?;
881                            throw new HybsSystemException( msg );
882                    }
883    
884                    editMgr.addEditConfig( guikey, editName, config );
885                    for( int i=0; i<editKeys.length; i++ ) {
886                            if( editVals[i] != null && editVals[i].length() > 0 ) {
887                                    setAttribute( editKeys[i], editVals[i], true, isCommon );
888                            }
889                            else {
890                                    removeAttribute( editKeys[i], true, isCommon );
891                            }
892                    }
893            }
894    
895            /**
896             * 謖?ョ壹?逕サ髱「ID縲√お繝?ぅ繝?ヨ蜷阪?繧ィ繝?ぅ繝?ヨ險ュ螳壹r蜑企勁縺励∪縺吶?
897             *
898             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
899             *
900             * @param guikey 逕サ髱「ID
901             * @param editName 繧ィ繝?ぅ繝?ヨ蜷?
902             */
903            public void deleteEditConfig( final String guikey, final String editName ) {
904                    DBEditConfig config = editMgr.deleteEditConfig( guikey, editName );
905                    if( config != null ) {
906                            boolean isCommon = config.isCommon();
907                            String[] editKeys = DBEditConfig.getEditKeys( guikey, editName );
908                            // 繧ィ繝?ぅ繝?ヨ險ュ螳壹′蟄伜惠縺励↑縺??蜷医お繝ゥ繝シ縲?
909                            if( !isExistValue( editKeys[0], ( isCommon ? "*" : userID ), "*" ) ) {
910                                    String msg = "繧ィ繝?ぅ繝?ヨ險ュ螳壹′蟄伜惠縺励∪縺帙s縲?;
911                                    throw new HybsSystemException( msg );
912                            }
913                            for( int i=0; i<editKeys.length; i++ ) {
914                                    removeAttribute( editKeys[i], true, isCommon );
915                            }
916                    }
917    
918                    if( editName != null ) {
919                            String selEditName = getSelectedEdit( guikey );
920                            if( !editName.equals( selEditName ) ) {
921                                    setSelectedEdit( guikey, null );
922                            }
923                    }
924            }
925    
926            /**
927             * 謖?ョ壹?逕サ髱「ID縺ォ蟇セ縺励※驕ク謚樊ク医∩縺ョ繧ィ繝?ぅ繝?ヨ蜷阪r逋サ骭イ縺励∪縺吶?
928             *
929             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
930             *
931             * @param guikey 逕サ髱「ID
932             * @param editName 繧ィ繝?ぅ繝?ヨ蜷?
933             */
934            public void setSelectedEdit( final String guikey, final String editName ) {
935                    setAttribute( "EDIT_NAME_SELECTED_" + guikey, editName, true );
936            }
937    
938            /**
939             * 謖?ョ壹?逕サ髱「ID縺ォ蟇セ縺励※驕ク謚樊ク医∩縺ョ繧ィ繝?ぅ繝?ヨ蜷阪r霑斐@縺セ縺吶?
940             *
941             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
942             *
943             * @param guikey 逕サ髱「ID
944             *
945             * @return 驕ク謚樊ク医∩繧ィ繝?ぅ繝?ヨ蜷?
946             */
947            public String getSelectedEdit( final String guikey ) {
948                    return getAttribute( "EDIT_NAME_SELECTED_" + guikey );
949            }
950    
951            /**
952             * 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r霑斐@縺セ縺吶?
953             *
954             * @og.rev 3.8.7.0 (2006/12/15) 譁ー隕剰ソス蜉?
955             *
956             * @param       gamenId 螳溯。御クュ縺ョ逕サ髱「ID
957             * @param       prgId   螳溯。御クュ縺ョ繝励Ο繧ー繝ゥ繝?D
958             *
959             * @return      ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝?
960             */
961            public ApplicationInfo getApplicationInfo( final String gamenId,final String prgId ) {
962                    if( appInfo != null ) {
963                            // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
964                            appInfo.setModuleInfo( gamenId,null,prgId );
965                    }
966                    return appInfo;
967            }
968    
969            /**
970             * 閾ェ辟カ豈碑シ?Γ繧ス繝?ラ
971             * 繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ Comparable 縺ョ 螳溯」?〒縺吶?
972             * 繝ヲ繝シ繧カ繝シ縺ョ鬆?コ上?縲√Θ繝シ繧カ繝シID 縺昴?繧ゅ?縺ョ鬆?コ上〒縺ゅi繧上&繧後∪縺吶?
973             * 蜷御ク?Θ繝シ繧カ繝シ縺ョ蝣エ蜷医??後Ο繧ー繧、繝ウ繧ソ繧、繝??鬆?分縺ォ縺ェ繧翫∪縺吶?
974             *
975             * @og.rev 5.1.8.0 (2010/07/01) UserSummary 縺ョ Comparable 繧貞梛險ュ螳?
976             *
977             * @param       object  豈碑シ?ッセ雎。縺ョObject
978             *
979             * @return      縺薙?繧ェ繝悶ず繧ァ繧ッ繝医′謖?ョ壹&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医h繧雁ー上&縺??蜷医?雋??謨エ謨ー縲∫ュ峨@縺??蜷医?繧シ繝ュ縲∝、ァ縺阪>蝣エ蜷医?豁」縺ョ謨エ謨ー
980             */
981            @Override
982            public int compareTo( final UserSummary object ) {
983    //              if( object instanceof UserInfo ) {
984    //                      int test1 = userID.compareTo( ((UserInfo)object).getUserID() );
985                            int test1 = userID.compareTo( object.getUserID() );
986                            if( test1 == 0 ) {
987    //                              test1 = (int)( loginTime - ((UserInfo)object).getLoginTime() ) ;
988                                    test1 = (int)( loginTime - object.getLoginTime() ) ;
989                            }
990                            return test1;
991    //              }
992    //              throw new ClassCastException();
993            }
994    
995            /**
996             * 縺薙?繧ェ繝悶ず繧ァ繧ッ繝医→莉悶?繧ェ繝悶ず繧ァ繧ッ繝医′遲峨@縺?°縺ゥ縺?°繧堤、コ縺励∪縺吶?
997             * 繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ Comparable 縺ョ 螳溯」?↓髢「騾」縺励※縲∝?螳夂セゥ縺励※縺?∪縺吶?
998             * 繝ヲ繝シ繧カ繝シ縺ッ縲√Θ繝シ繧カ繝シID縺檎ュ峨@縺上?縺九▽ 繝ュ繧ー繧、繝ウ譎ょ綾縺悟酔荳??蝣エ蜷医↓縲?
999             * 遲峨@縺?→蛻、譁ュ縺輔l縺セ縺吶?
1000             *
1001             * @param   object 豈碑シ?ッセ雎。縺ョ蜿ら?繧ェ繝悶ず繧ァ繧ッ繝?
1002             *
1003             * @return      蠑墓焚縺ォ謖?ョ壹&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医→縺薙?繧ェ繝悶ず繧ァ繧ッ繝医′遲峨@縺??蜷医? true縲√◎縺?〒縺ェ縺??蜷医? false
1004             */
1005            @Override
1006            public boolean equals( final Object object ) {
1007                    if( object instanceof UserInfo ) {
1008                            return ( userID.equals( ((UserInfo)object).getUserID()  )  &&
1009                                             loginTime == ( ((UserInfo)object).getLoginTime() )   );
1010                    }
1011                    return false ;
1012            }
1013    
1014            /**
1015             * 繧ェ繝悶ず繧ァ繧ッ繝医?繝上ャ繧キ繝・繧ウ繝シ繝牙?繧定ソ斐@縺セ縺吶?
1016             * 縺薙?繝。繧ス繝?ラ縺ッ縲)ava.util.Hashtable 縺ォ繧医▲縺ヲ謠蝉セ帙&繧後k繧医≧縺ェ
1017             * 繝上ャ繧キ繝・繝??繝悶Ν縺ァ菴ソ逕ィ縺吶k縺溘a縺ォ逕ィ諢上&繧後※縺?∪縺吶?
1018             * equals( Object ) 繝。繧ス繝?ラ繧偵が繝シ繝舌?繝ゥ繧、繝医@縺溷?蜷医?縲”ashCode() 繝。繧ス繝?ラ繧?
1019             * 蠢?★ 險倩ソー縺吶k蠢?ヲ√′縺ゅj縺セ縺吶?
1020             * 縺薙%縺ァ縺ッ縲√Ο繧ー繧、繝ウ譎ょ綾(long 蛟、)縺ョ荳贋ス?32 繝薙ャ繝医→荳倶ス?32 繝薙ャ繝医?謗剃サ也噪隲也炊蜥?
1021             * 繧呈アゅa縺ヲ縺?∪縺吶?
1022             * (int)(this.longValue()^(this.longValue()&gt;&gt;&gt;32))
1023             *
1024             * 窶サ hashCode 縺ョ 蜷御ク?が繝悶ず繧ァ繧ッ繝医↓縺ッ蜷御ク?ワ繝?す繝・繧ウ繝シ繝峨→縺?≧隕丞援縺ィ
1025             *    逋コ逕滄?蠎ヲ,繝ゥ繝ウ繝?Β諤ァ繧定?諷ョ縺吶l縺ー縲√Ο繧ー繧、繝ウ譎ょ綾縺昴?繧ゅ?(long)縺ョ
1026             *    繝上ャ繧キ繝・繧ウ繝シ繝峨〒繧る°逕ィ荳翫?蜈ィ縺丞撫鬘後↑縺?→閠?∴繧峨l縺セ縺吶?
1027             *
1028             * @og.rev 3.5.6.0 (2004/06/18) 譁ー隕剰ソス蜉?
1029             *
1030             * @return  縺薙?繧ェ繝悶ず繧ァ繧ッ繝医?繝上ャ繧キ繝・繧ウ繝シ繝牙?
1031             *
1032             */
1033            @Override
1034            public int hashCode() {
1035                    return hashcode ;
1036            }
1037    
1038            /**
1039             * 繧ェ繝悶ず繧ァ繧ッ繝医?隴伜挨蟄舌→縺励※?瑚ゥウ邏ー縺ェ繝ヲ繝シ繧カ繝シ諠??繧定ソ斐@縺セ縺吶?
1040             *
1041             * @return  隧ウ邏ー縺ェ繝ヲ繝シ繧カ繝シ諠??
1042             */
1043            @Override
1044            public String toString() {
1045                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1046                    rtn.append( "userID   :" ).append( userID        ).append( HybsSystem.CR );
1047                    rtn.append( "lang     :" ).append( lang          ).append( HybsSystem.CR );
1048                    rtn.append( "jname    :" ).append( jname         ).append( HybsSystem.CR );
1049                    rtn.append( "roles    :" ).append( roles         ).append( HybsSystem.CR );
1050                    rtn.append( "IPAddress:" ).append( ipAddress ).append( HybsSystem.CR );
1051                    rtn.append( "loginTime:" ).append( loginTime ).append( HybsSystem.CR );
1052                    return rtn.toString();
1053            }
1054    
1055            // saveGUIAccessInfo() 繝。繧ス繝?ラ縺ァ縺励°菴ソ逕ィ縺励↑縺??螳壽焚螳」險?
1056            private static final int C_SYSTEM_ID            = 0 ;
1057            private static final int C_USERID                       = 1 ;
1058            private static final int C_USERADRS                     = 2 ;
1059            private static final int C_HOSTADRS                     = 3 ;
1060            private static final int C_GUIKEY                       = 4 ;
1061            private static final int C_DYLOGIN                      = 5 ;
1062            private static final int C_DYLOGOUT                     = 6 ;
1063            private static final int C_USED_TIME            = 7 ;
1064            private static final int C_CNT_ACCESS           = 8 ;
1065            private static final int C_CNT_ERROR            = 9 ;
1066            private static final int C_CNT_READ                     = 10 ;
1067            private static final int C_CNT_WRITE            = 11 ;
1068            private static final int C_TM_TOTAL_QUERY       = 12 ;
1069            private static final int C_TM_MAX_QUERY         = 13 ;
1070            private static final int C_MAX_QUERY            = 14 ;
1071            private static final int C_FGJ                          = 15 ;
1072            private static final int C_DYSET                        = 16;
1073            private static final int C_DYUPD                        = 17;
1074            private static final int C_USRSET                       = 18;
1075            private static final int C_USRUPD                       = 19;
1076            private static final int C_PGUPD                        = 20;
1077    
1078            /**
1079             * 繝ヲ繝シ繧カ繝シ蛟句挨縺ョ逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝医?譏守エー諠??繧偵い繧ッ繧サ繧ケ邨ア險医ユ繝シ繝悶Ν(GE15)縺ォ逋サ骭イ縺励∪縺吶?
1080             *
1081             * @og.rev 3.8.7.0 (2006/12/15) 繧「繧ッ繧サ繧ケ繝ュ繧ー蜿門セ励?轤コ,ApplicationInfo繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳?
1082             * @og.rev 4.0.0.0 (2005/01/31) 譁ー隕剰ソス蜉?
1083             * @og.rev 4.0.0.0 (2007/10/05) SQLServer 莠呈鋤諤ァ縺ョ轤コ縲ヾUBSTRB 繧貞サ?ュ「縺励∪縺吶?
1084             * @og.rev 4.1.1.0 (2008/01/30) 繝ヲ繝シ繧カ繝シ繧「繧ッ繧サ繧ケ逕サ髱「邂。逅?ユ繝シ繝悶Ν縺ォ逕サ髱「縺ョ譛?オゅい繧ッ繧サ繧ケ譎る俣繧呈峩譁ー
1085             * @og.rev 5.0.2.0 (2009/11/01) 菴懈?繝サ譖エ譁ー譌・莉倥′繧サ繝?ヨ縺輔l縺ヲ縺?↑縺?ヰ繧ー繧剃ソョ豁」
1086             * @og.rev 5.2.3.0 (2010/12/01) 逕サ髱「繧「繧ッ繧サ繧ケ縺ョ螻・豁エ(鬆?分)繧堤ョ。逅?☆繧区ゥ溯?繧定ソス蜉?
1087             * @og.rev 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ遲?
1088             */
1089            private void saveGUIAccessInfo() {
1090            //      if( !useAccessTable || !isInfoSet ) { return ; }
1091    
1092                    final GUIInfo[] infos ;
1093                    synchronized( guiLock ) {
1094                            infos = getGUIInfos() ;
1095                            guiMap = null;
1096                            isInfoSet = false;
1097                    }
1098    
1099                    long crntTime = System.currentTimeMillis();
1100    
1101                    String[] names = new String[] { "SYSTEM_ID","USERID","USERADRS","HOSTADRS","GUIKEY","DYLOGIN","DYLOGOUT",
1102                                                                                    "USED_TIME","CNT_ACCESS","CNT_ERROR","CNT_READ","CNT_WRITE",
1103    //                                                                              "TM_TOTAL_QUERY","TM_MAX_QUERY","MAX_QUERY","FGJ" };
1104                                                                                    "TM_TOTAL_QUERY","TM_MAX_QUERY","MAX_QUERY","FGJ","DYSET","DYUPD","USRSET","USRUPD","PGUPD" };
1105                    String[] values = new String[names.length];
1106    
1107                    values[C_SYSTEM_ID              ] = HybsSystem.sys( "SYSTEM_ID" );
1108                    values[C_USERID                 ] = userID;
1109                    values[C_USERADRS               ] = ipAddress;
1110                    values[C_HOSTADRS               ] = HybsSystem.sys( "HOST_ADRS" );
1111                    values[C_GUIKEY                 ] = "";
1112                    values[C_DYLOGIN                ] = HybsSystem.getDate( loginTime,"yyyyMMddHHmmss" );
1113                    values[C_DYLOGOUT               ] = HybsSystem.getDate( "yyyyMMddHHmmss" );
1114                    values[C_USED_TIME              ] = String.valueOf( Math.round( (crntTime-usedTime) / 1000.0d ) );      // 遘偵↓螟画鋤
1115                    values[C_CNT_ACCESS             ] = "0";
1116                    values[C_CNT_ERROR              ] = "0";
1117                    values[C_CNT_READ               ] = "0";
1118                    values[C_CNT_WRITE              ] = "0";
1119                    values[C_TM_TOTAL_QUERY ] = "0";
1120                    values[C_TM_MAX_QUERY   ] = "0";
1121                    values[C_MAX_QUERY              ] = "";
1122                    values[C_FGJ                    ] = "1";
1123                    values[C_DYSET                  ] = HybsSystem.getDate( "yyyyMMddHHmmss" );
1124                    values[C_DYUPD                  ] = HybsSystem.getDate( "yyyyMMddHHmmss" );
1125                    values[C_USRSET                 ] = "userInfo";
1126                    values[C_USRUPD                 ] = "userInfo";
1127                    values[C_PGUPD                  ] = "userInfo";
1128    
1129                    usedTime = crntTime ;
1130    
1131                    DBSimpleTable dbTable = new DBSimpleTable( names );
1132                    // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
1133                    getApplicationInfo( "UserInfo","saveGUI" );
1134                    dbTable.setApplicationInfo( appInfo );  // 3.8.7.0 (2006/12/15)
1135                    dbTable.setConnectionID( DBID );                // 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ蠢?
1136                    dbTable.setTable( "GE15" );
1137                    // 4.0.0.0 (2007/10/05) SQLServer 莠呈鋤諤ァ縺ョ轤コ縲,LOB蛹悶@縺セ縺吶?
1138            //      dbTable.addConstrain( names[C_MAX_QUERY],"SUBSTRB(?,1,4000)" );
1139    
1140                    boolean okFlag = false;
1141                    try {
1142                            dbTable.startInsert();
1143    
1144                            // UserInfo 縺ォ髢「縺吶k諠??縺ョ逋サ骭イ
1145                            dbTable.execute( values );
1146    
1147                            // GUIInfo 縺ォ髢「縺吶k諠??縺ョ逋サ骭イ
1148                            if( infos != null ) {
1149                                    values[C_USED_TIME] = "0";      // USED_TIME 繧偵け繝ェ繧「縺励※縺翫″縺セ縺吶?
1150                                    String logoutTime = HybsSystem.getDate( "yyyyMMddHHmmss" );
1151                                    for( int i=0; i<infos.length; i++ ) {
1152                                            GUIAccessCount access = infos[i].getGUIAccessCount();
1153                                            int cnt = access.getAccessCount();
1154                                            if( cnt > 0 ) {
1155                                                    values[C_GUIKEY                 ] = access.getKey();
1156                                                    values[C_CNT_ACCESS             ] = String.valueOf( cnt );
1157                                                    values[C_CNT_ERROR              ] = String.valueOf( access.getErrorCount() );
1158                                                    values[C_CNT_READ               ] = String.valueOf( access.getReadCount() );
1159                                                    values[C_CNT_WRITE              ] = String.valueOf( access.getWriteCount() );
1160                                                    values[C_TM_TOTAL_QUERY ] = String.valueOf( access.getQueryTime() );
1161                                                    values[C_TM_MAX_QUERY   ] = String.valueOf( access.getMaxQueryTime() );
1162                                                    values[C_MAX_QUERY              ] = access.getMaxQuery();
1163            //                                      dbTable.addValues( values );
1164                                                    dbTable.execute( values );
1165                                                    // 4.1.1.0(2008/01/28)逕サ髱「繧「繧ッ繧サ繧ケ譎る俣縺ョ譖エ譁ー
1166                                                    // 5.2.3.0 (2010/12/01) 逕サ髱「繧「繧ッ繧サ繧ケ縺ョ螻・豁エ(鬆?分)繧堤ョ。逅?☆繧区ゥ溯?繧定ソス蜉?
1167                                                    String keys = infos[i].getNextGuiKeys();
1168    //                                              UserAccessTable.updateLastAccessTime( systemId,userID,access.getKey(),logoutTime );
1169                                                    UserAccessTable.updateLastAccessTime( systemId,userID,access.getKey(),logoutTime,keys );
1170                                            }
1171                                    }
1172                            }
1173                            okFlag = true;
1174                    }
1175                    catch (SQLException ex) {
1176                            LogWriter.log( "  userID=[" + userID + "] 繧「繧ッ繧サ繧ケ邨ア險医ユ繝シ繝悶Ν逋サ骭イ譎ゅ↓繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆" );
1177                            LogWriter.log( ex.getMessage() );
1178                    }
1179                    finally {
1180                            int cnt = dbTable.close( okFlag );
1181                            System.out.println();
1182                            System.out.println( "  userID=[" + userID + "] 繧「繧ッ繧サ繧ケ邨ア險医ユ繝シ繝悶Ν縺ォ縲ー" + cnt + "]莉カ縲∬ソス蜉?@縺セ縺励◆縲? );
1183                    }
1184            }
1185    
1186            // 豌ク邯壼喧諠??險ュ螳壹〒縺励°菴ソ逕ィ縺励↑縺?、画焚縺ョ螳」險?
1187            private static final int C_GE20_SYSTEM_ID       = 0;
1188            private static final int C_GE20_USERID          = 1;
1189            private static final int C_GE20_ROLES           = 2;
1190            private static final int C_GE20_PARAM_ID        = 3;
1191            private static final int C_GE20_PARAM           = 4;
1192            private static final int C_GE20_KBSET           = 5;
1193            private static final int C_GE20_FGJ                     = 6;
1194            private static final int C_GE20_DYSET           = 7;
1195            private static final int C_GE20_DYUPD           = 8;
1196            private static final int C_GE20_USRSET          = 9;
1197            private static final int C_GE20_USRUPD          = 10;
1198            private static final int C_GE20_PGUPD           = 11;
1199    
1200            private static final int GE20_KBSET_READONLY    = 1;
1201            private static final int GE20_KBSET_WRITABLE    = 2;
1202    
1203            // 繝ュ繝シ繝ォ縺ッ蜈ィ縺ヲ*縺ァ逋サ骭イ縺吶k縲ゅい繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺九i蜍慕噪縺ォ逋サ骭イ縺輔l繧句?繧偵?
1204            // 繝ュ繝シ繝ォ蜊倅ス崎ィュ螳壹@縺ヲ繧ゅ?繝ュ繝シ繝ォ螟画峩譎ゅ↓謨エ蜷域?縺悟粋繧上↑縺?庄閭ス諤ァ螟ァ縺ェ縺ョ縺ァ縲?
1205            // UserInfo縺ァ險ュ螳壹☆繧句?蜷医?縲∝?縺ヲ縺ョ繝ュ繝シ繝ォ縺ァ譛牙柑縺ィ縺吶k縲?
1206            private static final String GE20_ROLES = "*";
1207    
1208            /**
1209             * userInfo縺ォ繧サ繝?ヨ縺輔l縺溷?/繧ュ繝シ繧奪B縺ォ逋サ骭イ縺励∪縺吶?
1210             * 譌「縺ォ繧ュ繝シ縺悟ュ伜惠縺励※縺?k蝣エ蜷医?縲∵里蟄倥ョ繝シ繧ソ繧呈峩譁ー縺励?縺ェ縺代l縺ー霑ス蜉?@縺セ縺吶?
1211             *
1212             * @og.rev 5.3.6.0 (2011/06/01) 蜈ィ繝ヲ繝シ繧カ繝シ諠??縺ィ縺励※菫晏ュ倥〒縺阪k繧医≧縺ォ蟇セ蠢?
1213             * @og.rev 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ遲?
1214             *
1215             * @param key 繧ュ繝シ
1216             * @param value 蛟、
1217             * @param isCommon 繝ヲ繝シ繧カ繝シID='*'(蜈ィ繝ヲ繝シ繧カ繝シ蜈ャ髢?縺ィ縺励※逋サ骭イ縺吶k縺九←縺?°
1218             */
1219    //      private void savePermanently( final String key, final String value ) {
1220            private void savePermanently( final String key, final String value, final boolean isCommon ) {
1221    
1222                    // 霑ス蜉?、画峩譎ゅ↓蜈ア騾壹〒繧サ繝?ヨ縺輔l繧句?繧定ィュ螳?
1223                    String[] names = new String[] { "SYSTEM_ID","USERID","ROLES","PARAM_ID","PARAM","KBSET"
1224                                                                                    ,"FGJ","DYSET","DYUPD","USRSET","USRUPD","PGUPD" };
1225                    String[] values = new String[names.length];
1226                    values[C_GE20_SYSTEM_ID ] = HybsSystem.sys( "SYSTEM_ID" );
1227    //              values[C_GE20_USERID    ] = userID;
1228                    values[C_GE20_USERID    ] = ( isCommon ? "*" : userID );
1229                    values[C_GE20_ROLES             ] = GE20_ROLES;
1230                    values[C_GE20_PARAM_ID  ] = key;
1231                    values[C_GE20_PARAM             ] = value;
1232                    values[C_GE20_KBSET             ] = String.valueOf( GE20_KBSET_WRITABLE );
1233                    values[C_GE20_FGJ               ] = "1";
1234                    values[C_GE20_DYSET             ] = HybsSystem.getDate( "yyyyMMddHHmmss" );
1235                    values[C_GE20_DYUPD             ] = HybsSystem.getDate( "yyyyMMddHHmmss" );
1236                    values[C_GE20_USRSET    ] = userID;
1237                    values[C_GE20_USRUPD    ] = userID;
1238                    values[C_GE20_PGUPD     ] = "UserInfo";
1239    
1240                    // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
1241                    getApplicationInfo( "UserInfo","registValueToDB" );
1242    
1243                    DBSimpleTable dbTable = new DBSimpleTable( names );
1244                    dbTable.setApplicationInfo( appInfo );  // 3.8.7.0 (2006/12/15)
1245                    dbTable.setConnectionID( DBID );                // 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ蠢?
1246                    dbTable.setTable( "GE20" );
1247    
1248                    boolean okFlag = false;
1249                    try {
1250    //                      if( isExistValue( key, GE20_ROLES ) ) {
1251                            if( isExistValue( key, ( isCommon ? "*" : userID ), GE20_ROLES ) ) {
1252                                    String where = "SYSTEM_ID = [SYSTEM_ID] and USERID = [USERID] and ROLES = [ROLES] and PARAM_ID = [PARAM_ID] and FGJ='1'";
1253                                    dbTable.setWhere( where );
1254                                    dbTable.startUpdate();
1255                            }
1256                            else {
1257                                    dbTable.startInsert();
1258                            }
1259                            dbTable.execute( values );
1260                            okFlag = true;
1261                    }
1262                    catch ( SQLException ex ) {
1263                            throw new HybsSystemException( "繝ヲ繝シ繧カ繝シ豌ク邯壼喧諠??險ュ螳壽凾縺ォ繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆", ex );
1264                    }
1265                    finally {
1266                            dbTable.close( okFlag );
1267                    }
1268            }
1269    
1270            /**
1271             * userInfo縺九i蜑企勁縺輔l縺溷?/繧ュ繝シ繧奪B縺九i繧ょ炎髯、縺励∪縺吶?
1272             *
1273             * @og.rev 5.3.6.0 (2011/06/01) 譁ー隕剰ソス蜉?
1274             * @og.rev 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ遲?
1275             *
1276             * @param key 繧ュ繝シ
1277             * @param isCommon 繝ヲ繝シ繧カ繝シID='*'(蜈ィ繝ヲ繝シ繧カ繝シ蜈ャ髢?縺九i蜑企勁縺吶k縺九←縺?°
1278             */
1279            private void deletePermanently( final String key, final boolean isCommon ) {
1280    
1281                    // 霑ス蜉?、画峩譎ゅ↓蜈ア騾壹〒繧サ繝?ヨ縺輔l繧句?繧定ィュ螳?
1282                    String[] names = new String[] { "SYSTEM_ID","USERID","ROLES","PARAM_ID" };
1283                    String[] values = new String[names.length];
1284                    values[C_GE20_SYSTEM_ID ] = HybsSystem.sys( "SYSTEM_ID" );
1285                    values[C_GE20_USERID    ] = ( isCommon ? "*" : userID );
1286                    values[C_GE20_ROLES             ] = GE20_ROLES;
1287                    values[C_GE20_PARAM_ID  ] = key;
1288    
1289                    // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
1290                    getApplicationInfo( "UserInfo","deleteValueFromDB" );
1291    
1292                    DBSimpleTable dbTable = new DBSimpleTable( names );
1293                    dbTable.setApplicationInfo( appInfo );
1294                    dbTable.setConnectionID( DBID );                // 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ蠢?
1295                    dbTable.setTable( "GE20" );
1296    
1297                    boolean okFlag = false;
1298                    try {
1299                            String where = "SYSTEM_ID = [SYSTEM_ID] and USERID = [USERID] and ROLES = [ROLES] and PARAM_ID = [PARAM_ID] and FGJ='1'";
1300                            dbTable.setWhere( where );
1301                            dbTable.startDelete();
1302                            dbTable.execute( values );
1303                            okFlag = true;
1304                    }
1305                    catch ( SQLException ex ) {
1306                            throw new HybsSystemException( "繝ヲ繝シ繧カ繝シ豌ク邯壼喧諠??蜑企勁譎ゅ↓繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆", ex );
1307                    }
1308                    finally {
1309                            dbTable.close( okFlag );
1310                    }
1311            }
1312    
1313            /**
1314             * 繝ヲ繝シ繧カ繝シ螳壽焚(GE20)縺ォ隧イ蠖薙?繧ュ繝シ縺悟ュ伜惠縺吶k縺九r繝√ぉ繝?け縺励∪縺吶?
1315             *
1316             * @og.rev 5.3.6.0 (2011/06/01) 蜈ィ繝ヲ繝シ繧カ繝シ諠??縺ィ縺励※菫晏ュ倥〒縺阪k繧医≧縺ォ蟇セ蠢?
1317             * @og.rev 5.5.5.1 (2012/08/07) 繝ェ繧ス繝シ繧ケ邉サDBID 莉倥¢蠢倥l蟇セ遲?
1318             *
1319             * @param key 繧ュ繝シ
1320             * @param userid 繝ヲ繝シ繧カ繝シID
1321             * @param roles 繝ュ繝シ繝ォ
1322             *
1323             * @return true:蟄伜惠縺励※縺?k/false:蟄伜惠縺励※縺?↑縺?
1324             */
1325    //      private boolean isExistValue( final String key, final String roles ) {
1326            private boolean isExistValue( final String key, final String userid, final String roles ) {
1327    //              String[] args = { HybsSystem.sys( "SYSTEM_ID" ), userID, roles, key };
1328                    String[] args = { HybsSystem.sys( "SYSTEM_ID" ), userid, roles, key };
1329    
1330                    // 逕サ髱「ID,謫堺ス?繝励Ο繧ー繝ゥ繝?D
1331                    getApplicationInfo( "UserInfo","isExistValue" );
1332    
1333    //              String[][] rtn = DBUtil.dbExecute( QUERY_GE20_KEY, args, appInfo );
1334                    String[][] rtn = DBUtil.dbExecute( QUERY_GE20_KEY, args, appInfo, DBID );       // 5.5.5.1 (2012/08/07)
1335                    if( rtn == null || rtn.length == 0 ) {
1336                            return false;
1337                    }
1338                    else if( rtn[0].length > 0 ) {
1339                            if( String.valueOf( GE20_KBSET_READONLY ).equals( rtn[0][0] ) ) {
1340                                    throw new HybsSystemException( "隱ュ縺ソ蜿悶j蟆ら畑諠??縺ョ縺溘a縲∵嶌縺崎セシ縺ソ縺ァ縺阪∪縺帙s" );
1341                            }
1342                            else {
1343                                    return true;
1344                            }
1345                    }
1346                    else {
1347                            throw new HybsSystemException( "豌ク邯壼喧諠??讀懃エ「譎ゅ↓繧ィ繝ゥ繝シ縺檎匱逕溘@縺セ縺励◆縲? );
1348                    }
1349            }
1350    
1351            /**
1352             * 謖?ョ壹&繧後◆繧ォ繝ゥ繝?く繝シ縺ォ蟇セ蠢懊☆繧九ョ繝シ繧ソ縺ョ譚。莉カ蠑上r霑斐@縺セ縺吶?
1353             *
1354             * @og.rev 4.4.0.0 (2009/08/02) 譁ー隕剰ソス蜉?
1355             *
1356             * @param clm 繧ォ繝ゥ繝?錐
1357             *
1358             * @return 繝??繧ソ縺ョ譚。莉カ蠑?
1359             */
1360            public String getDataCondition ( final String clm ) {
1361                    return dataRole.getCondition( clm );
1362            }
1363    
1364            /**
1365             * 縺薙?繝ヲ繝シ繧カ繝シ縺ァ繧「繧ッ繧サ繧ケ縺輔l縺溽判髱「繧ェ繝悶ず繧ァ繧ッ繝医r險ュ螳壹@縺セ縺吶?
1366             *
1367             * 縺薙l縺ッ縲∫判髱「繧「繧ッ繧サ繧ケ縺ョ螻・豁エ(鬆?分)繧堤ョ。逅?☆繧区ゥ溯?縺ォ菴ソ縺?∪縺吶?
1368             *
1369             * @og.rev 5.2.3.0 (2010/12/01) 譁ー隕剰ソス蜉?
1370             *
1371             * @param guiInfo 逕サ髱「繧ェ繝悶ず繧ァ繧ッ繝?
1372             */
1373            public void setAccessGui( final GUIInfo guiInfo ) {
1374                    if( lastGuiInfo != null && guiInfo != null ) {
1375                            lastGuiInfo.setNextGuiKey( guiInfo.getKey() );
1376                    }
1377                    lastGuiInfo = guiInfo ;         // 譛?セ後↓繧「繧ッ繧サ繧ケ縺励◆ GUIInfo 繧定ィュ螳?
1378            }
1379    }