generate xml format file

package com.huateng.netbank.batch.impl;

 

import java.io.File;

import java.io.FileWriter;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

 

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.XMLWriter;

import org.quartz.CronTrigger;

import org.quartz.SchedulerException;

 

import com.huateng.netbank.batch.IQuartzService;

import com.huateng.netbank.common.Constants;

import com.huateng.netbank.ebkrole.IRoleService;

import com.huateng.netbank.platform.base.common.tools.ContextUtil;

import com.huateng.netbank.platform.base.exception.CommonException;

import com.huateng.netbank.platform.base.exception.ServiceException;

import com.huateng.netbank.platform.common.ProcessResult;

import com.huateng.netbank.platform.service.IEBankBaseService;

import com.huateng.netbank.platform.service.impl.EBankBaseServiceImpl;

import com.huateng.netbank.vo.EbkGrantVO;

import com.huateng.netbank.vo.EbkIdentityVO;

import com.huateng.netbank.vo.EbkPersonRoleVO;

import com.huateng.netbank.vo.EbkPersonVO;

import com.huateng.netbank.vo.EbkPrincipalVO;

import com.huateng.netbank.vo.EbkQuartzTriggerVO;

import com.huateng.netbank.vo.EbkRoleVO;

import com.huateng.netbank.vo.EbkTargetVO;

import com.huateng.netbank.webapp.util.UIMessageUtil;

import com.huateng.startup.AppEnv;

 

public class QuartzFeedServiceImpl extends EBankBaseServiceImpl implements

