public ResultData searchCategories(User contextUser, Category category)
throws RemoteException, QuetzacoException, Exception {
Connection con = null;
PreparedStatement ps1 = null;
ArrayList models = new ArrayList();
int status = QuetzacoConstants.SUCCESS;
ResultData rd = null;
try {
if (contextUser == null || contextUser.getObjectId() == null) {
throw new QuetzacoException(
"Improper context User Information ");
}
if (category == null) {
throw new QuetzacoException("No categories to Search ");
}
String searchQuery = null;
ResultSet rs = null;
searchQuery = QuetzacoReadQuery.instance().getIndexMethodQueryValue("getCategorySearchQuery",new Class[]{Category.class},new Object[]{category});
con = DBConnectionHelper.getConnection();
ps1 = con.prepareStatement(searchQuery);
rs = ps1.executeQuery();
BaseModel prtModel = null;
//新建一个HashMap集合
HashMap<String,List<Category>> subMap = new HashMap<String, List<Category>>();
List<Category> subCategory = null;
//返回的结果集循环遍历,然后put到subMap集合中去
while (rs.next()) {
category = new Category(rs.getString(1));
category.setObjectType("Category");
category.setObjectName(rs.getString(2));
category.setSpaceId(category.getSpaceId());
category.setCategoryStatus(rs.getInt(3));
prtModel = new BaseModel(rs.getString(4));
category.setParentModel(prtModel);
if(subMap.containsKey(prtModel.getObjectId())){
subMap.get(prtModel.getObjectId()).add(category);
}else{
subCategory = new ArrayList<Category>();
subCategory.add(category);
subMap.put(prtModel.getObjectId(),subCategory);
}
}
if(subMap.size()>0) {
addSubItems(subMap, "0");
if(subMap.get("0")!=null)
models.addAll(subMap.get("0"));
}
rs.close();
} catch (Exception exp) {
exp.printStackTrace();
status = QuetzacoConstants.FAILURE;
throw exp;
} finally {
cleanup(con, ps1);
}
rd = new ResultData(status, models);
return rd;
}
private void addSubItems(HashMap<String, List<Category>> subMap, String key) {
if(subMap.get(key)!=null)
for(Category category : subMap.get(key)){
if(category!=null&&category.getObjectId()!=null&&subMap.get(category.getObjectId())!=null) {
category.setSubCategory(subMap.get(category.getObjectId()));
if (!subMap.containsKey(category.getObjectId()))
continue;
addSubItems(subMap, category.getObjectId());
}
}
}
业勤于精荒于嬉
http://www.cnblogs.com/maxlei/