dom4j
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>
Java代碼
- 導入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("http://Modules/Module"), null);
- //==========導入有關Role和ACL的數據===========//
- importRoleAndAcl(document.selectNodes("http://Roles/Role"));
- //導入人員和機構
- importOrgAndPerson(document.selectNodes("http://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;
- }
- }