///**
// *
// */
//package com.sinopec.siam.provisioning.handle;
//
//import java.text.SimpleDateFormat;
//import java.util.List;
//
//import com.sinopec.siam.apache.log4j.Logger;
//import com.sinopec.siam.provisioning.entity.Attribute;
//import com.sinopec.siam.provisioning.entity.EventType;
//import com.sinopec.siam.provisioning.entity.ProvisioningEvent;
//import com.sinopec.siam.provisioning.entity.ProvisioningEvents;
//import com.sinopec.siam.provisioning.entity.TargetEntity;
//import com.sinopec.siam.provisioning.entity.TargetSubject;
//import com.sinopec.siam.provisioning.listener.ProvisioningEventListener;
//import com.sinopec.siam.provisioning.timer.ProvisioningEventSubscriberTimer;
//import com.ruoyi.common.core.domain.entity.SysDept;
//import com.ruoyi.common.core.domain.entity.SysUser;
//
///**
// * 默认监听事件处理实现类<br>
// * 接口默认将事件XML转换成ProvisioningEvent对象。
// *
// * @author zhaodonglu
// * @since 2012-7-23 下午2:00:17
// */
//public class SimpleProvisioningEventListener implements ProvisioningEventListener {
//
//	private static Logger log = Logger.getLogger(SimpleProvisioningEventListener.class);
//
////    @Autowired
////    private ISysUserService userService;
////    @Autowired
////    private ISysDeptService deptService;
//
//
//	/**
//	 *
//	 */
//	public SimpleProvisioningEventListener() {
//		super();
//	}
//
//	public void process(ProvisioningEvents events) {
//
//		// TODO Auto-generated method stub
//		List<ProvisioningEvent> list = events.getEvent();
//		log.info("list.size===================" + list.size());
//		System.out.println("list.size===================" + list.size());
//		for (int i = 0; i < list.size(); i++) {
//			ProvisioningEvent event = new ProvisioningEvent();
//			event = list.get(i);
//			SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//			log.info("监听到事件内容如下:");
//			log.info("事件流水号:" + event.getEventId());
//			if (event.getOccuredTimestamp() == null) {
//				log.info("事件发生时间:null");
//			} else {
//				log.info("事件发生时间:" + time.format(event.getOccuredTimestamp().getTime()));
//			}
//			log.info("事件类型:" + event.getEventType());
//
//			/**
//			 * 应用账号创建
//			 */
//			if (EventType.ACCOUNT_CREATED.equals(event.getEventType())) {
//
//				String account_uid = "";//应用账号
//				String uid = "";//用户账号
//				String app_name = "";//应用名称
//				String cn = "";//姓名
//				String ou = "";//部门
//				String employeenumber = "";//员工编码
//
//				TargetEntity applicationEntity = event.getApplication();
//				if (applicationEntity != null) {
//					TargetSubject applicationSubject = applicationEntity.getSubject();
//					app_name = applicationSubject.getSubject();
//					log.info("应用系统:" + app_name);
//				}
//
//				TargetEntity personEntity = event.getPerson();
//				if (personEntity != null) {
//					TargetSubject personSubject = personEntity.getSubject();
//					uid = personSubject.getSubject();
//					log.info("用户账号:" + uid);
//				}
//
//				TargetEntity targetEntity = event.getTargetEntity();
//				if (targetEntity != null) {
//					TargetSubject targetSubject = targetEntity.getSubject();
//					account_uid = targetSubject.getSubject();
//					log.info("应用账号:" + account_uid);
//					log.info("应用账号属性集合:");
//					List<Attribute> attributes = targetEntity.getAttributes();
//					for (Attribute attribute : attributes) {
//						if (attribute.getName().equals("cn")) {
//							cn = (String) attribute.getValues().get(0);
//							log.info("姓名:" + cn);
//						}
//						if (attribute.getName().equals("employeenumber")) {
//							employeenumber = (String) attribute.getValues().get(0);
//							log.info("员工编码:" + employeenumber);
//						}
//						if (attribute.getName().equals("ou")) {
//							ou = (String) attribute.getValues().get(0);
//							log.info("部门:" + ou);
//						}
//					}
//					// log.info(attribute);
//					// 其他属性取值，自己编写代码
//				}
//
//				//新建账号
//				SysUser u = new SysUser();
//				u.setLoginName(uid);
//				u.setUserName(cn);
//                u.setDeptName(ou);
////                userService.insertUser(u);
//
//			}
//			/**
//			 * 应用账号修改
//			 */
//			if (EventType.ACCOUNT_MODIFIED.equals(event.getEventType())) {
//
//				String account_uid = "";//应用账号
//				String uid = "";//用户账号
//				String app_name = "";//应用名称
//				String cn = "";//姓名
//				String ou = "";//部门
//				String employeenumber = "";//员工编码
//
//				TargetEntity applicationEntity = event.getApplication();
//				if (applicationEntity != null) {
//					TargetSubject applicationSubject = applicationEntity.getSubject();
//					app_name = applicationSubject.getSubject();
//					log.info("应用系统:" + app_name);
//				}
//
//				TargetEntity personEntity = event.getPerson();
//				if (personEntity != null) {
//					TargetSubject personSubject = personEntity.getSubject();
//					uid = personSubject.getSubject();
//					log.info("用户账号:" + uid);
//				}
//				TargetEntity targetEntity = event.getTargetEntity();
//				if (targetEntity != null) {
//					TargetSubject targetSubject = targetEntity.getSubject();
//					account_uid = targetSubject.getSubject();
//					log.info("应用账号:" + account_uid);
//					log.info("应用账号属性集合:");
//					List<Attribute> attributes = targetEntity.getAttributes();
//					for (Attribute attribute : attributes) {
//						if (attribute.getName().equals("cn")) {
//							cn = (String) attribute.getValues().get(0);
//							log.info("姓名:" + cn);
//						}
//						if (attribute.getName().equals("employeenumber")) {
//							employeenumber = (String) attribute.getValues().get(0);
//							log.info("员工编码:" + employeenumber);
//						}
//						if (attribute.getName().equals("ou")) {
//							ou = (String) attribute.getValues().get(0);
//							log.info("部门:" + ou);
//						}
//					}
//					// log.info(attribute);
//					// 其他属性取值，自己编写代码
//				}
//
//                //修改账号
//                SysUser u = new SysUser();
//                u.setLoginName(uid);
//                u.setUserName(cn);
//                u.setDeptName(ou);
////                userService.updateUser(u);
//			}
//			/**
//			 * 应用账号禁用
//			 */
//			if (EventType.ACCOUNT_DISABLED.equals(event.getEventType())) {
//
//				String account_uid = "";//应用账号
//				String uid = "";//用户账号
//				String app_name = "";//应用名称
//
//				TargetEntity applicationEntity = event.getApplication();
//				if (applicationEntity != null) {
//					TargetSubject applicationSubject = applicationEntity.getSubject();
//					app_name = applicationSubject.getSubject();
//					log.info("应用系统:" + app_name);
//				}
//				TargetEntity personEntity = event.getPerson();
//				if (personEntity != null) {
//					TargetSubject personSubject = personEntity.getSubject();
//					uid = personSubject.getSubject();
//					log.info("用户账号:" + uid);
//				}
//								TargetEntity targetEntity = event.getTargetEntity();
//				if (targetEntity != null) {
//					TargetSubject targetSubject = targetEntity.getSubject();
//					account_uid = targetSubject.getSubject();
//					log.info("应用账号:" + account_uid);
//				}
//				//禁用账号
//                SysUser u = new SysUser();
//                u.setLoginName(uid);
//                u.setDelFlag("2");
////                userService.updateUser(u);
//
//			}
//			/**
//			 * 应用账号启用
//			 */
//			if (EventType.ACCOUNT_ENABLED.equals(event.getEventType())) {
//
//				String account_uid = "";//应用账号
//				String uid = "";//用户账号
//				String app_name = "";//应用名称
//
//				TargetEntity applicationEntity = event.getApplication();
//				if (applicationEntity != null) {
//					TargetSubject applicationSubject = applicationEntity.getSubject();
//					app_name = applicationSubject.getSubject();
//					log.info("应用系统:" + app_name);
//				}
//				TargetEntity personEntity = event.getPerson();
//				if (personEntity != null) {
//					TargetSubject personSubject = personEntity.getSubject();
//					uid = personSubject.getSubject();
//					log.info("用户账号:" + uid);
//				}
//				TargetEntity targetEntity = event.getTargetEntity();
//				if (targetEntity != null) {
//					TargetSubject targetSubject = targetEntity.getSubject();
//					account_uid = targetSubject.getSubject();
//					log.info("应用账号:" + account_uid);
//				}
//                //启用账号
//                SysUser u = new SysUser();
//                u.setLoginName(uid);
//                u.setDelFlag("0");
////                userService.updateUser(u);
//			}
//			/**
//			 * 应用账号删除
//			 */
//			if (EventType.ACCOUNT_DELETED.equals(event.getEventType())) {
//
//				String account_uid = "";//应用账号
//				String uid = "";//用户账号
//				String app_name = "";//应用名称
//
//				TargetEntity applicationEntity = event.getApplication();
//				if (applicationEntity != null) {
//					TargetSubject applicationSubject = applicationEntity.getSubject();
//					app_name = applicationSubject.getSubject();
//					log.info("应用系统:" + app_name);
//				}
//				TargetEntity personEntity = event.getPerson();
//				if (personEntity != null) {
//					TargetSubject personSubject = personEntity.getSubject();
//					uid = personSubject.getSubject();
//					log.info("用户账号:" + uid);
//				}
//				TargetEntity targetEntity = event.getTargetEntity();
//				if (targetEntity != null) {
//					TargetSubject targetSubject = targetEntity.getSubject();
//					account_uid = targetSubject.getSubject();
//					log.info("应用账号:" + account_uid);
//				}
//                //删除账号
//                SysUser u = new SysUser();
//                u.setLoginName(uid);
//                u.setDelFlag("-1");
////                userService.updateUser(u);
//			}
//			/**
//			 * 组织机构创建
//			 */
//			if (EventType.ORGUNIT_CREATED.equals(event.getEventType())) {
//
//				String ou = "";//组织编码
//				String cn = "";//组织名称
//				String spOrgLevel = "";//组织层级
//				String spSupervisoryDepartment = "";//组织上级编码
//				String spOuType = "";//组织类型,0:HR机构,1:非HR机构
//
//				TargetEntity originalEntity = event.getTargetEntity();
//				if (originalEntity != null) {
//					TargetSubject originalSubject = originalEntity.getSubject();
//					ou= originalSubject.getSubject();
//					log.info("组织编码:" + ou);
//					List<Attribute> originalAttributes = originalEntity.getAttributes();
//					log.info("组织机构属性集合:");
//					for (Attribute attribute : originalAttributes) {
//						if(attribute.getName().equals("cn")){
//							cn = (String) attribute.getValues().get(0);
//							log.info("组织名称:"+cn);
//						}
//						if(attribute.getName().equals("spOrgLevel")){
//							spOrgLevel = (String) attribute.getValues().get(0);
//							log.info("组织层级:"+spOrgLevel);
//						}
//						if(attribute.getName().equals("spSupervisoryDepartment")){
//							spSupervisoryDepartment = (String) attribute.getValues().get(0);
//							log.info("组织上级编码:"+spSupervisoryDepartment);
//						}
//						if(attribute.getName().equals("spOuType")){
//							spOuType = (String) attribute.getValues().get(0);
//							log.info("组织类型:"+spOuType);
//						}
//
//						//log.info(attribute);
//						// 其他属性取值，自己编写代码
//					}
//					//添加
//                    SysDept d = new SysDept();
//					d.setOuid(ou);
//					d.setDeptName(cn);
//					d.setParentName(spSupervisoryDepartment);
//					d.setStatus("0");
////					deptService.insertDept(d);
//				}
//			}
//			/**
//			 * 组织机构修改
//			 */
//			if (EventType.ORGUNIT_MODIFIED.equals(event.getEventType())) {
//
//				String ou = "";//组织编码
//				String cn = "";//组织名称
//				String spOrgLevel = "";//组织层级
//				String spSupervisoryDepartment = "";//组织上级编码
//				String spOuType = "";//组织类型,0:HR机构,1:非HR机构
//
//				TargetEntity originalEntity = event.getTargetEntity();
//				if (originalEntity != null) {
//					TargetSubject originalSubject = originalEntity.getSubject();
//					ou = originalSubject.getSubject();
//					log.info("组织编码:" + ou);
//					List<Attribute> originalAttributes = originalEntity.getAttributes();
//					log.info("组织机构属性集合:");
//					for (Attribute attribute : originalAttributes) {
//						if(attribute.getName().equals("cn")){
//							cn = (String) attribute.getValues().get(0);
//							log.info("组织名称:"+cn);
//						}
//						if(attribute.getName().equals("spOrgLevel")){
//							spOrgLevel = (String) attribute.getValues().get(0);
//							log.info("组织层级:"+spOrgLevel);
//						}
//						if(attribute.getName().equals("spSupervisoryDepartment")){
//							spSupervisoryDepartment = (String) attribute.getValues().get(0);
//							log.info("组织上级编码:"+spSupervisoryDepartment);
//						}
//						if(attribute.getName().equals("spOuType")){
//							spOuType = (String) attribute.getValues().get(0);
//							log.info("组织类型:"+spOuType);
//						}
//
//						//log.info(attribute);
//						// 其他属性取值，自己编写代码
//					}
//                    //修改
//                    SysDept d = new SysDept();
//                    d.setOuid(ou);
//                    d.setDeptName(cn);
//                    d.setParentName(spSupervisoryDepartment);
////                    deptService.updateDept(d);
//				}
//			}
//			/**
//			 * 组织机构删除
//			 */
//			if (EventType.ORGUNIT_DELETED.equals(event.getEventType())) {
//
//				String ou = "";//组织编码
//				String cn = "";//组织名称
//				String spOrgLevel = "";//组织层级
//				String spSupervisoryDepartment = "";//组织上级编码
//				String spOuType = "";//组织类型,0:HR机构,1:非HR机构
//
//				TargetEntity originalEntity = event.getTargetEntity();
//				if (originalEntity != null) {
//					TargetSubject originalSubject = originalEntity.getSubject();
//					ou = originalSubject.getSubject();
//					log.info("组织编码:" + ou);
//					List<Attribute> originalAttributes = originalEntity.getAttributes();
//					log.info("组织机构属性集合:");
//					for (Attribute attribute : originalAttributes) {
//						if(attribute.getName().equals("cn")){
//							cn = (String) attribute.getValues().get(0);
//							log.info("组织名称:"+cn);
//						}
//						if(attribute.getName().equals("spOrgLevel")){
//							spOrgLevel = (String) attribute.getValues().get(0);
//							log.info("组织层级:"+spOrgLevel);
//						}
//						if(attribute.getName().equals("spSupervisoryDepartment")){
//							spSupervisoryDepartment = (String) attribute.getValues().get(0);
//							log.info("组织上级编码:"+spSupervisoryDepartment);
//						}
//						if(attribute.getName().equals("spOuType")){
//							spOuType = (String) attribute.getValues().get(0);
//							log.info("组织类型:"+spOuType);
//						}
//
//						//log.info(attribute);
//						// 其他属性取值，自己编写代码
//					}
//                    //删除
//                    SysDept d = new SysDept();
//                    d.setOuid(ou);
//                    d.setStatus("-1");
////                    deptService.updateDept(d);
//				}
//			}
//		}
//	}
//
//	public static void main(String[] args) {
//		ProvisioningEventSubscriberTimer provisioningEventSubscriberTimer = ProvisioningEventSubscriberTimer
//				.getInstance(new SimpleProvisioningEventListener());
//		try {
//			provisioningEventSubscriberTimer.start();
//		} catch (IllegalThreadStateException e) {
//		}
//	}
//
//}
