package com.norteksoft.product.api.utils; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import org.hibernate.proxy.HibernateProxy; import org.springframework.util.Assert; import com.norteksoft.acs.entity.organization.UserInfo; import com.norteksoft.product.api.entity.BusinessSystem; import com.norteksoft.product.api.entity.DataDictionary; import com.norteksoft.product.api.entity.Department; import com.norteksoft.product.api.entity.FormView; import com.norteksoft.product.api.entity.ListView; import com.norteksoft.product.api.entity.Menu; import com.norteksoft.product.api.entity.Option; import com.norteksoft.product.api.entity.OptionGroup; import com.norteksoft.product.api.entity.Role; import com.norteksoft.product.api.entity.User; import com.norteksoft.product.api.entity.WorkflowInstance; import com.norteksoft.product.api.entity.WorkflowTask; import com.norteksoft.product.api.entity.Workgroup; import com.norteksoft.product.orm.Page; import edu.emory.mathcs.backport.java.util.Arrays; public class BeanUtil { /** * UserList转换成UserModelList */ public static List<User> turnToModelUserList(List<com.norteksoft.acs.entity.organization.User> list) { if(list==null) return null; List<User> result = new ArrayList<User>(); User userModel = null; for(com.norteksoft.acs.entity.organization.User oldUser : list){ userModel = new User(); UserInfo userInfo = oldUser.getUserInfo(); //user userinfo赋值顺序不能颠倒,因为id赋值的原因 copy(userModel,oldUser); copy(userModel,userInfo); userModel.setUserInfoId(userInfo.getId()); result.add(userModel); } return result; } /** * UserList转换成UserModelList */ public static List<User> turnToModelUserList1(List<Object[]> list) { if(list==null) return null; List<User> result = new ArrayList<User>(); User userModel = null; for(Object[] userObj : list){ com.norteksoft.acs.entity.organization.User oldUser = (com.norteksoft.acs.entity.organization.User) userObj[0]; UserInfo oldUserInfo = (UserInfo) userObj[1]; userModel = new User(); copy(userModel,oldUser); copy(userModel,oldUserInfo); userModel.setUserInfoId(oldUserInfo.getId()); result.add(userModel); } return result; } /** * UserSet转换成UserModleSet */ @SuppressWarnings("unchecked") public static Set<User> turnToModelUserSet(Set<com.norteksoft.acs.entity.organization.User> oldUserSet ) { if(oldUserSet==null) return null; Set<User> result = new HashSet<User>(); User userModel = null; Iterator it = oldUserSet.iterator(); while(it.hasNext()){ com.norteksoft.acs.entity.organization.User oldUser = (com.norteksoft.acs.entity.organization.User)it.next(); userModel = new User(); copy(userModel,oldUser); result.add(userModel); } return result; } /** * User转换成UserModel */ public static User turnToModelUser(com.norteksoft.acs.entity.organization.User oldUser ) { if(oldUser==null) return null; User userModel = new User(); UserInfo oldUserInfo = oldUser.getUserInfo(); copy(userModel,oldUser); copy(userModel,oldUserInfo); userModel.setUserInfoId(oldUserInfo.getId()); return userModel; } /** * UserModel转换成User */ public static com.norteksoft.acs.entity.organization.User turnToUser(User userModel ) { if(userModel==null)return null; com.norteksoft.acs.entity.organization.User user = new com.norteksoft.acs.entity.organization.User(); copy(user,userModel); UserInfo userInfo = new UserInfo(); copy(userInfo,userModel); userInfo.setId(userModel.getUserInfoId()); List<UserInfo> userInfoList = new ArrayList<UserInfo>(); userInfoList.add(userInfo); user.setUserInfos(userInfoList); return user; } /** * UserModelList转换成UserList */ public static List<com.norteksoft.acs.entity.organization.User> turnToUserList(List<User> list) { if(list==null) return null; List<com.norteksoft.acs.entity.organization.User> result = new ArrayList<com.norteksoft.acs.entity.organization.User>(); com.norteksoft.acs.entity.organization.User user = null; for(User userModel : list){ user = new com.norteksoft.acs.entity.organization.User(); copy(user,userModel); UserInfo userInfo = new UserInfo(); copy(userInfo,userModel); userInfo.setId(userModel.getUserInfoId()); List<UserInfo> userInfoList = new ArrayList<UserInfo>(); userInfoList.add(userInfo); user.setUserInfos(userInfoList); result.add(user); } return result; } /** * Task转换成TaskModel */ public static WorkflowTask turnToModelTask(com.norteksoft.task.entity.WorkflowTask oldTask ) { if(oldTask==null) return null; WorkflowTask taskModel = new WorkflowTask(); copy(taskModel,oldTask); return taskModel; } /** * TaskModel转换成Task */ public static com.norteksoft.task.entity.WorkflowTask turnToTask(WorkflowTask taskModel ) { if(taskModel==null) return null; com.norteksoft.task.entity.WorkflowTask oldTask = new com.norteksoft.task.entity.WorkflowTask(); copy(oldTask,taskModel); return oldTask; } /** * TaskList转换成TaskModelList */ public static List<WorkflowTask> turnToModelTaskList(List<com.norteksoft.task.entity.WorkflowTask> oldTaskList ) { if(oldTaskList==null) return null; List<WorkflowTask> result = new ArrayList<WorkflowTask>(); WorkflowTask taskModel = null; for(com.norteksoft.task.entity.WorkflowTask oldTask:oldTaskList){ taskModel = new WorkflowTask(); copy(taskModel,oldTask); result.add(taskModel); } return result; } /** * TaskModelPage转换成TaskPage */ public static Page<com.norteksoft.task.entity.WorkflowTask> turnToTaskPage(Page<WorkflowTask> modelTaskPage ) { if(modelTaskPage==null) return null; Page<com.norteksoft.task.entity.WorkflowTask> result = new Page<com.norteksoft.task.entity.WorkflowTask>(); com.norteksoft.task.entity.WorkflowTask oldTask = null; List<com.norteksoft.task.entity.WorkflowTask> oldTaskList = new ArrayList<com.norteksoft.task.entity.WorkflowTask>(); for(WorkflowTask modelTask:modelTaskPage.getResult()){ oldTask = new com.norteksoft.task.entity.WorkflowTask(); copy(oldTask,modelTask); oldTaskList.add(oldTask); } result.setResult(oldTaskList); result.setOrder(modelTaskPage.getOrder()); result.setOrderBy(modelTaskPage.getOrderBy()); result.setPageNo(modelTaskPage.getPageNo()); result.setPageSize(modelTaskPage.getPageSize()); result.setTotalCount(modelTaskPage.getTotalCount()); return result; } /** * BusinessSystem转换成BusinessSystemModle */ public static BusinessSystem turnToModelBusinessSystem(com.norteksoft.acs.entity.authorization.BusinessSystem oldBusinessSystem ) { if(oldBusinessSystem==null) return null; BusinessSystem businessSystemModle = new BusinessSystem(); copy(businessSystemModle,oldBusinessSystem); return businessSystemModle; } /** * BusinessSystemList转换成BusinessSystemModleList */ public static List<BusinessSystem> turnToModelBusinessSystemList(List<com.norteksoft.acs.entity.authorization.BusinessSystem> oldBusinessSystemList ) { if(oldBusinessSystemList==null) return null; List<BusinessSystem> result = new ArrayList<BusinessSystem>(); BusinessSystem businessSystemModel = null; for(com.norteksoft.acs.entity.authorization.BusinessSystem oldBusinessSystem:oldBusinessSystemList){ businessSystemModel = new BusinessSystem(); copy(businessSystemModel,oldBusinessSystem); result.add(businessSystemModel); } return result; } /** * Role转换成RoleModle */ public static Role turnToModelRole(com.norteksoft.acs.entity.authorization.Role oldRole ) { if(oldRole==null) return null; Role RoleModle = new Role(); copy(RoleModle,oldRole); return RoleModle; } /** * RoleList转换成RoleModleList */ public static List<Role> turnToModelRoleList(List<com.norteksoft.acs.entity.authorization.Role> oldRoleList ) { if(oldRoleList==null) return null; List<Role> result = new ArrayList<Role>(); Role roleModel = null; for(com.norteksoft.acs.entity.authorization.Role oldTask:oldRoleList){ roleModel = new Role(); copy(roleModel,oldTask); result.add(roleModel); } return result; } /** * RoleSet转换成RoleModleSet */ @SuppressWarnings("unchecked") public static Set<Role> turnToModelRoleSet(Set<com.norteksoft.acs.entity.authorization.Role> oldRoleSet ) { if(oldRoleSet==null) return null; Set<Role> result = new HashSet<Role>(); Role roleModel = null; Iterator it = oldRoleSet.iterator(); while(it.hasNext()){ com.norteksoft.acs.entity.authorization.Role oldRole = (com.norteksoft.acs.entity.authorization.Role)it.next(); roleModel = new Role(); copy(roleModel,oldRole); result.add(roleModel); } return result; } /** * DepartmentSet转换成DepartmentModleSet */ @SuppressWarnings("unchecked") public static Set<Department> turnToModelDepartmentSet(Set<com.norteksoft.acs.entity.organization.Department> oldDepartmentSet ) { if(oldDepartmentSet==null) return null; Set<Department> result = new HashSet<Department>(); Department departmentModel = null; Iterator it = oldDepartmentSet.iterator(); while(it.hasNext()){ com.norteksoft.acs.entity.organization.Department oldDepartment = (com.norteksoft.acs.entity.organization.Department)it.next(); departmentModel = new Department(); copy(departmentModel,oldDepartment); result.add(departmentModel); } return result; } /** * DepartmentList转换成DepartmentModleList */ public static List<Department> turnToModelDepartmentList(List<com.norteksoft.acs.entity.organization.Department> oldDepartmentList ) { if(oldDepartmentList==null) return null; List<Department> result = new ArrayList<Department>(); Department departmentModel = null; for(com.norteksoft.acs.entity.organization.Department oldDepartment:oldDepartmentList){ departmentModel = new Department(); copy(departmentModel,oldDepartment); result.add(departmentModel); } return result; } /** * DepartmentModleList转换成DepartmentList */ public static List<com.norteksoft.acs.entity.organization.Department> turnToDepartmentList(List<Department> departmentModleList ) { if(departmentModleList==null) return null; List<com.norteksoft.acs.entity.organization.Department> result = new ArrayList<com.norteksoft.acs.entity.organization.Department>(); com.norteksoft.acs.entity.organization.Department oldDepartment = null; for(Department departmentModle:departmentModleList){ oldDepartment = new com.norteksoft.acs.entity.organization.Department(); copy(oldDepartment,departmentModle); result.add(oldDepartment); } return result; } /** * Department转换成DepartmentModle */ public static Department turnToModelDepartment(com.norteksoft.acs.entity.organization.Department oldDepartment ) { if(oldDepartment==null) return null; Department departmentModle = new Department(); copy(departmentModle,oldDepartment); return departmentModle; } /** * DepartmentModel转换成Department */ public static com.norteksoft.acs.entity.organization.Department turnToDepartment(Department departmentModel ) { if(departmentModel==null) return null; com.norteksoft.acs.entity.organization.Department oldDepartment = new com.norteksoft.acs.entity.organization.Department(); copy(oldDepartment,departmentModel); return oldDepartment; } /** * Workgroup转换成WorkgroupModle */ public static Workgroup turnToModelWorkgroup(com.norteksoft.acs.entity.organization.Workgroup oldWorkgroup ) { if(oldWorkgroup==null) return null; Workgroup workgroupModle = new Workgroup(); copy(workgroupModle,oldWorkgroup); return workgroupModle; } /** * WorkgroupModle转换成Workgroup */ public static com.norteksoft.acs.entity.organization.Workgroup turnToWorkgroup(Workgroup workgroupModel ) { if(workgroupModel==null) return null; com.norteksoft.acs.entity.organization.Workgroup oldWorkgroup = new com.norteksoft.acs.entity.organization.Workgroup(); copy(oldWorkgroup,workgroupModel); return oldWorkgroup; } /** * WorkgroupList转换成WorkgroupModleList */ public static List<Workgroup> turnToModelWorkgroupList(List<com.norteksoft.acs.entity.organization.Workgroup> oldWorkgroupList ) { if(oldWorkgroupList==null) return null; List<Workgroup> result = new ArrayList<Workgroup>(); Workgroup workgroupModel = null; for(com.norteksoft.acs.entity.organization.Workgroup oldWorkgroup:oldWorkgroupList){ workgroupModel = new Workgroup(); copy(workgroupModel,oldWorkgroup); result.add(workgroupModel); } return result; } /** * WorkgroupModleList转换成WorkgroupList */ public static List<com.norteksoft.acs.entity.organization.Workgroup> turnToWorkgroupList(List<Workgroup> workgroupModleList ) { if(workgroupModleList==null) return null; List<com.norteksoft.acs.entity.organization.Workgroup> result = new ArrayList<com.norteksoft.acs.entity.organization.Workgroup>(); com.norteksoft.acs.entity.organization.Workgroup oldWorkgroup = null; for(Workgroup workgroupModle:workgroupModleList){ oldWorkgroup = new com.norteksoft.acs.entity.organization.Workgroup(); copy(oldWorkgroup,workgroupModle); result.add(oldWorkgroup); } return result; } /** * ListView转换成ListViewModle */ public static ListView turnToModelListView(com.norteksoft.mms.form.entity.ListView oldListView ) { if(oldListView==null) return null; ListView listViewModle = new ListView(); copy(listViewModle,oldListView); return listViewModle; } /** * ListViewModle转换成ListView */ public static com.norteksoft.mms.form.entity.ListView turnToListView(ListView listViewModel ) { if(listViewModel==null) return null; com.norteksoft.mms.form.entity.ListView oldListView = new com.norteksoft.mms.form.entity.ListView(); copy(oldListView,listViewModel); return oldListView; } /** * ListViewList转换成ListViewModleList */ public static List<ListView> turnToModelListViewList(List<com.norteksoft.mms.form.entity.ListView> oldListViewList ) { if(oldListViewList==null) return null; List<ListView> result = new ArrayList<ListView>(); ListView listViewModel = null; for(com.norteksoft.mms.form.entity.ListView oldListView:oldListViewList){ listViewModel = new ListView(); copy(listViewModel,oldListView); result.add(listViewModel); } return result; } /** * FormView转换成FormViewModle */ public static FormView turnToModelFormView(com.norteksoft.mms.form.entity.FormView oldFormView ) { if(oldFormView==null) return null; FormView formViewModle = new FormView(); copy(formViewModle,oldFormView); return formViewModle; } /** * FormViewModle转换成FormView */ public static com.norteksoft.mms.form.entity.FormView turnToFormView(FormView formViewModel ) { if(formViewModel==null) return null; com.norteksoft.mms.form.entity.FormView oldFormView = new com.norteksoft.mms.form.entity.FormView(); copy(oldFormView,formViewModel); return oldFormView; } /** * Menu转换成MenuModle */ public static Menu turnToModelMenu(com.norteksoft.mms.module.entity.Menu oldMenu ) { if(oldMenu==null) return null; Menu menuModle = new Menu(); copy(menuModle,oldMenu); return menuModle; } /** * MenuList转换成MenuModleList */ public static List<Menu> turnToModelMenuList(List<com.norteksoft.mms.module.entity.Menu> oldMenuList ) { if(oldMenuList==null) return null; List<Menu> result = new ArrayList<Menu>(); Menu menuModel = null; for(com.norteksoft.mms.module.entity.Menu oldMenu:oldMenuList){ menuModel = new Menu(); copy(menuModel,oldMenu); result.add(menuModel); } return result; } /** * OptionGroup转换成OptionGroupModle */ public static OptionGroup turnToModelOptionGroup(com.norteksoft.bs.options.entity.OptionGroup oldOptionGroup ) { if(oldOptionGroup==null) return null; OptionGroup optionGroupModle = new OptionGroup(); copy(optionGroupModle,oldOptionGroup); return optionGroupModle; } /** * OptionGroupList转换成OptionGroupModleList */ public static List<OptionGroup> turnToModelOptionGroupList(List<com.norteksoft.bs.options.entity.OptionGroup> oldOptionGroupList ) { if(oldOptionGroupList==null) return null; List<OptionGroup> result = new ArrayList<OptionGroup>(); OptionGroup optionGroupModel = null; for(com.norteksoft.bs.options.entity.OptionGroup oldOptionGroup:oldOptionGroupList){ optionGroupModel = new OptionGroup(); copy(optionGroupModel,oldOptionGroup); result.add(optionGroupModel); } return result; } /** * Option转换成OptionModle */ public static Option turnToModelOption(com.norteksoft.bs.options.entity.Option oldOption ) { if(oldOption==null) return null; Option optionModle = new Option(); copy(optionModle,oldOption); return optionModle; } /** * OptionModle转换成Option */ public static com.norteksoft.bs.options.entity.Option turnToListView(Option optionModel ) { if(optionModel==null) return null; com.norteksoft.bs.options.entity.Option oldOption = new com.norteksoft.bs.options.entity.Option(); copy(oldOption,optionModel); return oldOption; } /** * OptionList转换成OptionModleList */ public static List<Option> turnToModelOptionList(List<com.norteksoft.bs.options.entity.Option> oldOptionList ) { if(oldOptionList==null) return null; List<Option> result = new ArrayList<Option>(); Option optionModel = null; for(com.norteksoft.bs.options.entity.Option oldOption:oldOptionList){ optionModel = new Option(); copy(optionModel,oldOption); result.add(optionModel); } return result; } /** * OptionModleList转换成OptionList */ public static List<com.norteksoft.bs.options.entity.Option> turnToOptionList(List<Option> optionModleList ) { if(optionModleList==null) return null; List<com.norteksoft.bs.options.entity.Option> result = new ArrayList<com.norteksoft.bs.options.entity.Option>(); com.norteksoft.bs.options.entity.Option oldOption = null; for(Option optionModle:optionModleList){ oldOption = new com.norteksoft.bs.options.entity.Option(); copy(oldOption,optionModle); result.add(oldOption); } return result; } /** * DataDictionary转换成DataDictionaryModle */ public static DataDictionary turnToModelDataDictionary(com.norteksoft.wf.engine.entity.DataDictionary oldDataDictionary ) { if(oldDataDictionary==null) return null; DataDictionary dataDictionaryModle = new DataDictionary(); copy(dataDictionaryModle,oldDataDictionary); return dataDictionaryModle; } /** * DataDictionaryList转换成DataDictionaryModleList */ public static List<DataDictionary> turnToModelDataDictionaryList(List<com.norteksoft.wf.engine.entity.DataDictionary > oldDataDictionaryList ) { if(oldDataDictionaryList==null) return null; List<DataDictionary> result = new ArrayList<DataDictionary>(); DataDictionary dataDictionaryModel = null; for(com.norteksoft.wf.engine.entity.DataDictionary oldOption:oldDataDictionaryList){ dataDictionaryModel = new DataDictionary(); copy(dataDictionaryModel,oldOption); result.add(dataDictionaryModel); } return result; } /** * WorkflowInstance转换成WorkflowInstanceModle */ public static WorkflowInstance turnToModelWorkflowInstance(com.norteksoft.wf.engine.entity.WorkflowInstance oldWorkflowInstance ) { if(oldWorkflowInstance==null) return null; WorkflowInstance workflowInstanceModle = new WorkflowInstance(); copy(workflowInstanceModle,oldWorkflowInstance); return workflowInstanceModle; } /** * WorkflowInstanceModle转换成WorkflowInstance */ public static com.norteksoft.wf.engine.entity.WorkflowInstance turnToWorkflowInstance(WorkflowInstance workflowInstanceModel ) { if(workflowInstanceModel==null) return null; com.norteksoft.wf.engine.entity.WorkflowInstance oldWorkflowInstance = new com.norteksoft.wf.engine.entity.WorkflowInstance(); copy(oldWorkflowInstance,workflowInstanceModel); return oldWorkflowInstance; } /** * 把实体tar的属性值复制到destini相对应的属性 */ @SuppressWarnings("unchecked") public static void copy(Object destini, Object tar ){ try { try { if(tar!=null){ Map modelDescribe = BeanUtils.describe(destini); Object target = null; if(tar instanceof HibernateProxy){ HibernateProxy proxy = (HibernateProxy)tar; target = proxy.getHibernateLazyInitializer().getImplementation(); }else{ target = tar; } List<Field> userFields = null; if(target.getClass().getSuperclass()==Object.class){ userFields = Arrays.asList(target.getClass().getDeclaredFields()); }else{ userFields = getAllFieldsIncludeSuperClass(target.getClass()); } for(Field field : userFields){ if(modelDescribe.containsKey(field.getName())){ if("id".equals(field.getName())){//判断当前的属性名是否是id Object objValue = BeanUtils.getProperty(destini, "id"); if(objValue!=null){//如果id已有值则不用再赋值,user userinfo中用到 continue; } } try { Object obj = com.norteksoft.product.util.BeanUtils.getFieldValue(target,field.getName()); if(obj!=null) BeanUtils.setProperty(destini, field.getName(),obj); } catch (NoSuchFieldException e) { e.printStackTrace(); } } } } } catch (NoSuchMethodException e) { e.printStackTrace(); } } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } private static List<Field> getAllFieldsIncludeSuperClass(Class clazz) { Assert.notNull(clazz); List<Field> result = new ArrayList<Field>(); for (Class superClass = clazz; superClass != Object.class; superClass = superClass.getSuperclass()) { Field[] sub = superClass.getDeclaredFields(); result.addAll(Arrays.asList(sub)); } return result; } }