package com.mossle.bridge.userrepo;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.mossle.api.userrepo.UserRepoConnector;
import com.mossle.api.userrepo.UserRepoDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class DatabaseUserRepoConnector implements UserRepoConnector {
private static Logger logger = LoggerFactory
.getLogger(DatabaseUserRepoConnector.class);
private JdbcTemplate jdbcTemplate;
private String sqlFindById = "select id,code,name from user_repo where id=?";
private String sqlFindByCode = "select id,code,name from user_repo where code=?";
private String sqlFindAll = "select id,code,name from user_repo";
public UserRepoDTO findById(String id) {
try {
Map<String, Object> map = jdbcTemplate.queryForMap(sqlFindById, id);
return convertUserRepoDTO(map);
} catch (EmptyResultDataAccessException ex) {
logger.debug(ex.getMessage(), ex);
logger.info("user repo(id : {}) is not exists.", id);
return null;
}
}
public UserRepoDTO findByCode(String code) {
try {
Map<String, Object> map = jdbcTemplate.queryForMap(sqlFindByCode,
code);
return convertUserRepoDTO(map);
} catch (EmptyResultDataAccessException ex) {
logger.debug(ex.getMessage(), ex);
logger.info("user repo(code : {}) is not exists.", code);
return null;
}
}
public List<UserRepoDTO> findAll() {
List<Map<String, Object>> list = jdbcTemplate.queryForList(sqlFindAll);
List<UserRepoDTO> userRepoDtos = new ArrayList<UserRepoDTO>();
for (Map<String, Object> map : list) {
userRepoDtos.add(convertUserRepoDTO(map));
}
return userRepoDtos;
}
protected UserRepoDTO convertUserRepoDTO(Map<String, Object> map) {
if ((map == null) || map.isEmpty()) {
logger.info("user repo[{}] is null.", map);
return null;
}
UserRepoDTO userRepoDto = new UserRepoDTO();
userRepoDto.setId((map.get("id") == null) ? null : map.get("id")
.toString());
userRepoDto.setCode((map.get("code") == null) ? null : map.get("code")
.toString());
userRepoDto.setName((map.get("name") == null) ? null : map.get("name")
.toString());
return userRepoDto;
}
@Resource
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void setSqlFindById(String sqlFindById) {
this.sqlFindById = sqlFindById;
}
public void setSqlFindByCode(String sqlFindByCode) {
this.sqlFindByCode = sqlFindByCode;
}
public void setSqlFindAll(String sqlFindAll) {
this.sqlFindAll = sqlFindAll;
}
}