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