package foundation.user;
|
|
import foundation.dao.preload.Bucket;
|
import foundation.data.entity.Entity;
|
import foundation.data.object.DataObject;
|
|
public class UserBucket extends Bucket<User> {
|
|
private static UserBucket instance;
|
|
static {
|
instance = newInstance();
|
}
|
|
private UserBucket() {
|
|
}
|
|
public static UserBucket getInstance() {
|
return instance;
|
}
|
|
public static UserBucket newInstance() {
|
return new UserBucket();
|
}
|
|
@Override
|
public void activate() {
|
instance = this;
|
}
|
|
public User getOrLoad(String userId) {
|
User result = null;
|
|
try {
|
result = get(userId);
|
|
if (result == null) {
|
synchronized (this) {
|
result = get(userId);
|
|
if (result == null) {
|
//1. 如果用户不存在,从数据库中加载用户
|
result = loadOneUserFromDB(userId);
|
|
if (result == null) {
|
return null;
|
}
|
|
//2. 将新加载的用户存放到Bucket中
|
loadOne(result.getId(), result);
|
}
|
}
|
}
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
return result;
|
}
|
|
private User loadOneUserFromDB(String userId) throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_user");
|
Entity entity = dataObject.getTableEntity(userId);
|
|
if (entity == null) {
|
return null;
|
}
|
|
User user = new User();
|
user.load(entity);
|
|
return user;
|
}
|
|
}
|