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 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.sys.dao.ResourcesDao; import com.hehenian.manager.modules.sys.model.Resources; @Repository("resourcesDao") public class ResourcesDaoImpl implements ResourcesDao { @Resource protected NamedParameterJdbcTemplate userNameJdbcTemplate; @Resource ProxoolDataSource hhn_userDataSource; @Override public int addResources(Resources resource) { String sql = "insert into Resources(name,resourceDesc,resourceStr,enabled,issys,module,icon,resouceType) values(?,?,?,?,?,?,?,?)"; return userNameJdbcTemplate.getJdbcOperations().update(sql, resource.getName(), resource.getResourceDesc(), resource.getResourceStr(), resource.getEnabled(), resource.getIssys(), resource.getModule(), resource.getIcon(),resource.getResouceType().toString()); } @Override public int updateResources(Resources resource) { StringBuilder sql = new StringBuilder("update Resources set "); List<Object> args = new ArrayList<Object>(); if (StringUtils.isNotBlank(resource.getName())) { sql.append("name=?,"); args.add(resource.getName()); } if (StringUtils.isNotBlank(resource.getResourceDesc())) { sql.append("resourceDesc=?,"); args.add(resource.getResourceDesc()); } if(StringUtils.isNotBlank(resource.getResourceStr())){ sql.append("resourceStr=?,"); args.add(resource.getResourceStr()); } if(StringUtils.isNotBlank(resource.getModule())){ sql.append("module=?,"); args.add(resource.getModule()); } if(StringUtils.isNotBlank(resource.getIcon())){ sql.append("icon=?,"); args.add(resource.getIcon()); } //资源类型 if(StringUtils.isNotBlank(resource.getResouceType().toString())){ sql.append("resouceType=?,"); args.add(resource.getResouceType().toString()); } sql.setLength(sql.length()-1); sql.append(" where id=").append(resource.getId()); return userNameJdbcTemplate.getJdbcOperations().update(sql.toString(), args.toArray()); } @Override public int disabledResource(int resourceId) { // TODO Auto-generated method stub return 0; } @Override public Pagination<Resources> getResourcesInModule( Pagination<Resources> page, String resourceName) { StringBuilder sql = new StringBuilder( "select id,name,resourceDesc,resourceStr,enabled,module,icon from Resources where 1=1"); List<Object> args = new ArrayList<Object>(); if (StringUtils.isNotBlank(resourceName)) { sql.append(" and name like '%?%' or resourceStr like '%?%'"); args.add(resourceName); args.add(resourceName); } return SQLHelpers.getRowSize(sql.toString(), userNameJdbcTemplate, args.toArray(), page, new PaginationCallback<Resources>() { @Override public Resources toCustomizedBean(Map<String, Object> data) { Resources r = new Resources(); r.setId(Integer.parseInt(data.get("id").toString())); r.setName(data.get("name").toString()); r.setResourceStr(data.get("resourceStr").toString()); r.setResourceDesc(data.get("resourceDesc").toString()); r.setEnabled(Boolean.parseBoolean(data.get("enabled") .toString())); r.setModule(data.get("module").toString()); Object icon = data.get("icon"); r.setIcon(icon != null ? icon.toString() : ""); return r; } }); } @Override public int deleteOneResource(int resourceId) { String sql = "delete from Resources where id=?"; return userNameJdbcTemplate.getJdbcOperations().update(sql, resourceId); } @Override public Resources getOneResource(Integer id) { String sql = "select id,name,resourceDesc,resourceStr,enabled,module,icon from Resources where id=?"; return userNameJdbcTemplate.getJdbcOperations().queryForObject(sql, new Object[] { id }, new RowMapper<Resources>() { @Override public Resources mapRow(ResultSet rs, int arg1) throws SQLException { Resources r = new Resources(); r.setId(rs.getInt("id")); r.setName(rs.getString("name")); r.setResourceDesc(rs.getString("resourceDesc")); r.setResourceStr(rs.getString("resourceStr")); r.setModule(rs.getString("module")); r.setIcon(rs.getString("icon")); return r; } }); } @Override public Pagination<Resources> getResourcesInInAuthority( Pagination<Resources> page, int authorityId) { StringBuilder sql=new StringBuilder("SELECT r.id ID,r.name NAME,r.resourceStr RESOURCESTR,r.module MODULE FROM Resources r,AuthorityResources ar "); sql.append(" WHERE r.id=ar.resourceId AND ar.authorityId"); sql.append(" = ").append(authorityId); return SQLHelpers.getRowSize(sql.toString(), userNameJdbcTemplate, new Object[]{}, page, new ResourcePagination()); } @Override public Pagination<Resources> getResourceNotInAuthority( Pagination<Resources> page, int authorityId) { StringBuilder sql=new StringBuilder("SELECT r.id ID,r.name NAME,r.resourceStr RESOURCESTR,r.module MODULE FROM Resources r WHERE r.id NOT IN (SELECT a.id FROM Resources a,AuthorityResources ar WHERE a.id=ar.resourceId AND ar.authorityId=?)"); return SQLHelpers.getRowSize(sql.toString(), userNameJdbcTemplate, new Object[]{authorityId}, page, new ResourcePagination()); } class ResourcePagination extends PaginationCallback<Resources> { @Override public Resources toCustomizedBean(Map<String, Object> data) { Resources r=new Resources(); r.setId(Integer.parseInt(data.get("ID").toString())); r.setName(data.get("NAME").toString()); r.setResourceStr(data.get("RESOURCESTR").toString()); r.setModule(data.get("MODULE").toString()); return r; } } }