XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<InitDatas>
<Modules>
<Module name="个人办公" sn="personaloffice" url="" orderNo="10">
<Module name="我的办公桌" sn="myworkbeach" url="task.do?method=doesTask" orderNo="1010"/>
<Module name="我的便签" sn="notepad" url="notepad.do" orderNo="1020"/>
<Module name="我的任务" sn="mytask" url="user.do?method=mpInput" orderNo="1030"/>
<Module name="通信录" sn="addresslist" url="addresslist.do" orderNo="1040"/>
</Module>
<Module name="公文管理" sn="doc" url="" orderNo="20">
<Module name="公文维护" sn="document" url="document.do" orderNo="2010"/>
<Module name="归档处理" sn="arch" url="document.do?method=searchAllFinishedDocuments" orderNo="2020"/>
</Module>
<Module name="公共信息" sn="pubinfo" url="" orderNo="30">
<Module name="信息管理" sn="infomgr" url="info.do" orderNo="3010"/>
</Module>
<Module name="行政办公" sn="puboffice" url="" orderNo="40">
<Module name="会议管理" sn="meeting" url="meetingRoom.do" orderNo="4010"/>
<Module name="资产管理" sn="asset" url="asset.do" orderNo="4020"/>
<Module name="用品管理" sn="usething" url="usething.do" orderNo="4030"/>
<Module name="车辆管理" sn="car" url="car.do" orderNo="4040"/>
<Module name="图书管理" sn="book" url="book.do" orderNo="4050"/>
</Module>
<Module name="消息管理" sn="mail" url="" orderNo="50">
<Module name="收件箱" sn="inbox" url="message.do?method=inbox" orderNo="5010"/>
<Module name="发件箱" sn="outbox" url="message.do?method=outbox" orderNo="5020"/>
<Module name="垃圾箱" sn="trash" url="message.do?method=trash" orderNo="5030"/>
<Module name="聊天记录" sn="record" url="message.do?method=record" orderNo="5040"/>
</Module>
<Module name="工作流程" sn="workflow" url="" orderNo="60">
<Module name="流程管理" sn="flow" url="workflow.do" orderNo="6010"/>
<Module name="表单定义" sn="formdef" url="workflow.do?formdef=true" orderNo="6020"/>
</Module>
<Module name="组织管理" sn="orgmgr" url="" orderNo="70">
<Module name="机构管理" sn="org" url="org.do" orderNo="7010"/>
<Module name="人员管理" sn="person" url="person.do" orderNo="7020"/>
</Module>
<Module name="权限管理" sn="auth" url="" orderNo="80">
<Module name="模块管理" sn="module" url="module.do" orderNo="8010"/>
<Module name="角色管理" sn="role" url="role.do" orderNo="8020"/>
<Module name="用户管理" sn="user" url="user.do" orderNo="8030"/>
</Module>
<Module name="系统管理" sn="sytemmgr" url="" orderNo="90">
<Module name="密码修改" sn="chgpsw" url="user.do?method=chgpsw" orderNo="9010"/>
<Module name="代码定义" sn="codedef" url="codedef.do" orderNo="9020"/>
<Module name="系统初始化" sn="systeminit" url="systeminit.do" orderNo="9030"/>
</Module>
<Module name="人事档案" sn="employee" url="" orderNo="100">
<Module name="人员履历" sn="employee1" url="employee.do" orderNo="10010"/>
<Module name="转正申请" sn="employee2" url="employee.do" orderNo="10020"/>
<Module name="离职申请" sn="employee3" url="employee.do" orderNo="10030"/>
<Module name="员工考勤" sn="employee4" url="employee.do" orderNo="10040"/>
</Module>
</Modules>
<Roles>
<Role name="系统管理员">
<Acl module="个人办公" C="true" R="true" U="true" D="true"/>
<Acl module="我的办公桌" C="true" R="true" U="true" D="true"/>
<Acl module="我的便签" C="true" R="true" U="true" D="true"/>
<Acl module="我的任务" C="true" R="true" U="true" D="true"/>
<Acl module="通信录" C="true" R="true" U="true" D="true"/>
<Acl module="公文管理" C="true" R="true" U="true" D="true"/>
<Acl module="公文维护" C="true" R="true" U="true" D="true"/>
<Acl module="归档处理" C="true" R="true" U="true" D="true"/>
<Acl module="公共信息" C="true" R="true" U="true" D="true"/>
<Acl module="信息管理" C="true" R="true" U="true" D="true"/>
<Acl module="行政办公" C="true" R="true" U="true" D="true"/>
<Acl module="会议管理" C="true" R="true" U="true" D="true"/>
<Acl module="资产管理" C="true" R="true" U="true" D="true"/>
<Acl module="用品管理" C="true" R="true" U="true" D="true"/>
<Acl module="车辆管理" C="true" R="true" U="true" D="true"/>
<Acl module="图书管理" C="true" R="true" U="true" D="true"/>
<Acl module="消息管理" C="true" R="true" U="true" D="true"/>
<Acl module="收件箱" C="true" R="true" U="true" D="true"/>
<Acl module="发件箱" C="true" R="true" U="true" D="true"/>
<Acl module="垃圾箱" C="true" R="true" U="true" D="true"/>
<Acl module="聊天记录" C="true" R="true" U="true" D="true"/>
<Acl module="工作流程" C="true" R="true" U="true" D="true"/>
<Acl module="流程管理" C="true" R="true" U="true" D="true"/>
<Acl module="表单定义" C="true" R="true" U="true" D="true"/>
<Acl module="组织管理" C="true" R="true" U="true" D="true"/>
<Acl module="机构管理" C="true" R="true" U="true" D="true"/>
<Acl module="人员管理" C="true" R="true" U="true" D="true"/>
<Acl module="权限管理" C="true" R="true" U="true" D="true"/>
<Acl module="模块管理" C="true" R="true" U="true" D="true"/>
<Acl module="角色管理" C="true" R="true" U="true" D="true"/>
<Acl module="用户管理" C="true" R="true" U="true" D="true"/>
<Acl module="系统管理" C="true" R="true" U="true" D="true"/>
<Acl module="密码修改" C="true" R="true" U="true" D="true"/>
<Acl module="代码定义" C="true" R="true" U="true" D="true"/>
<Acl module="系统初始化" C="true" R="true" U="true" D="true"/>
<Acl module="人事档案" C="true" R="true" U="true" D="true"/>
<Acl module="人员履历" C="true" R="true" U="true" D="true"/>
<Acl module="转正申请" C="true" R="true" U="true" D="true"/>
<Acl module="离职申请" C="true" R="true" U="true" D="true"/>
<Acl module="员工考勤" C="true" R="true" U="true" D="true"/>
</Role>
<Role name="普通员工">
<Acl module="个人办公" C="true" R="true" U="true" D="true"/>
<Acl module="我的办公桌" C="true" R="true" U="true" D="true"/>
<Acl module="我的便签" C="true" R="true" U="true" D="true"/>
<Acl module="我的任务" C="true" R="true" U="true" D="true"/>
<Acl module="通信录" C="true" R="true" U="true" D="true"/>
<Acl module="公文管理" C="true" R="true" U="true" D="true"/>
<Acl module="公文维护" C="true" R="true" U="true" D="true"/>
<Acl module="归档处理" C="true" R="true" U="true" D="true"/>
<Acl module="公共信息" C="true" R="true" U="true" D="true"/>
<Acl module="信息管理" C="true" R="true" U="true" D="true"/>
<Acl module="行政办公" C="true" R="true" U="true" D="true"/>
<Acl module="会议管理" C="true" R="true" U="true" D="true"/>
<Acl module="资产管理" C="true" R="true" U="true" D="true"/>
<Acl module="用品管理" C="true" R="true" U="true" D="true"/>
<Acl module="车辆管理" C="true" R="true" U="true" D="true"/>
<Acl module="图书管理" C="true" R="true" U="true" D="true"/>
<Acl module="消息管理" C="true" R="true" U="true" D="true"/>
<Acl module="收件箱" C="true" R="true" U="true" D="true"/>
<Acl module="发件箱" C="true" R="true" U="true" D="true"/>
<Acl module="垃圾箱" C="true" R="true" U="true" D="true"/>
<Acl module="聊天记录" C="true" R="true" U="true" D="true"/>
</Role>
<Role name="部门领导">
<Acl module="个人办公" C="true" R="true" U="true" D="true"/>
<Acl module="我的办公桌" C="true" R="true" U="true" D="true"/>
<Acl module="我的便签" C="true" R="true" U="true" D="true"/>
<Acl module="我的任务" C="true" R="true" U="true" D="true"/>
<Acl module="通信录" C="true" R="true" U="true" D="true"/>
<Acl module="公文管理" C="true" R="true" U="true" D="true"/>
<Acl module="公文维护" C="true" R="true" U="true" D="true"/>
<Acl module="归档处理" C="true" R="true" U="true" D="true"/>
<Acl module="公共信息" C="true" R="true" U="true" D="true"/>
<Acl module="信息管理" C="true" R="true" U="true" D="true"/>
<Acl module="行政办公" C="true" R="true" U="true" D="true"/>
<Acl module="会议管理" C="true" R="true" U="true" D="true"/>
<Acl module="资产管理" C="true" R="true" U="true" D="true"/>
<Acl module="用品管理" C="true" R="true" U="true" D="true"/>
<Acl module="车辆管理" C="true" R="true" U="true" D="true"/>
<Acl module="图书管理" C="true" R="true" U="true" D="true"/>
<Acl module="消息管理" C="true" R="true" U="true" D="true"/>
<Acl module="收件箱" C="true" R="true" U="true" D="true"/>
<Acl module="发件箱" C="true" R="true" U="true" D="true"/>
<Acl module="垃圾箱" C="true" R="true" U="true" D="true"/>
<Acl module="聊天记录" C="true" R="true" U="true" D="true"/>
<Acl module="工作流程" C="true" R="true" U="true" D="true"/>
<Acl module="流程管理" C="true" R="true" U="true" D="true"/>
<Acl module="表单定义" C="true" R="true" U="true" D="true"/>
<Acl module="组织管理" C="true" R="true" U="true" D="true"/>
<Acl module="机构管理" C="true" R="true" U="true" D="true"/>
<Acl module="人员管理" C="true" R="true" U="true" D="true"/>
<Acl module="权限管理" C="true" R="true" U="true" D="true"/>
<Acl module="模块管理" C="true" R="true" U="true" D="true"/>
<Acl module="角色管理" C="true" R="true" U="true" D="true"/>
<Acl module="用户管理" C="true" R="true" U="true" D="true"/>
<Acl module="系统管理" C="true" R="true" U="true" D="true"/>
<Acl module="密码修改" C="true" R="true" U="true" D="true"/>
<Acl module="代码定义" C="true" R="true" U="true" D="true"/>
<Acl module="系统初始化" C="true" R="true" U="true" D="true"/>
<Acl module="人事档案" C="true" R="true" U="true" D="true"/>
<Acl module="人员履历" C="true" R="true" U="true" D="true"/>
<Acl module="转正申请" C="true" R="true" U="true" D="true"/>
<Acl module="离职申请" C="true" R="true" U="true" D="true"/>
<Acl module="员工考勤" C="true" R="true" U="true" D="true"/>
</Role>
<Role name="总经理">
<Acl module="个人办公" C="true" R="true" U="true" D="true"/>
<Acl module="我的办公桌" C="true" R="true" U="true" D="true"/>
<Acl module="我的便签" C="true" R="true" U="true" D="true"/>
<Acl module="我的任务" C="true" R="true" U="true" D="true"/>
<Acl module="通信录" C="true" R="true" U="true" D="true"/>
<Acl module="公文管理" C="true" R="true" U="true" D="true"/>
<Acl module="公文维护" C="true" R="true" U="true" D="true"/>
<Acl module="归档处理" C="true" R="true" U="true" D="true"/>
<Acl module="公共信息" C="true" R="true" U="true" D="true"/>
<Acl module="信息管理" C="true" R="true" U="true" D="true"/>
<Acl module="行政办公" C="true" R="true" U="true" D="true"/>
<Acl module="会议管理" C="true" R="true" U="true" D="true"/>
<Acl module="资产管理" C="true" R="true" U="true" D="true"/>
<Acl module="用品管理" C="true" R="true" U="true" D="true"/>
<Acl module="车辆管理" C="true" R="true" U="true" D="true"/>
<Acl module="图书管理" C="true" R="true" U="true" D="true"/>
<Acl module="消息管理" C="true" R="true" U="true" D="true"/>
<Acl module="收件箱" C="true" R="true" U="true" D="true"/>
<Acl module="发件箱" C="true" R="true" U="true" D="true"/>
<Acl module="垃圾箱" C="true" R="true" U="true" D="true"/>
<Acl module="聊天记录" C="true" R="true" U="true" D="true"/>
<Acl module="工作流程" C="true" R="true" U="true" D="true"/>
<Acl module="流程管理" C="true" R="true" U="true" D="true"/>
<Acl module="表单定义" C="true" R="true" U="true" D="true"/>
<Acl module="组织管理" C="true" R="true" U="true" D="true"/>
<Acl module="机构管理" C="true" R="true" U="true" D="true"/>
<Acl module="人员管理" C="true" R="true" U="true" D="true"/>
<Acl module="权限管理" C="true" R="true" U="true" D="true"/>
<Acl module="模块管理" C="true" R="true" U="true" D="true"/>
<Acl module="角色管理" C="true" R="true" U="true" D="true"/>
<Acl module="用户管理" C="true" R="true" U="true" D="true"/>
<Acl module="系统管理" C="true" R="true" U="true" D="true"/>
<Acl module="密码修改" C="true" R="true" U="true" D="true"/>
<Acl module="代码定义" C="true" R="true" U="true" D="true"/>
<Acl module="系统初始化" C="true" R="true" U="true" D="true"/>
<Acl module="人事档案" C="true" R="true" U="true" D="true"/>
<Acl module="人员履历" C="true" R="true" U="true" D="true"/>
<Acl module="转正申请" C="true" R="true" U="true" D="true"/>
<Acl module="离职申请" C="true" R="true" U="true" D="true"/>
<Acl module="员工考勤" C="true" R="true" U="true" D="true"/>
</Role>
<Role name="档案管理员">
<Acl module="个人办公" C="true" R="true" U="true" D="true"/>
<Acl module="我的办公桌" C="true" R="true" U="true" D="true"/>
<Acl module="我的便签" C="true" R="true" U="true" D="true"/>
<Acl module="我的任务" C="true" R="true" U="true" D="true"/>
<Acl module="通信录" C="true" R="true" U="true" D="true"/>
<Acl module="公文管理" C="true" R="true" U="true" D="true"/>
<Acl module="归档处理" C="true" R="true" U="true" D="true"/>
<Acl module="消息管理" C="true" R="true" U="true" D="true"/>
<Acl module="收件箱" C="true" R="true" U="true" D="true"/>
<Acl module="发件箱" C="true" R="true" U="true" D="true"/>
<Acl module="垃圾箱" C="true" R="true" U="true" D="true"/>
<Acl module="聊天记录" C="true" R="true" U="true" D="true"/>
</Role>
</Roles>
<Organizations>
<Org name="总公司">
<Org name="总裁办"/>
<Org name="行政部"/>
<Org name="财务部"/>
</Org>
<Org name="北京分公司">
<Person name="陈十" username="cs" password="cs" roles="总经理"/>
<Org name="办公室">
<Person name="诸一一" username="zyy" password="zyy" roles="部门领导"/>
<Person name="王八" username="wb" password="wb" roles="档案管理员"/>
</Org>
<Org name="造价咨询部"/>
<Org name="财务部">
<Person name="卫一二" username="wye" password="wye" roles="部门领导"/>
</Org>
<Org name="招标代理部"/>
<Org name="软件开发部">
<Person name="冯九" username="fj" password="fj" roles="部门领导"/>
<Org name="OA项目组"/>
<Org name="CRM项目组"/>
<Org name="烟草行业项目组">
<Person name="钱二" username="qe" password="qe" roles="部门领导"/>
<Person name="孙三" username="ss" password="ss" roles="普通员工"/>
<Person name="李四" username="ls" password="ls" roles="普通员工"/>
<Person name="周五" username="zw" password="zw" roles="普通员工"/>
<Person name="吴六" username="wl" password="wl" roles="普通员工"/>
<Person name="郑七" username="zq" password="zq" roles="普通员工"/>
</Org>
</Org>
<Org name="市场部"/>
<Org name="技术服务部">
<Person name="赵一" username="zy" password="zy" roles="系统管理员"/>
<Person name="蒋一三" username="jys" password="jys" roles="普通员工"/>
<Person name="沈一四" username="sys" password="sys" roles="普通员工"/>
<Person name="韩一五" username="hyw" password="hyw" roles="普通员工"/>
<Person name="杨一六" username="yyl" password="yyl" roles="普通员工,系统管理员"/>
</Org>
</Org>
<Org name="上海分公司">
<Org name="上海研发中心"></Org>
<Org name="销售部"></Org>
</Org>
<Org name="广州分公司">
<Org name="广州研发中心"></Org>
</Org>
</Organizations>
</InitDatas>
- 导入XMl语句的类:
-
- package com.wlh.oa.manager.impl;
-
- import java.util.Iterator;
- import java.util.List;
-
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
-
- import com.wlh.oa.manager.InitSystemDatas;
- import com.wlh.oa.manager.OrgManager;
- import com.wlh.oa.manager.Permission;
- import com.wlh.oa.manager.UserManager;
- import com.wlh.oa.model.ACL;
- import com.wlh.oa.model.Module;
- import com.wlh.oa.model.Organization;
- import com.wlh.oa.model.Person;
- import com.wlh.oa.model.Role;
- import com.wlh.oa.model.User;
- import com.wlh.oa.util.AbstractManager;
-
- public class InitSystemDatasImpl extends AbstractManager implements InitSystemDatas {
-
- private String file;
- private OrgManager orgManager;
- private UserManager userManager;
- public void addOrUpdateInitDatas(String xmlFilePath) {
-
- String filePath=null;
- if(xmlFilePath==null||xmlFilePath.trim().equals("")){
- filePath=file;
- }else{
- filePath=xmlFilePath;
- }
- //使用DOM4J
- try {
- Document document=new SAXReader().read(
- Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath)
- );
- //============导入有关模块的数据=========//
- importModules(document.selectNodes("//Modules/Module"), null);
- //==========导入有关Role和ACL的数据===========//
- importRoleAndAcl(document.selectNodes("//Roles/Role"));
- //导入人员和机构
- importOrgAndPerson(document.selectNodes("//Organizations/Org"),null);
- } catch (DocumentException e) {
- e.printStackTrace();
- }
-
- }
-
-
- /**
- * 导入有关模块的数据
- * @param selectNodes
- */
- private void importModules(List modules,Module parent) {
- for(Iterator iter=modules.iterator();iter.hasNext();){
- Element element=(Element) iter.next();
- Module module=new Module();
- module.setName(element.attributeValue("name"));
- module.setSn(element.attributeValue("sn"));
- module.setOrderNo(Integer.parseInt(element.attributeValue("orderNo")));
- module.setUrl(element.attributeValue("url"));
- module.setParent(parent);
- this.getHibernateTemplate().save(module);
- //迭代
- importModules(element.selectNodes("Module"),module);
-
- }
- }
-
- /**
- * 导入有关Role和ACL的数据
- * @param roles
- */
- private void importRoleAndAcl(List roles) {
- for(Iterator iter=roles.iterator();iter.hasNext();){
- Element RoleElement=(Element) iter.next();
- //生成一个对象Role
- Role role=new Role();
- role.setName(RoleElement.attributeValue("name"));
- this.getHibernateTemplate().save(role);
- //给角色授权
- List acls=RoleElement.selectNodes("Acl");
- for(Iterator iters=acls.iterator();iters.hasNext();){
- Element aclElement=(Element) iters.next();
- int moduleId=(Integer)this.getSession().createQuery("select m.id from Module m where m.name=? ").setParameter(0, aclElement.attributeValue("module")).uniqueResult();
- //生成一个ACL对象
- ACL acl=new ACL();
- acl.setPrincipalType(ACL.TYPE_ROLE);
- acl.setPrincipalId(role.getId());
- acl.setModuleId(moduleId);
- if("true".equals(aclElement.attributeValue("C"))){
- acl.setPermission(Permission.CREATE, true);
- }
- if("true".equals(aclElement.attributeValue("R"))){
- acl.setPermission(Permission.READ, true);
- }
- if("true".equals(aclElement.attributeValue("U"))){
- acl.setPermission(Permission.UPDATE, true);
- }
- if("true".equals(aclElement.attributeValue("D"))){
- acl.setPermission(Permission.DELETE, true);
- }
-
- this.getHibernateTemplate().save(acl);
- }
-
-
- }
- }
-
- /**
- * 导入结构Organization和Person
- * 备注:机构下面包含人和机构
- */
- public void importOrgAndPerson(List orgs,Organization parentOrg){
-
- //机构向下找
- for(Iterator iter=orgs.iterator();iter.hasNext();){
- Element orgElement =(Element) iter.next();
- String name=orgElement.attributeValue("name");
- Organization Org=new Organization();
- Org.setName(name);
- orgManager.addOrg(Org, parentOrg==null?0:parentOrg.getId()) ;
- //如果下面也是机构,如果是机构则迭代继续向下找
- if(orgElement.selectNodes("Org")!=null){
- importOrgAndPerson(orgElement.selectNodes("Org"),Org);
- }
- if(orgElement.selectNodes("Person")!=null){
- //如果下面是人员,将人员持久化
- List persons=orgElement.selectNodes("Person");
- System.out.println("person.size="+persons.size());
- for(Iterator pIter=persons.iterator();pIter.hasNext();){
- Element personElem=(Element) pIter.next();
- Person p=new Person();
- p.setName(personElem.attributeValue("name"));
- p.setOrg(Org);
- this.getHibernateTemplate().save(p);
-
- //给人员分配登陆帐号
- User user = new User();
- user.setUsername(personElem.attributeValue("username"));
- user.setPassword(personElem.attributeValue("password"));
- user.setPerson(p);
- getHibernateTemplate().save(user);
-
- String roles=personElem.attributeValue("roles");
- String[] roleNames = roles.split(",");
- for(int i=0;i<roleNames.length;i++){
- int roleId =
- (Integer)getSession()
- .createQuery("select r.id from Role r where r.name = ?")
- .setParameter(0, roleNames[i])
- .uniqueResult();
- userManager.addOrUpdateUserRole(user.getId(), roleId, i+1);
-
- }
-
- }
- }
- }
-
-
-
-
- }
-
-
- public String getFile() {
- return file;
- }
-
-
- public void setFile(String file) {
- this.file = file;
- }
-
-
- public void setOrgManager(OrgManager orgManager) {
- this.orgManager = orgManager;
- }
-
-
- public void setUserManager(UserManager userManager) {
- this.userManager = userManager;
- }
-
-
-
-
- }
导入XMl语句的类:
package com.wlh.oa.manager.impl;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.wlh.oa.manager.InitSystemDatas;
import com.wlh.oa.manager.OrgManager;
import com.wlh.oa.manager.Permission;
import com.wlh.oa.manager.UserManager;
import com.wlh.oa.model.ACL;
import com.wlh.oa.model.Module;
import com.wlh.oa.model.Organization;
import com.wlh.oa.model.Person;
import com.wlh.oa.model.Role;
import com.wlh.oa.model.User;
import com.wlh.oa.util.AbstractManager;
public class InitSystemDatasImpl extends AbstractManager implements InitSystemDatas {
private String file;
private OrgManager orgManager;
private UserManager userManager;
public void addOrUpdateInitDatas(String xmlFilePath) {
String filePath=null;
if(xmlFilePath==null||xmlFilePath.trim().equals("")){
filePath=file;
}else{
filePath=xmlFilePath;
}
//使用DOM4J
try {
Document document=new SAXReader().read(
Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath)
);
//============导入有关模块的数据=========//
importModules(document.selectNodes("//Modules/Module"), null);
//==========导入有关Role和ACL的数据===========//
importRoleAndAcl(document.selectNodes("//Roles/Role"));
//导入人员和机构
importOrgAndPerson(document.selectNodes("//Organizations/Org"),null);
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 导入有关模块的数据
* @param selectNodes
*/
private void importModules(List modules,Module parent) {
for(Iterator iter=modules.iterator();iter.hasNext();){
Element element=(Element) iter.next();
Module module=new Module();
module.setName(element.attributeValue("name"));
module.setSn(element.attributeValue("sn"));
module.setOrderNo(Integer.parseInt(element.attributeValue("orderNo")));
module.setUrl(element.attributeValue("url"));
module.setParent(parent);
this.getHibernateTemplate().save(module);
//迭代
importModules(element.selectNodes("Module"),module);
}
}
/**
* 导入有关Role和ACL的数据
* @param roles
*/
private void importRoleAndAcl(List roles) {
for(Iterator iter=roles.iterator();iter.hasNext();){
Element RoleElement=(Element) iter.next();
//生成一个对象Role
Role role=new Role();
role.setName(RoleElement.attributeValue("name"));
this.getHibernateTemplate().save(role);
//给角色授权
List acls=RoleElement.selectNodes("Acl");
for(Iterator iters=acls.iterator();iters.hasNext();){
Element aclElement=(Element) iters.next();
int moduleId=(Integer)this.getSession().createQuery("select m.id from Module m where m.name=? ").setParameter(0, aclElement.attributeValue("module")).uniqueResult();
//生成一个ACL对象
ACL acl=new ACL();
acl.setPrincipalType(ACL.TYPE_ROLE);
acl.setPrincipalId(role.getId());
acl.setModuleId(moduleId);
if("true".equals(aclElement.attributeValue("C"))){
acl.setPermission(Permission.CREATE, true);
}
if("true".equals(aclElement.attributeValue("R"))){
acl.setPermission(Permission.READ, true);
}
if("true".equals(aclElement.attributeValue("U"))){
acl.setPermission(Permission.UPDATE, true);
}
if("true".equals(aclElement.attributeValue("D"))){
acl.setPermission(Permission.DELETE, true);
}
this.getHibernateTemplate().save(acl);
}
}
}
/**
* 导入结构Organization和Person
* 备注:机构下面包含人和机构
*/
public void importOrgAndPerson(List orgs,Organization parentOrg){
//机构向下找
for(Iterator iter=orgs.iterator();iter.hasNext();){
Element orgElement =(Element) iter.next();
String name=orgElement.attributeValue("name");
Organization Org=new Organization();
Org.setName(name);
orgManager.addOrg(Org, parentOrg==null?0:parentOrg.getId()) ;
//如果下面也是机构,如果是机构则迭代继续向下找
if(orgElement.selectNodes("Org")!=null){
importOrgAndPerson(orgElement.selectNodes("Org"),Org);
}
if(orgElement.selectNodes("Person")!=null){
//如果下面是人员,将人员持久化
List persons=orgElement.selectNodes("Person");
System.out.println("person.size="+persons.size());
for(Iterator pIter=persons.iterator();pIter.hasNext();){
Element personElem=(Element) pIter.next();
Person p=new Person();
p.setName(personElem.attributeValue("name"));
p.setOrg(Org);
this.getHibernateTemplate().save(p);
//给人员分配登陆帐号
User user = new User();
user.setUsername(personElem.attributeValue("username"));
user.setPassword(personElem.attributeValue("password"));
user.setPerson(p);
getHibernateTemplate().save(user);
String roles=personElem.attributeValue("roles");
String[] roleNames = roles.split(",");
for(int i=0;i<roleNames.length;i++){
int roleId =
(Integer)getSession()
.createQuery("select r.id from Role r where r.name = ?")
.setParameter(0, roleNames[i])
.uniqueResult();
userManager.addOrUpdateUserRole(user.getId(), roleId, i+1);
}
}
}
}
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
public void setOrgManager(OrgManager orgManager) {
this.orgManager = orgManager;
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
}