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