package net.simpleframework.organization.account;
import java.util.Date;
import net.simpleframework.ado.DataObjectException;
import net.simpleframework.ado.db.ITableEntityManager;
import net.simpleframework.ado.db.event.TableEntityAdapter;
import net.simpleframework.ado.db.schema.UniqueValue;
import net.simpleframework.organization.AbstractOrganizationManager;
import net.simpleframework.organization.OrgUtils;
import net.simpleframework.organization.account.IAccount.InsertCallback;
import net.simpleframework.organization.user.IUser;
import net.simpleframework.util.ConvertUtils;
/**
* LGPLv3
*
* @author (cknet@126.com, 13910090885)
* http://code.google.com/p/simpleframework/
* http://www.simpleframework.net
*/
public class AccountManager extends AbstractOrganizationManager<Account> {
public AccountManager() {
// admin
final Account account = (Account) getAccountByName(IUser.admin);
if (account == null) {
insertAccount(IUser.admin, IUser.admin, null, new IAccount.InsertCallback() {
@Override
public void insert(final IUser user) {
user.setText(IUser.admin);
}
});
}
}
public IAccount getAccountByName(final String name) {
final IUser user = OrgUtils.um().getUserByName(name);
if (user == null) {
return null;
}
return getAccountById(user.getId());
}
public IAccount getAccountById(final Object id) {
if (id == null) {
return null;
}
return queryForObject(new UniqueValue(ConvertUtils.toLong(id, 0)));
}
public IAccount insertAccount(final String name, final String password, final String ip,
final InsertCallback callback) {
final ITableEntityManager temgr = getEntityManager();
final Account account = new Account();
account.setPassword(password);
account.setStatus(EAccountStatus.normal);
account.setCreateDate(new Date());
account.setLastLoginDate(account.getCreateDate());
account.setLastLoginIP(ip);
if (callback != null) {
callback.init(account);
}
temgr.insertTransaction(account, new TableEntityAdapter() {
@Override
public void afterInsert(final ITableEntityManager manager, final Object[] objects) {
final IUser user = OrgUtils.um().createUser(account.getId());
user.setName(name);
if (callback != null) {
try {
callback.insert(user);
} catch (final Exception e) {
throw new DataObjectException(e);
}
}
OrgUtils.um().getEntityManager().insert(user);
}
});
return account;
}
}
|