IQuartzService {

 

private List<EbkTargetVO> roleTaget; // 角色用于的功能权限列表;

 

private List<EbkTargetVO> targetList; // 功能列表

 

@Override

public List<EbkQuartzTriggerVO> getUnActiveTrigger()

throws ServiceException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public List<EbkQuartzTriggerVO> getTriggers() throws ServiceException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public ProcessResult submitUpdate(EbkQuartzTriggerVO trigger,

EbkPersonVO person) throws ServiceException, CommonException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public ProcessResult submitEnable(EbkQuartzTriggerVO trigger,

EbkPersonVO person) throws ServiceException, CommonException,

SchedulerException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public ProcessResult submitDisable(EbkQuartzTriggerVO trigger,

EbkPersonVO person) throws ServiceException, CommonException,

SchedulerException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public CronTrigger[] setTriggerTime(CronTrigger[] triggers)

throws ServiceException {

// TODO Auto-generated method stub

return null;

}

 

@Override

public void execute() {

// TODO Auto-generated method stub

 

try {

logger.info("==定时导出人员角色权限begin==");

export();

logger.info("==定时导出人员角色权限end==");

 

} catch (Exception e) {

// TODO Auto-generated catch block

logger.error(e);

logger.error("定时导出人员角色权限异常" + e.getMessage());

}

 

}

 

/**

* 执行导出方法

* @throws Exception

*/

private void export() throws Exception {

this.targetList = getAllTarget();

 

List<UserAuthorityXMLDomain> userAuthoritylist = new ArrayList<UserAuthorityXMLDomain>();

 

IEBankBaseService service = (IEBankBaseService) ContextUtil

.getBean(IEBankBaseService.BEANID);

List<EbkIdentityVO> userList = service.findByQuery(EbkIdentityVO.class,

"getBankIdentityQuerySql", new Object[] {});

for (int i = 0; i < userList.size(); i++) {

EbkIdentityVO identity = userList.get(i);

String tlrName = identity.getLoginId();

List<EbkPersonVO> personList = service.findByQuery(

EbkPersonVO.class, "getBankPersonQuerySql",

new Object[] { identity.getObjectId() });

if (personList.size() > 0) {

EbkPersonVO person = personList.get(0);

Set<EbkPersonRoleVO> roles = person.getEbkPersonRoles();

for (Iterator<EbkPersonRoleVO> iterator = roles.iterator(); iterator

.hasNext();) {

EbkPersonRoleVO personRole = iterator.next();

Long roleId = personRole.getEbkRole();

EbkRoleVO role = (EbkRoleVO) service.findByObjectId(

EbkRoleVO.class, personRole.getEbkRole());

String privilege_container_name = role.getRoleName();

 

Set<EbkPrincipalVO> principalSet = (Set<EbkPrincipalVO>) role

.getEbkPrincipal();

List<EbkPrincipalVO> principalVOlist = new ArrayList<EbkPrincipalVO>(

principalSet);

 

EbkPrincipalVO ebkPrincipalVO = principalVOlist.get(0);

 

Set ebkGrant = ebkPrincipalVO.getEbkGrant();

 

List<EbkGrantVO> ebkGrantList = new ArrayList<EbkGrantVO>(

ebkGrant);

this.roleTaget = getRoleTarget(ebkGrantList,

this.targetList);

UserAuthorityXMLDomain uaxml = null;

 

for (int j = 0; j < this.roleTaget.size(); j++) {

EbkTargetVO target = this.roleTaget.get(j);

Long funcId = target.getObjectId();

uaxml = new UserAuthorityXMLDomain();

uaxml.setUsername(tlrName);

uaxml.setPrivilegecontainername(privilege_container_name);

uaxml.setPrivilegename(FunctionTranslationReader

.getProperty(funcId.toString()));

userAuthoritylist.add(uaxml);

}

 

}

}

}

writeXML(userAuthoritylist);

 

}

 

/**

* 创建XML对象

* @param userMap

* @param funcMap

* @param response

* @throws Exception

*/

private void createMessage(Map<String, List<String>> userMap,

Map<String, List<String>> funcMap) throws Exception {

UserAuthorityXMLDomain uaxml = null;

List<UserAuthorityXMLDomain> userAuthoritylist = new ArrayList<UserAuthorityXMLDomain>();

for (String username : userMap.keySet()) {

List<String> privilege_container_nameList = userMap.get(username);

for (String privilege_container_name : privilege_container_nameList) {

List<String> privilege_namelist = funcMap

.get(privilege_container_name);

if (null != privilege_namelist) {

for (String privilege_name : privilege_namelist) {

uaxml = new UserAuthorityXMLDomain();

uaxml.setUsername(username);

uaxml.setPrivilegecontainername(privilege_container_name);

uaxml.setPrivilegename(privilege_name);

userAuthoritylist.add(uaxml);

}

}

 

}

}

// 写XML文件

writeXML(userAuthoritylist);

}

 

/**

* 写XML文件

* @param userAuthoritylist

* @throws Exception

*/

private void writeXML(List<UserAuthorityXMLDomain> userAuthoritylist)

throws Exception {

XMLWriter writer = null;// 声明写XML的对象

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("utf-8");// 设置XML文件的编码格式

Document document = DocumentHelper.createDocument();

document.setXMLEncoding("utf-8");

Element root = document.addElement("rbam");

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");

SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMdd HH:mm");

root.addElement("file_date").setText(sdf3.format(new Date()));

root.addElement("business_date").setText(sdf.format(new Date()));

String filePath = AppEnv.getInstance().getSystemProps()

.getProperty("feed.download.url");

File file = new File(filePath);

if (!file.exists() && !file.isDirectory()) {

file.mkdirs();

}

 

String gelid = AppEnv.getInstance().getSystemProps()

.getProperty("feed.gelId"); // 系统ID,固定值,之后会提供

Date current = new Date();

Calendar cal = Calendar.getInstance();

DateFormat d1 = DateFormat.getDateInstance();

String workDate = d1.format(current);

// 开始循环

for (UserAuthorityXMLDomain userAuthority : userAuthoritylist) {

 

String username = userAuthority.getUsername() == null ? ""

: userAuthority.getUsername(); // 用户名

String privilegecontainername = userAuthority

.getPrivilegecontainername() == null ? "" : userAuthority

.getPrivilegecontainername();// 角色名-角色编码

String privilegename = userAuthority.getPrivilegename() == null ? ""

: userAuthority.getPrivilegename(); // 具体功能名-功能编码

String privilegevalue = ""; // 功能上的操作权限(如查询,执行),没有这一级别就留空

Element privilege = root.addElement("privilege");

 

privilege.addElement("gel_id").setText(gelid);

privilege.addElement("user_name").setText(username);

privilege.addElement("privilege_container_name").setText(

privilegecontainername);

privilege.addElement("privilege_name").setText(privilegename);

privilege.addElement("privilege_value").setText(privilegevalue);

}

// 结束循环

// 写入配置文件目录

// String filename = filePath + sdf2.format(new Date()) +

// ".xml";//按照当前时间生成文件名

String filename = filePath + gelid + "_" + workDate + "IBanking.xml";// 按照get_id+当前工作日期生成

writer = new XMLWriter(new FileWriter(filename), format);

writer.write(document);

writer.close();

}

 

/**

* 获得当前角色 可以访问的所有功能

* @return

*/

public List<EbkTargetVO> getRoleTarget(List<EbkGrantVO> ebkGrantList,

List<EbkTargetVO> allTarget) {

List<EbkTargetVO> targerList = new ArrayList<EbkTargetVO>();

for (EbkGrantVO grantVo : ebkGrantList) {

for (EbkTargetVO targetVo : allTarget) {

if (targetVo.getObjectId().longValue() == grantVo

.getEbkTargetfk().longValue()) {

targerList.add(targetVo);

}

}

}

 

return targerList;

}

 

/**

* 获得当前能访问的所有功能

* @param roleType

* @return

*/

public List<EbkTargetVO> getAllTarget() {

 

List<EbkTargetVO> list = null;

try {

IRoleService roleService = (IRoleService) ContextUtil

.getBean(IRoleService.BEANID);

 

String targetUserType = Constants.FUNCBANK;

 

list = roleService.findByQuery(EbkTargetVO.class,

"queryByTargetUserType", new Object[] { targetUserType });

 

} catch (Exception ex) {

            logger.error(ex);

//            UIMessageUtil.errorMessageByKey("globle.SystemError.txt");

}

return list;

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值