oa_20

oa_20:

1、创建动态表单的领域模型

FieldInput.java
FieldItem.java
FieldType.java
FlowForm.java
FormField.java
FieldInput.hbm.xml
FieldType.hbm.xml
FlowForm.hbm.xml
FormField.hbm.xml

2、修改hibernate.cfg.xml,把动态表单相关的hbm.xml文件添加上去
3、创建动态表单定义的业务逻辑接口以及实现类
FormManager.java
FormManagerImpl.java

4、修改init_datas.xml和InitSystemDataImpl.java,
添加动态表单相关数据的初始化代码

【请drop掉数据库,并重新创建数据库之后,运行InitSystemDatasTest.java,重新初始化数据】


package com.bjsxt.oa.manager;


public class InitSystemDatasTest extends BaseUnitTest {
private InitSystemDatas initSystemDatas;
public void testAddOrUpdateInitDatas() {
initSystemDatas.addOrUpdateInitDatas("init_datas.xml");
setComplete();
}

public void setInitSystemDatas(InitSystemDatas initSystemDatas) {
this.initSystemDatas = initSystemDatas;
}

}



package com.bjsxt.oa.manager.impl;

import java.util.Iterator;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.bjsxt.oa.manager.InitSystemDatas;
import com.bjsxt.oa.manager.OrgManager;
import com.bjsxt.oa.manager.Permission;
import com.bjsxt.oa.manager.SystemException;
import com.bjsxt.oa.manager.UserManager;
import com.bjsxt.oa.model.ACL;
import com.bjsxt.oa.model.FieldInput;
import com.bjsxt.oa.model.FieldType;
import com.bjsxt.oa.model.Module;
import com.bjsxt.oa.model.Organization;
import com.bjsxt.oa.model.Person;
import com.bjsxt.oa.model.Role;
import com.bjsxt.oa.model.User;

public class InitSystemDatasImpl extends AbstractManager implements
InitSystemDatas {
private static Log logger = LogFactory.getLog(InitSystemDatasImpl.class);
private String file;
private OrgManager orgManager;
private UserManager userManager;

public void addOrUpdateInitDatas(String xmlFilePath){
try {
String filePath = null;
if(xmlFilePath == null || xmlFilePath.trim().equals("")){
filePath = file;
}else{
filePath = xmlFilePath;
}

//DOM4J使用示例
Document document = new SAXReader().read(
Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath)
);

importModules( document.selectNodes("//Modules/Module") ,null);
importRoleAndAcl(document.selectNodes("//Roles/Role"));
importOrgAndPerson(document.selectNodes("//Organizations/Org"),null);

importFieldDefinition(document.selectNodes("//FieldTypes/FieldType"),document.selectNodes("//FieldInputs/FieldInput"));
} catch (Exception e) {
e.printStackTrace();
throw new SystemException("初始化数据生成有误!");
}
}


//导入模块信息
protected 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.setUrl(element.attributeValue("url"));
module.setOrderNo(Integer.parseInt(element.attributeValue("orderNo")));
module.setParent(parent);
getHibernateTemplate().save(module);
logger.info("导入模块【"+module.getName()+"】");
importModules( element.selectNodes("Module") , module);
}
}

protected void importRoleAndAcl(List roles){
for (Iterator iter = roles.iterator(); iter.hasNext();) {
Element element = (Element) iter.next();
Role role = new Role();
role.setName(element.attributeValue("name"));
getHibernateTemplate().save(role);

//给角色授权
List acls = element.selectNodes("Acl");
for (Iterator iterator = acls.iterator(); iterator.hasNext();) {
Element aclElem = (Element) iterator.next();
Integer moduleId =
(Integer)getSession()
.createQuery("select m.id from Module m where m.name = ?")
.setParameter(0, aclElem.attributeValue("module"))
.uniqueResult();
ACL acl = new ACL();
acl.setPrincipalType(ACL.TYPE_ROLE);
acl.setPrincipalId(role.getId());
acl.setModuleId(moduleId);
if("true".equals(aclElem.attributeValue("C"))){
acl.setPermission(Permission.CREATE, true);
}
if("true".equals(aclElem.attributeValue("R"))){
acl.setPermission(Permission.READ, true);
}
if("true".equals(aclElem.attributeValue("U"))){
acl.setPermission(Permission.UPDATE, true);
}
if("true".equals(aclElem.attributeValue("D"))){
acl.setPermission(Permission.DELETE, true);
}
getHibernateTemplate().save(acl);
}
}
}

protected void importOrgAndPerson(List orgs,Organization parent){
for (Iterator iter = orgs.iterator(); iter.hasNext();) {
Element element = (Element) iter.next();
Organization org = new Organization();
org.setName(element.attributeValue("name"));
orgManager.addOrg(org, parent == null?0:parent.getId());

//查找机构下的人员信息,并初始化
List persons = element.selectNodes("Person");
for (Iterator iterator = persons.iterator(); iterator.hasNext();) {
Element personElem = (Element) iterator.next();
Person person = new Person();
person.setName(personElem.attributeValue("name"));
person.setOrg(org);
getHibernateTemplate().save(person);

//给人员分配登陆帐号
User user = new User();
user.setUsername(personElem.attributeValue("username"));
user.setPassword(personElem.attributeValue("password"));
user.setPerson(person);
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);
}
}

//初始化此机构下的子机构信息
importOrgAndPerson( element.selectNodes("Org") , org);
}
}

protected void importFieldDefinition(List fieldTypes,List fieldInputs){
//首先导入fieldInputs
for (Iterator iter = fieldInputs.iterator(); iter.hasNext();) {
Element element = (Element) iter.next();
FieldInput input = new FieldInput();
input.setName(element.attributeValue("name"));
input.setTemplate(element.attributeValue("template"));
getHibernateTemplate().save(input);
}

for (Iterator iter = fieldTypes.iterator(); iter.hasNext();) {
Element element = (Element) iter.next();
FieldType type = new FieldType();
type.setName(element.attributeValue("name"));
type.setType(element.attributeValue("type"));
getHibernateTemplate().save(type);
}
}


public void setFile(String file) {
this.file = file;
}


public void setOrgManager(OrgManager orgManager) {
this.orgManager = orgManager;
}


public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值