package com.hehenian.manager.modules.users.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;
import com.hehenian.manager.commons.Pagination;
import com.hehenian.manager.commons.PaginationCallback;
import com.hehenian.manager.commons.SQLHelpers;
import com.hehenian.manager.modules.users.dao.RolesDao;
import com.hehenian.manager.modules.users.model.Roles;
@Repository("rolesDao")
public class RolesDaoImpl implements RolesDao {
@Resource
protected NamedParameterJdbcTemplate userNameJdbcTemplate;
@Override
public int addRole(Roles role) {
String sql="insert into Roles(name,roleDesc,enabled) values(?,?,1)";
return userNameJdbcTemplate.getJdbcOperations().update(sql, role.getName(),role.getRoleDesc());
}
@Override
public int updateRole(Roles role) {
StringBuilder sql=new StringBuilder("update Roles set ");
List<Object> args=new ArrayList<Object>();
if(StringUtils.isNotBlank(role.getName())){
sql.append(" name=?,");
args.add(role.getName());
}
if(StringUtils.isNotBlank(role.getRoleDesc())){
sql.append(" roleDesc=?,");
args.add(role.getRoleDesc());
}
sql.setLength(sql.length()-1);
sql.append(" where id=").append(role.getId());
return userNameJdbcTemplate.getJdbcOperations().update(sql.toString(), args.toArray());
}
@Override
public int deleteRole(int id) {
String sql="delete from Roles where id="+id;
return userNameJdbcTemplate.getJdbcOperations().update(sql);
}
@Override
public Pagination<Roles> getRolesByPage(Pagination<Roles> page,
String roleName) {
StringBuilder sql=new StringBuilder("select id,name,roleDesc,enabled from Roles where 1=1 ");
List<Object> args=new ArrayList<Object>();
if(StringUtils.isNotBlank(roleName)){
sql.append(" and name like '%?%'");
args.add(roleName);
}
return SQLHelpers.getRowSize(sql.toString(), userNameJdbcTemplate, args.toArray(), page, new PaginationCallback<Roles>() {
@Override
public Roles toCustomizedBean(Map<String, Object> data) {
Roles r=new Roles();
r.setId(Integer.parseInt(data.get("id").toString()));
r.setName(data.get("name").toString());
Object roleDesc=data.get("roleDesc");
r.setRoleDesc(roleDesc!=null?roleDesc.toString():"");
Object enable=data.get("enabled");
r.setEnabled(enable!=null?Boolean.parseBoolean(enable.toString()):true);
return r;
}
});
}
@Override
public Roles getOneRoleById(int id) {
String sql="select id,name,roleDesc,enabled from Roles where id=?";
return userNameJdbcTemplate.getJdbcOperations().queryForObject(sql,
new Object[] { id }, new RowMapper<Roles>() {
@Override
public Roles mapRow(ResultSet rs, int arg1)
throws SQLException {
Roles r=new Roles();
r.setId(rs.getInt("id"));
r.setName(rs.getString("name"));
r.setRoleDesc(rs.getString("roleDesc"));
return r;
}
});
}
@Override
public Pagination<Roles> getRolesInAuthority(Pagination<Roles> page,
int authId) {
String sql="select r.id ID,r.name NAME,r.roleDesc ROLEDESC from Roles r,RolesAuthority ra where r.id=ra.roleId and ra.authorityId=?";
return SQLHelpers.getRowSize(sql, userNameJdbcTemplate, new Object[]{authId}, page, new RolesPage());
}
@Override
public Pagination<Roles> getRolesNotInAuthority(Pagination<Roles> page,
int authId) {
String sql="select r.id ID,r.name NAME,r.roleDesc ROLEDESC from Roles r where r.id not in (select a.id from Roles a,RolesAuthority ra where a.id=ra.roleId and ra.authorityId=?)";
return SQLHelpers.getRowSize(sql, userNameJdbcTemplate, new Object[]{authId}, page, new RolesPage());
}
class RolesPage extends PaginationCallback<Roles>{
@Override
public Roles toCustomizedBean(Map<String, Object> data) {
Roles r=new Roles();
r.setId(Integer.parseInt(data.get("ID").toString()));
r.setName(data.get("NAME").toString());
r.setRoleDesc(data.get("ROLEDESC").toString());
return r;
}
}
}