diff --git a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/ColumnFieldMapper.java b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/ColumnFieldMapper.java new file mode 100644 index 000000000..8ff13c76f --- /dev/null +++ b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/ColumnFieldMapper.java @@ -0,0 +1,21 @@ +package org.maxkey.synchronizer.jdbc; + +import org.maxkey.entity.DbTableColumn; + +public class ColumnFieldMapper extends DbTableColumn{ + String field; + + public ColumnFieldMapper(String column, String field, String type) { + super(column, type, 0, 0); + this.field = field; + } + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + +} diff --git a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcOrganizationService.java b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcOrganizationService.java index f277d1293..5f0b4b7b2 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcOrganizationService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcOrganizationService.java @@ -21,7 +21,9 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang3.StringUtils; import org.maxkey.constants.ConstsStatus; import org.maxkey.entity.DbTableMetaData; @@ -36,6 +38,7 @@ import org.springframework.stereotype.Service; @Service public class JdbcOrganizationService extends AbstractSynchronizerService implements ISynchronizerService{ final static Logger _logger = LoggerFactory.getLogger(JdbcOrganizationService.class); + static ArrayList< ColumnFieldMapper> mapperList = new ArrayList< ColumnFieldMapper>(); public void sync() { Connection conn = null; @@ -73,86 +76,26 @@ public class JdbcOrganizationService extends AbstractSynchronizerService imple public Organizations buildOrganization(ResultSet rs) throws SQLException { DbTableMetaData meta = JdbcUtils.getMetaData(rs); Organizations org = new Organizations(); - if(meta.getColumnsMap().containsKey("id")) { - org.setId(org.generateId()); - } - if(meta.getColumnsMap().containsKey("orgcode")) { - org.setOrgCode(rs.getString("orgcode")); - } - if(meta.getColumnsMap().containsKey("orgname")) { - org.setOrgName(rs.getString("orgname")); - } - if(meta.getColumnsMap().containsKey("fullname")) { - org.setFullName(rs.getString("fullname")); - } - //parent - if(meta.getColumnsMap().containsKey("parentid")) { - org.setParentId(rs.getString("parentid")); - } - if(meta.getColumnsMap().containsKey("parentcode")) { - org.setParentCode(rs.getString("parentcode")); - } - if(meta.getColumnsMap().containsKey("parentname")) { - org.setParentName(rs.getString("parentname")); - } - //ex attr - if(meta.getColumnsMap().containsKey("type")) { - org.setType(rs.getString("type")); - } - if(meta.getColumnsMap().containsKey("codepath")) { - org.setCodePath(rs.getString("codepath")); - } - if(meta.getColumnsMap().containsKey("namepath")) { - org.setNamePath(rs.getString("namepath")); - } - if(meta.getColumnsMap().containsKey("level")) { - org.setLevel(rs.getInt("level")); - } - if(meta.getColumnsMap().containsKey("haschild")) { - org.setHasChild(rs.getString("haschild")); - } - if(meta.getColumnsMap().containsKey("division")) { - org.setDivision(rs.getString("division")); - } - if(meta.getColumnsMap().containsKey("country")) { - org.setCountry(rs.getString("country")); - } - if(meta.getColumnsMap().containsKey("region")) { - org.setRegion(rs.getString("region")); - } - if(meta.getColumnsMap().containsKey("locality")) { - org.setLocality(rs.getString("locality")); - } - if(meta.getColumnsMap().containsKey("street")) { - org.setStreet(rs.getString("street")); - } - if(meta.getColumnsMap().containsKey("address")) { - org.setAddress(rs.getString("address")); - } - if(meta.getColumnsMap().containsKey("contact")) { - org.setContact(rs.getString("contact")); - } - if(meta.getColumnsMap().containsKey("postalcode")) { - org.setPostalCode(rs.getString("postalcode")); - } - if(meta.getColumnsMap().containsKey("phone")) { - org.setPhone(rs.getString("phone")); - } - if(meta.getColumnsMap().containsKey("fax")) { - org.setFax(rs.getString("fax")); - } - if(meta.getColumnsMap().containsKey("email")) { - org.setEmail(rs.getString("email")); - } - if(meta.getColumnsMap().containsKey("sortindex")) { - org.setSortIndex(rs.getInt("sortindex")); - } - if(meta.getColumnsMap().containsKey("ldapdn")) { - org.setLdapDn(rs.getString("ldapdn")); - } - if(meta.getColumnsMap().containsKey("description")) { - org.setDescription(rs.getString("description")); - } + + for (ColumnFieldMapper mapper :mapperList ) { + if(meta.getColumnsMap().containsKey(mapper.getColumn())) { + Object value = null; + if(mapper.getType().equalsIgnoreCase("String")) { + value = rs.getString(mapper.getColumn()); + }else { + value = rs.getInt(mapper.getColumn()); + } + if(value != null ) { + try { + PropertyUtils.setSimpleProperty(org, mapper.getField(), value); + } catch (Exception e) { + _logger.error("setSimpleProperty {}" , e); + } + } + } + } + + org.setId(org.generateId()); org.setInstId(this.synchronizer.getInstId()); if(meta.getColumnsMap().containsKey("status")) { org.setStatus(rs.getInt("status")); @@ -163,4 +106,36 @@ public class JdbcOrganizationService extends AbstractSynchronizerService imple _logger.debug("Organization {}" , org); return org; } + + + static { + mapperList.add(new ColumnFieldMapper("id" , "id","String")); + mapperList.add(new ColumnFieldMapper("orgcode" , "orgCode","String")); + mapperList.add(new ColumnFieldMapper("orgname" , "orgName","String")); + mapperList.add(new ColumnFieldMapper("fullname" , "fullName","String")); + mapperList.add(new ColumnFieldMapper("parentid" , "parentId","String")); + mapperList.add(new ColumnFieldMapper("parentcode" , "parentCode","String")); + mapperList.add(new ColumnFieldMapper("parentname" , "parentName","String")); + + mapperList.add(new ColumnFieldMapper("type" , "type","String")); + mapperList.add(new ColumnFieldMapper("codepath" , "codePath","String")); + mapperList.add(new ColumnFieldMapper("namepath" , "namePath","String")); + mapperList.add(new ColumnFieldMapper("level" , "level","Int")); + mapperList.add(new ColumnFieldMapper("haschild" , "hasChild","String")); + mapperList.add(new ColumnFieldMapper("division" , "division","String")); + mapperList.add(new ColumnFieldMapper("country" , "country","String")); + mapperList.add(new ColumnFieldMapper("region" , "region","String")); + mapperList.add(new ColumnFieldMapper("locality" , "locality","String")); + mapperList.add(new ColumnFieldMapper("street" , "street","String")); + mapperList.add(new ColumnFieldMapper("address" , "address","String")); + mapperList.add(new ColumnFieldMapper("contact" , "contact","String")); + mapperList.add(new ColumnFieldMapper("postalcode" , "postalCode","String")); + mapperList.add(new ColumnFieldMapper("phone" , "phone","String")); + mapperList.add(new ColumnFieldMapper("fax" , "fax","String")); + mapperList.add(new ColumnFieldMapper("email" , "email","String")); + mapperList.add(new ColumnFieldMapper("sortindex" , "sortIndex","Int")); + mapperList.add(new ColumnFieldMapper("ldapdn" , "ldapDn","String")); + mapperList.add(new ColumnFieldMapper("description" , "description","String")); + mapperList.add(new ColumnFieldMapper("status" , "status","int")); + } } diff --git a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcSynchronizerService.java b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcSynchronizerService.java index b94f42532..4df21eead 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcSynchronizerService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcSynchronizerService.java @@ -1,5 +1,5 @@ /* - * Copyright [2021] [MaxKey of copyright http://www.maxkey.top] + * Copyright [2022] [MaxKey of copyright http://www.maxkey.top] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcUsersService.java b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcUsersService.java index 7effaffcb..eb355b3a6 100644 --- a/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcUsersService.java +++ b/maxkey-synchronizers/maxkey-synchronizer-jdbc/src/main/java/org/maxkey/synchronizer/jdbc/JdbcUsersService.java @@ -21,7 +21,9 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import org.apache.commons.beanutils.PropertyUtils; import org.maxkey.constants.ConstsStatus; import org.maxkey.entity.DbTableMetaData; import org.maxkey.entity.UserInfo; @@ -37,6 +39,8 @@ import org.springframework.stereotype.Service; public class JdbcUsersService extends AbstractSynchronizerService implements ISynchronizerService{ final static Logger _logger = LoggerFactory.getLogger(JdbcUsersService.class); + static ArrayList< ColumnFieldMapper> mapperList = new ArrayList< ColumnFieldMapper>(); + public void sync() { _logger.info("Sync Jdbc Users..."); Connection conn = null; @@ -91,177 +95,31 @@ public class JdbcUsersService extends AbstractSynchronizerService implements DbTableMetaData meta = JdbcUtils.getMetaData(rs); UserInfo user = new UserInfo(); //basic - if(meta.getColumnsMap().containsKey("id")) { - user.setId(rs.getString("id")); - } - if(meta.getColumnsMap().containsKey("username")) { - user.setUsername(rs.getString("username")); - } - if(meta.getColumnsMap().containsKey("picture")) { - user.setPicture(rs.getBytes("picture")); - } - if(meta.getColumnsMap().containsKey("displayname")) { - user.setDisplayName(rs.getString("displayname")); - } - if(meta.getColumnsMap().containsKey("nickname")) { - user.setNickName(rs.getString("nickname")); - } - if(meta.getColumnsMap().containsKey("mobile")) { - user.setMobile(rs.getString("mobile")); - } - if(meta.getColumnsMap().containsKey("email")) { - user.setEmail(rs.getString("email")); - } - if(meta.getColumnsMap().containsKey("birthdate")) { - user.setBirthDate(rs.getString("birthdate")); - } - if(meta.getColumnsMap().containsKey("usertype")) { - user.setUserType(rs.getString("usertype")); - } - if(meta.getColumnsMap().containsKey("userstate")) { - user.setUserState(rs.getString("userstate")); - } - if(meta.getColumnsMap().containsKey("windowsaccount")) { - user.setWindowsAccount(rs.getString("windowsaccount")); - } - if(meta.getColumnsMap().containsKey("givenname")) { - user.setGivenName(rs.getString("givenname")); - } - if(meta.getColumnsMap().containsKey("middlename")) { - user.setMiddleName(rs.getString("middlename")); - } - if(meta.getColumnsMap().containsKey("married")) { - user.setMarried(rs.getInt("married")); - } - if(meta.getColumnsMap().containsKey("gender")) { - user.setGender(rs.getInt("gender")); - } - if(meta.getColumnsMap().containsKey("idtype")) { - user.setIdType(rs.getInt("idtype")); - } - if(meta.getColumnsMap().containsKey("idcardno")) { - user.setIdCardNo(rs.getString("idcardno")); - } - if(meta.getColumnsMap().containsKey("website")) { - user.setWebSite(rs.getString("website")); - } - if(meta.getColumnsMap().containsKey("startworkdate")) { - user.setStartWorkDate(rs.getString("startworkdate")); - } - //work - if(meta.getColumnsMap().containsKey("workcountry")) { - user.setWorkCountry(rs.getString("workcountry")); - } - if(meta.getColumnsMap().containsKey("workregion")) { - user.setWorkRegion(rs.getString("workregion")); - } - if(meta.getColumnsMap().containsKey("worklocality")) { - user.setWorkLocality(rs.getString("worklocality")); - } - if(meta.getColumnsMap().containsKey("workstreetaddress")) { - user.setWorkStreetAddress(rs.getString("workstreetaddress")); - } - if(meta.getColumnsMap().containsKey("workaddressformatted")) { - user.setWorkAddressFormatted(rs.getString("workaddressformatted")); - } - if(meta.getColumnsMap().containsKey("workemail")) { - user.setWorkEmail(rs.getString("workemail")); - } - if(meta.getColumnsMap().containsKey("workphonenumber")) { - user.setWorkPhoneNumber(rs.getString("workphonenumber")); - } - if(meta.getColumnsMap().containsKey("workpostalcode")) { - user.setWorkPostalCode(rs.getString("workpostalcode")); - } - if(meta.getColumnsMap().containsKey("workfax")) { - user.setWorkFax(rs.getString("workfax")); - } - if(meta.getColumnsMap().containsKey("workofficename")) { - user.setWorkOfficeName(rs.getString("workofficename")); - } - //home - if(meta.getColumnsMap().containsKey("homecountry")) { - user.setHomeCountry(rs.getString("homecountry")); - } - if(meta.getColumnsMap().containsKey("homeregion")) { - user.setHomeRegion(rs.getString("homeregion")); - } - if(meta.getColumnsMap().containsKey("homelocality")) { - user.setHomeLocality(rs.getString("homelocality")); - } - if(meta.getColumnsMap().containsKey("homestreetaddress")) { - user.setHomeStreetAddress(rs.getString("homestreetaddress")); - } - if(meta.getColumnsMap().containsKey("homeaddressformatted")) { - user.setHomeAddressFormatted(rs.getString("homeaddressformatted")); - } - if(meta.getColumnsMap().containsKey("homeemail")) { - user.setHomeEmail(rs.getString("homeemail")); - } - if(meta.getColumnsMap().containsKey("homephonenumber")) { - user.setHomePhoneNumber(rs.getString("homephonenumber")); - } - if(meta.getColumnsMap().containsKey("homepostalcode")) { - user.setHomePostalCode(rs.getString("homepostalcode")); - } - if(meta.getColumnsMap().containsKey("homefax")) { - user.setHomeFax(rs.getString("homefax")); - } - //company - if(meta.getColumnsMap().containsKey("employeenumber")) { - user.setEmployeeNumber(rs.getString("employeenumber")); - } - if(meta.getColumnsMap().containsKey("costcenter")) { - user.setCostCenter(rs.getString("costcenter")); - } - if(meta.getColumnsMap().containsKey("organization")) { - user.setOrganization(rs.getString("organization")); - } - if(meta.getColumnsMap().containsKey("division")) { - user.setDivision(rs.getString("division")); - } - if(meta.getColumnsMap().containsKey("departmentid")) { - user.setDepartmentId(rs.getString("departmentid")); - } - if(meta.getColumnsMap().containsKey("department")) { - user.setDepartment(rs.getString("department")); - } - if(meta.getColumnsMap().containsKey("jobtitle")) { - user.setJobTitle(rs.getString("jobtitle")); - } - if(meta.getColumnsMap().containsKey("joblevel")) { - user.setJobLevel(rs.getString("joblevel")); - } - if(meta.getColumnsMap().containsKey("managerid")) { - user.setManagerId(rs.getString("managerid")); - } - if(meta.getColumnsMap().containsKey("manager")) { - user.setManager(rs.getString("manager")); - } - if(meta.getColumnsMap().containsKey("assistantid")) { - user.setAssistantId(rs.getString("assistantid")); - } - if(meta.getColumnsMap().containsKey("assistant")) { - user.setAssistant(rs.getString("assistant")); - } - if(meta.getColumnsMap().containsKey("entrydate")) { - user.setEntryDate(rs.getString("entrydate")); - } - if(meta.getColumnsMap().containsKey("quitdate")) { - user.setQuitDate(rs.getString("quitdate")); - } - //common - if(meta.getColumnsMap().containsKey("ldapdn")) { - user.setLdapDn(rs.getString("ldapdn")); + for (ColumnFieldMapper mapper :mapperList ) { + if(meta.getColumnsMap().containsKey(mapper.getColumn())) { + Object value = null; + if(mapper.getType().equalsIgnoreCase("String")) { + value = rs.getString(mapper.getColumn()); + }else { + value = rs.getInt(mapper.getColumn()); + } + if(value != null ) { + try { + PropertyUtils.setSimpleProperty(user, mapper.getField(), value); + } catch (Exception e) { + _logger.error("setSimpleProperty {}" , e); + } + } + } } + if(meta.getColumnsMap().containsKey("status")) { user.setStatus(rs.getInt("status")); }else { user.setStatus(ConstsStatus.ACTIVE); } - if(meta.getColumnsMap().containsKey("description")) { - user.setDescription(rs.getString("description")); - } + user.setInstId(this.synchronizer.getInstId()); + //password if(meta.getColumnsMap().containsKey("password")) { user.setPassword(rs.getString("password")); @@ -277,9 +135,70 @@ public class JdbcUsersService extends AbstractSynchronizerService implements } user.setPassword(user.getUsername()+"@M"+last4Char); } - user.setInstId(this.synchronizer.getInstId()); + _logger.debug("User {} " , user); return user; } - + + static { + mapperList.add(new ColumnFieldMapper("id" , "id","String")); + mapperList.add(new ColumnFieldMapper("username" , "userUame","String")); + mapperList.add(new ColumnFieldMapper("picture" , "picture","String")); + mapperList.add(new ColumnFieldMapper("displayname" , "displayName","String")); + mapperList.add(new ColumnFieldMapper("nickname" , "nickName","String")); + mapperList.add(new ColumnFieldMapper("mobile" , "mobile","String")); + mapperList.add(new ColumnFieldMapper("email" , "email","String")); + mapperList.add(new ColumnFieldMapper("birthdate" , "birthDate","String")); + mapperList.add(new ColumnFieldMapper("usertype" , "userType","String")); + mapperList.add(new ColumnFieldMapper("userstate" , "userState","String")); + mapperList.add(new ColumnFieldMapper("windowsaccount" , "windowsAccount","String")); + mapperList.add(new ColumnFieldMapper("givenname" , "givenName","String")); + mapperList.add(new ColumnFieldMapper("middlename" , "middleName","String")); + mapperList.add(new ColumnFieldMapper("married" , "married","Int")); + mapperList.add(new ColumnFieldMapper("gender" , "gender","Int")); + mapperList.add(new ColumnFieldMapper("idtype" , "idType","Int")); + mapperList.add(new ColumnFieldMapper("idcardno" , "idCardNo","String")); + mapperList.add(new ColumnFieldMapper("website" , "webSite","String")); + mapperList.add(new ColumnFieldMapper("startworkdate" , "startWorkDate","String")); + //work + mapperList.add(new ColumnFieldMapper("workcountry" , "workCountry","String")); + mapperList.add(new ColumnFieldMapper("workregion" , "workRegion","String")); + mapperList.add(new ColumnFieldMapper("worklocality" , "workLocality","String")); + mapperList.add(new ColumnFieldMapper("workstreetaddress" , "workStreetAddress","String")); + mapperList.add(new ColumnFieldMapper("workaddressformatted" , "workAddressFormatted","String")); + mapperList.add(new ColumnFieldMapper("workemail" , "workEmail","String")); + mapperList.add(new ColumnFieldMapper("workphonenumber" , "workPhoneNumber","String")); + mapperList.add(new ColumnFieldMapper("workpostalcode" , "workPostalCode","String")); + mapperList.add(new ColumnFieldMapper("workfax" , "workFax","String")); + mapperList.add(new ColumnFieldMapper("workofficename" , "workOfficeName","String")); + //home + mapperList.add(new ColumnFieldMapper("homecountry" , "homeCountry","String")); + mapperList.add(new ColumnFieldMapper("homeregion" , "homeRegion","String")); + mapperList.add(new ColumnFieldMapper("homelocality" , "homeLocality","String")); + mapperList.add(new ColumnFieldMapper("homestreetaddress" , "homeStreetAddress","String")); + mapperList.add(new ColumnFieldMapper("homeaddressformatted" , "homeAddressFormatted","String")); + mapperList.add(new ColumnFieldMapper("homeemail" , "homeEmail","String")); + mapperList.add(new ColumnFieldMapper("homephonenumber" , "homePhonenumber","String")); + mapperList.add(new ColumnFieldMapper("homepostalcode" , "homePostalCode","String")); + mapperList.add(new ColumnFieldMapper("homefax" , "homeFax","String")); + //company + mapperList.add(new ColumnFieldMapper("employeenumber" , "employeeNumber","String")); + mapperList.add(new ColumnFieldMapper("costcenter" , "costCenter","String")); + mapperList.add(new ColumnFieldMapper("organization" , "organization","String")); + mapperList.add(new ColumnFieldMapper("division" , "division","String")); + mapperList.add(new ColumnFieldMapper("departmentid" , "departmentId","String")); + mapperList.add(new ColumnFieldMapper("department" , "department","String")); + mapperList.add(new ColumnFieldMapper("jobtitle" , "jobTitle","String")); + mapperList.add(new ColumnFieldMapper("joblevel" , "jobLevel","String")); + mapperList.add(new ColumnFieldMapper("managerid" , "managerId","String")); + mapperList.add(new ColumnFieldMapper("manager" , "manager","String")); + mapperList.add(new ColumnFieldMapper("assistantid" , "assistantId","String")); + mapperList.add(new ColumnFieldMapper("assistant" , "assistant","String")); + mapperList.add(new ColumnFieldMapper("entrydate" , "entrydate","String")); + mapperList.add(new ColumnFieldMapper("quitdate" , "quitdate","String")); + mapperList.add(new ColumnFieldMapper("ldapdn" , "ldapDn","String")); + + mapperList.add(new ColumnFieldMapper("description" , "description","String")); + mapperList.add(new ColumnFieldMapper("status" , "status","String")); + } }