package com.mossle.user.support;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.mossle.core.page.Page;
import com.mossle.core.query.PropertyFilter;
import com.mossle.core.query.PropertyFilterUtils;
import com.mossle.spi.user.AccountAliasConnector;
import com.mossle.user.persistence.domain.AccountAlias;
import com.mossle.user.persistence.domain.AccountInfo;
import com.mossle.user.persistence.manager.AccountAliasManager;
import com.mossle.user.persistence.manager.AccountInfoManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.Assert;
public class DatabaseAccountAliasConnector implements AccountAliasConnector {
private static Logger logger = LoggerFactory
.getLogger(DatabaseAccountAliasConnector.class);
private JdbcTemplate jdbcTemplate;
private Map<String, String> aliasMap = new HashMap<String, String>();
private String sql = "SELECT ai.USERNAME FROM ACCOUNT_ALIAS aa, ACCOUNT_INFO ai WHERE aa.ACCOUNT_ID=ai.ID WHERE aa.NAME=?";
private AccountAliasManager accountAliasManager;
private AccountInfoManager accountInfoManager;
public String findUsernameByAlias(String alias) {
Assert.hasText(alias, "alias should not be null");
try {
String username = jdbcTemplate.queryForObject(sql, String.class,
alias);
return username;
} catch (EmptyResultDataAccessException ex) {
logger.debug(ex.getMessage(), ex);
logger.info("user[{}] is not exists.", alias);
return alias.trim().toLowerCase();
}
}
public void updateAlias(String username, String type, String alias) {
AccountInfo accountInfo = accountInfoManager.findUniqueBy("username",
username);
if (accountInfo == null) {
return;
}
AccountAlias accountAlias = accountAliasManager.findUnique(
"from AccountAlias where type=? and accountInfo=?", type,
accountInfo);
if (accountAlias == null) {
accountAlias = new AccountAlias();
accountAlias.setAccountInfo(accountInfo);
accountAlias.setType(type);
accountAlias.setName(alias);
}
accountAlias.setName(alias);
accountAliasManager.save(accountAlias);
}
@Resource
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Resource
public void setAccountInfoManager(AccountInfoManager accountInfoManager) {
this.accountInfoManager = accountInfoManager;
}
@Resource
public void setAccountAliasManager(AccountAliasManager accountAliasManager) {
this.accountAliasManager = accountAliasManager;
}
public void setSql(String sql) {
this.sql = sql;
}
}