@创建人 PengBo * @创建时间 2013-7-7 下午6:55:38 */ public List findByFilter( final T t) { return ldapTemplate.search(buildDn(t), getFilter(t).encode(), getContextMapper(t)); } /** * 根据实体类型查找所有实体 * @param t * @return 返回实体集合 * @创建人 PengBo * @创建时间 2013-7-7 下午6:56:13 */ public List findAll(final T t) { return ldapTemplate.search(buildDn(t), getObjectclass(t).encode(), getContextMapper(t)); } /** * 根据实体的分页属性进行查获早分页信息 * @param basePage * @return * @创建人 PengBo * @创建时间 2013-7-7 下午6:57:00 */ public Page getPages(Page basePage,T t){ int totalRow = findByFilter(t).size(); basePage.setContent(getAllPageMap(null,t,(basePage.getPageSize()*basePage.getPage()))); basePage.setTotalRow(totalRow); basePage.setTotalPage((totalRow+basePage.getPageSize()-1)/basePage.getPageSize()); return basePage; } /** * 根据传入记录数查处所需要的信息 * @param cookie * @param t * @param pageSize * @return * @创建人 PengBo * @创建时间 2013-7-10 上午9:23:46 */ private List getAllPageMap(PagedResultsCookie cookie,T t,Integer pageSize) { PagedResultsDirContextProcessor control = new PagedResultsDirContextProcessor (pageSize, cookie); SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); List mList = ldapTemplate.search(buildDn(t), getFilter(t).encode(),searchControls, getContextMapper(t), control); return mList; } /** * 查找全部信息所需要的filter检索方法 * @param map * @return * @创建人 PengBo * @创建时间 2013-7-7 下午6:59:38 */ private AndFilter getObjectclass(T t){ Map map=t.getMap(); AndFilter filter = new AndFilter(); for(String mkey:map.keySet()){ //根据实体只获得他对应的objectclass的值 if ("objectclass".equals(mkey)) { filter.and(new EqualsFilter(mkey, (String) map.get(mkey))); } } return filter; } /** * 根据条件模糊查找的条件方法 * @param t * @return * @创建人 PengBo * @创建时间 2013-7-7 下午7:00:10 */ private AndFilter getFilter(T t) { AndFilter filter = new AndFilter(); Map map=t.getMap(); for(String mkey:map.keySet()){ if ("objectclass".equals(mkey)) { filter.and(new EqualsFilter(mkey, (String) map.get(mkey))); } if(StringUtils.isNotBlank(map.get(mkey)) && !"objectclass".equals(mkey)) filter.and(new WhitespaceWildcardsFilter(mkey, (String) map.get(mkey))); } return filter; } /** * 根据条件精确查找的条件方法 * @param t * @return * @创建人 PengBo * @创建时间 2013-7-8 下午3:10:43 */ private AndFilter getEqualFilter(T t) { AndFilter filter = new AndFilter(); Map map=t.getMap(); for(String mkey:map.keySet()){ if ("objectclass".equals(mkey)) { filter.and(new EqualsFilter(mkey, (String) map.get(mkey))); } if(StringUtils.isNotBlank(map.get(mkey)) && !"objectc |