package com.hehenian.manager.modules.sys.dao.impl; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.logicalcobwebs.proxool.ProxoolDataSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Repository; import com.hehenian.manager.commons.PageMapper; import com.hehenian.manager.commons.Pagination; import com.hehenian.manager.commons.SQLHelpers; import com.hehenian.manager.modules.sys.dao.RolesAuthorityDao; import com.hehenian.manager.modules.sys.model.Authorities; import com.hehenian.manager.modules.sys.model.RolesAuthority; @Repository("rolesAuthorityDao") public class RolesAuthorityDaoImpl implements RolesAuthorityDao { @Resource protected NamedParameterJdbcTemplate userNameJdbcTemplate; @Resource ProxoolDataSource hhn_userDataSource; @Override public int addRolesAuthority(RolesAuthority ra) { String sql="insert into RolesAuthority(roleId,authorityId,enabled) values(?,?,?)"; return userNameJdbcTemplate.getJdbcOperations().update(sql, new Object[]{ra.getRoleId(),ra.getAuthorityId(),ra.getEnabled()}); } @Override public int deleteRolesAuthority(RolesAuthority ra) { String sql="delete from RolesAuthority where roleId=? and authorityId=?"; return userNameJdbcTemplate.getJdbcOperations().update(sql, new Object[]{ra.getRoleId(),ra.getAuthorityId()}); } @Override public boolean isExists(RolesAuthority ra) { String sql="select count(1) from RolesAuthority where roleId=? and authorityId=?"; int count=userNameJdbcTemplate.getJdbcOperations().queryForInt(sql, new Object[]{ra.getRoleId(),ra.getAuthorityId()}); return count>0; } @Override public Pagination<Authorities> getAuthoritiesInRoles( Pagination<Authorities> page, int roleId) { StringBuilder sql=new StringBuilder("select SQL_CALC_FOUND_ROWS a.name,a.authDesc,a.id FROM Authorities a "); sql.append("INNER JOIN RolesAuthority ra ON a.id=ra.authorityId WHERE ra.roleId=?"); List<Object> args=new ArrayList<Object>(); args.add(roleId); return SQLHelpers.getRowSize(sql.toString(), hhn_userDataSource, args.toArray(), page,getPageMapper()); } @Override public Pagination<Authorities> getAuthoritiesNotInRoles( Pagination<Authorities> page, int roleId) { StringBuilder sql=new StringBuilder("select SQL_CALC_FOUND_ROWS a.name NAME,a.authDesc AUTHDESC,a.id ID FROM Authorities a "); sql.append(" where a.id not in (select auth.id from Authorities auth "); sql.append("INNER JOIN RolesAuthority ra ON auth.id=ra.authorityId WHERE ra.roleId=?)"); List<Object> args=new ArrayList<Object>(); args.add(roleId); return SQLHelpers.getRowSize(sql.toString(), hhn_userDataSource, args.toArray(), page, getPageMapper()); } private PageMapper<Authorities> getPageMapper(){ return new PageMapper<Authorities>() { @Override public Authorities toCustomizedBean(ResultSet rs) { Authorities auth=new Authorities(); try { auth.setId(rs.getInt("ID")); auth.setName(rs.getString("NAME")); auth.setAuthDesc(rs.getString("AUTHDESC")); } catch (SQLException e) { e.printStackTrace(); } return auth; } }; } }