package com.hrms.dao.impl; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import org.springframework.stereotype.Repository; import com.hrms.dao.IModuleDao; import com.hrms.model.Module; @Repository("moduleDao") public class ModuleDaoImpl extends GenericDaoImpl<Module, Integer> implements IModuleDao { @SuppressWarnings("unchecked") public Module getModuleByLinkUrl(String linkUrl) { List<Module> modules = getHibernateTemplate().find("from Module where linkUrl=?",linkUrl); if (modules!=null && modules.size() > 0) { return modules.get(0); } return null; } @SuppressWarnings("unchecked") public boolean allModuleTreeInXml(String fileName) { List<Module> moduleList = getHibernateTemplate().find("from Module"); File file = new File(fileName); try { PrintWriter out = new PrintWriter(file,"UTF-8"); out.println("<?xml version='1.0' encoding='UTF-8'?>"); out.println("<tree id=\"0\">"); out.println("<item text=\""+getRootModule().getModuleName()+"\" id=\""+getRootModule().getModuleId()+"\" open=\"1\" im0=\"tombs.gif\" im1=\"tombs.gif\" im2=\"iconSafe.gif\" call=\"1\" select=\"1\">"); for (int i = 0; i < moduleList.size(); i++) { moduleTreeInXml(moduleList.get(i).getModuleId(),moduleList, out); } out.println("</item>"); out.println("</tree>"); out.flush(); out.close(); if (file.exists()) { return true; }else { return false; } } catch (IOException e) { System.out.println("moduleTree to xml got a exception!"); e.printStackTrace(); return false; } } public void moduleTreeInXml(Integer moduleId,List<Module> roleModuleList,PrintWriter out) { Module module = findById(moduleId); if (!moduleId.equals(getRootModule().getModuleId())) { if (isLeaf(moduleId)) { out.println("<item text=\""+module.getModuleName()+"\" id=\""+moduleId+"\" im0=\"book_titel.gif\" im1=\"book.gif\" im2=\"book_titel.gif\"></item>"); }else { out.println("<item text=\""+module.getModuleName()+"\" id=\""+moduleId+"\" im0=\"book_titel.gif\" im1=\"book.gif\" im2=\"book_titel.gif\">"); List<Module> childrenList = getChildrenModule(moduleId); if (childrenList!=null && childrenList.size()>0) { for (int i = 0; i < childrenList.size(); i++) { for (int j = 0; j < roleModuleList.size(); j++) { if (childrenList.get(i).getModuleId().equals(roleModuleList.get(j).getModuleId())) { moduleTreeInXml(childrenList.get(i).getModuleId(),roleModuleList, out); roleModuleList.remove(j); } } } out.println("</item>"); } } } } @SuppressWarnings("unchecked") public List<Module> getChildrenModule(Integer moduleId) { return getHibernateTemplate().find( "from Module where parentModuleId=?", moduleId); } public Module getParentModule(Integer moduleId) { return (Module) getHibernateTemplate().get(getPersistentClass(), moduleId); } @SuppressWarnings("unchecked") public boolean isLeaf(Integer moduleId) { List<Module> leafList = getHibernateTemplate().find( "from Module where parentModuleId=?", moduleId); if (leafList == null || leafList.size() == 0) { return true; } else { return false; } } public Module getRootModule() { return (Module) getHibernateTemplate().find( "from Module where parentModuleId=0").get(0); } @SuppressWarnings("unchecked") public List<Module> getModule(String[] moduleIds) { if (moduleIds!=null&&moduleIds.length>0) { Module module; List<Module> list2= getHibernateTemplate().find("from Module where moduleId=?",1); for(int i=0;i<moduleIds.length;i++) { List<Module> l = getHibernateTemplate().find("from Module where moduleId=?",Integer.parseInt(moduleIds[i])); if (l!=null && l.size()>0) { module = l.get(0); if(!list2.contains(module) && module != null) { list2.add(module); } } } return list2; } return null; } @SuppressWarnings("unchecked") public String getModules(Integer moduleId) { StringBuffer leftModule = new StringBuffer(); if (moduleId.equals(getRootModule().getModuleId())) { return leftModule.toString(); } else { Module module = findById(moduleId); if (module != null) { if (module.getParentModuleId().equals( getRootModule().getModuleId())) { if (isLeaf(moduleId)) { leftModule .append( "var fun" + module.getModuleId() + "= new TreeNode('" + module.getModuleName() + "', '" + module.getLinkUrl() + "', 'tree_node.gif', null, 'tree_node.gif', null);") .append( "root.add(fun" + module.getModuleId() + ");"); } else { leftModule.append( "var fun" + module.getModuleId() + " = new TreeNode('" + module.getModuleName() + "');") .append( "root.add(fun" + module.getModuleId() + ");"); List<Module> modules = getHibernateTemplate().find( "from Module where parentModuleId=?", moduleId); for (int i = 0; i < modules.size(); i++) { getModules(modules.get(i).getModuleId()); } } } else { if (isLeaf(moduleId)) { leftModule .append( "var fun" + module.getModuleId() + "= new TreeNode('" + module.getModuleName() + "', '" + module.getLinkUrl() + "', 'tree_node.gif', null, 'tree_node.gif', null);") .append( "fun" + module.getParentModuleId() + ".add(fun" + module.getModuleId() + ");"); } else { leftModule.append( "var fun" + module.getModuleId() + " = new TreeNode('" + module.getModuleName() + "');") .append( "fun" + module.getParentModuleId() + ".add(fun" + module.getModuleId() + ");"); List<Module> modules = getHibernateTemplate().find( "from Module where parentModuleId=?", moduleId); for (int i = 0; i < modules.size(); i++) { getModules(modules.get(i).getModuleId()); } } } } return leftModule.toString(); } } @SuppressWarnings("unchecked") public List<Object> getSelectParentModule() { List allModule = getHibernateTemplate().find(" select m, n" + " from Module m, Module n " + " where m.parentModuleId=n.moduleId"); //List<Module> allModule = getHibernateTemplate().find("select m.moduleId,m.moduleName,m.moduleOrderNum,m.linkUrl,m.parentModuleId,n.moduleName as parentModuleName,m.moduleDescription from Module m,Module n where m.parentModuleId=n.moduleId"); return allModule; } @SuppressWarnings("unchecked") public String getModOrdNum(Integer parentModuleId) { String moduleOrderNum = ""; String s1=""; String s2=""; String s3=""; Integer int1=0; Integer int2=0; List<Module> list1 = getHibernateTemplate().find("from Module where parentModuleId=? order by moduleOrderNum desc", getRootModule().getModuleId()); if (parentModuleId.equals(getRootModule().getModuleId())) { if (list1 != null && list1.size() > 0) { s1= list1.get(0).getModuleOrderNum(); s2 = s1.substring(1, 3); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,1) + s3 + s1.substring(3, 7); }else { s1 = getRootModule().getModuleOrderNum(); s2 = s1.substring(1, 3); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,1) + s3 + s1.substring(3, 7); } }else { for(int i=0;i<list1.size();i++) { List<Module> list2 = getHibernateTemplate().find("from Module where parentModuleId=? order by moduleOrderNum desc",list1.get(i).getModuleId()); if(parentModuleId.equals(list1.get(i).getModuleId())) { if(list2!=null&&list2.size()>0) { s1= list2.get(0).getModuleOrderNum(); s2 = s1.substring(3, 5); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,3) + s3 + s1.substring(5, 7); break; }else { s1= list1.get(i).getModuleOrderNum(); s2 = s1.substring(3, 5); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,3) + s3 + s1.substring(5, 7); break; } }else { for (int j = 0; j < list2.size(); j++) { if(parentModuleId.equals(list2.get(j).getModuleId())) { List<Module> list3 = getHibernateTemplate().find("from Module where parentModuleId=? order by moduleOrderNum desc",list2.get(j).getModuleId()); if(list3!=null&list3.size()>0) { s1= list3.get(0).getModuleOrderNum(); s2 = s1.substring(5, 7); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,5) + s3; break; }else { s1= list2.get(j).getModuleOrderNum(); s2 = s1.substring(5, 7); int1 = Integer.valueOf(s2); int2 = int1 + 1; if (int2<10) { s3 = 0+String.valueOf(int2); }else { s3 = String.valueOf(int2); } moduleOrderNum = s1.substring(0,5) + s3; break; } } } } } } this.getHibernateTemplate().getSessionFactory().getCurrentSession().flush(); return moduleOrderNum; } }