提交 d68787d6 编写于 作者: M MaxKey

JdbcSynchronizer 优化

上级 7fb7f30e
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;
}
}
......@@ -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"));
}
}
/*
* 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.
......
......@@ -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"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册