同步器增加属性配置管理
This commit is contained in:
@@ -25,9 +25,13 @@ import org.dromara.maxkey.entity.HistorySynchronizer;
|
||||
import org.dromara.maxkey.entity.Organizations;
|
||||
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
|
||||
import org.dromara.maxkey.synchronizer.ISynchronizerService;
|
||||
import org.dromara.maxkey.entity.SyncJobConfigField;
|
||||
import org.dromara.maxkey.synchronizer.service.SyncJobConfigFieldService;
|
||||
import org.dromara.maxkey.synchronizer.utils.MyResultSet;
|
||||
import org.dromara.maxkey.util.JdbcUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.sql.Connection;
|
||||
@@ -35,11 +39,20 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.maxkey.synchronizer.utils.FieldUtil.setFieldValue;
|
||||
|
||||
@Service
|
||||
public class JdbcOrganizationService extends AbstractSynchronizerService implements ISynchronizerService {
|
||||
final static Logger _logger = LoggerFactory.getLogger(JdbcOrganizationService.class);
|
||||
static ArrayList<ColumnFieldMapper> mapperList = new ArrayList<>();
|
||||
@Autowired
|
||||
private SyncJobConfigFieldService syncJobConfigFieldService;
|
||||
|
||||
private static final Integer ORG_TYPE = 2;
|
||||
|
||||
@Override
|
||||
public void sync() {
|
||||
@@ -74,6 +87,87 @@ public class JdbcOrganizationService extends AbstractSynchronizerService impleme
|
||||
}
|
||||
}
|
||||
|
||||
public Organizations buildOrgByFieldMap(ResultSet rs) throws SQLException{
|
||||
Organizations org = new Organizations();
|
||||
DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
Map<String, String> fieldMap = getFieldMap(Long.parseLong(synchronizer.getId()));
|
||||
for (Map.Entry<String, String> entry : fieldMap.entrySet()) {
|
||||
String column = entry.getValue();
|
||||
String field = entry.getKey();
|
||||
Object value = rs.getObject(column);
|
||||
|
||||
if (value != null) {
|
||||
try {
|
||||
setFieldValue(org,field,value);
|
||||
} catch (Exception e) {
|
||||
_logger.error("setProperty {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
org.setType("department");
|
||||
org.setId(org.generateId());
|
||||
org.setInstId(synchronizer.getInstId());
|
||||
if (meta.getColumnsMap().containsKey("status")) {
|
||||
org.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
org.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
_logger.debug("Organization {}", org);
|
||||
|
||||
HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(org.getId());
|
||||
historySynchronizer.setObjectName(org.getOrgName());
|
||||
historySynchronizer.setObjectType(Organizations.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);
|
||||
|
||||
return org;
|
||||
}
|
||||
|
||||
public Organizations buildOrgByFieldMapTemp(MyResultSet rs) throws SQLException{
|
||||
Organizations org = new Organizations();
|
||||
//DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
Map<String, String> fieldMap = getFieldMap(Long.parseLong(synchronizer.getId()));
|
||||
for (Map.Entry<String, String> entry : fieldMap.entrySet()) {
|
||||
String column = entry.getValue();
|
||||
String field = entry.getKey();
|
||||
Object value = rs.getObject(column);
|
||||
|
||||
if (value != null) {
|
||||
try {
|
||||
setFieldValue(org,field,value);
|
||||
} catch (Exception e) {
|
||||
_logger.error("setProperty {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
org.setId(org.generateId());
|
||||
org.setInstId(synchronizer.getInstId());
|
||||
if (rs.getColumnNames().contains("status")) {
|
||||
org.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
org.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
_logger.debug("Organization {}", org);
|
||||
|
||||
/*HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(org.getId());
|
||||
historySynchronizer.setObjectName(org.getOrgName());
|
||||
historySynchronizer.setObjectType(Organizations.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);*/
|
||||
|
||||
return org;
|
||||
}
|
||||
|
||||
|
||||
public Organizations buildOrganization(ResultSet rs) throws SQLException {
|
||||
DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
@@ -121,6 +215,72 @@ public class JdbcOrganizationService extends AbstractSynchronizerService impleme
|
||||
|
||||
}
|
||||
|
||||
public Organizations buildOrganizationTemp(MyResultSet rs) throws SQLException {
|
||||
//DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
Organizations org = new Organizations();
|
||||
|
||||
for (ColumnFieldMapper mapper : mapperList) {
|
||||
if (rs.getColumnNames().contains(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(synchronizer.getInstId());
|
||||
if (rs.getColumnNames().contains("status")) {
|
||||
org.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
org.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
_logger.debug("Organization {}", org);
|
||||
|
||||
/*HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(org.getId());
|
||||
historySynchronizer.setObjectName(org.getOrgName());
|
||||
historySynchronizer.setObjectType(Organizations.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);*/
|
||||
|
||||
return org;
|
||||
|
||||
}
|
||||
|
||||
public Map<String,String> getFieldMap(Long jobId){
|
||||
Map<String,String> filedMap = new HashMap<>();
|
||||
//根据job id查询属性映射表
|
||||
List<SyncJobConfigField> syncJobConfigFieldList = syncJobConfigFieldService.findByJobId(jobId);
|
||||
//获取用户属性映射
|
||||
for(SyncJobConfigField element:syncJobConfigFieldList){
|
||||
if(Integer.parseInt(element.getObjectType()) == ORG_TYPE.intValue()){
|
||||
filedMap.put(element.getTargetField(), element.getSourceField());
|
||||
}
|
||||
}
|
||||
return filedMap;
|
||||
}
|
||||
|
||||
public SyncJobConfigFieldService getSyncJobConfigFieldService() {
|
||||
return syncJobConfigFieldService;
|
||||
}
|
||||
|
||||
public void setSyncJobConfigFieldService(SyncJobConfigFieldService syncJobConfigFieldService) {
|
||||
this.syncJobConfigFieldService = syncJobConfigFieldService;
|
||||
}
|
||||
|
||||
static {
|
||||
mapperList.add(new ColumnFieldMapper("id", "id", "String"));
|
||||
@@ -129,7 +289,7 @@ public class JdbcOrganizationService extends AbstractSynchronizerService impleme
|
||||
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(" ", "parentName", "String"));
|
||||
|
||||
mapperList.add(new ColumnFieldMapper("type", "type", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("codepath", "codePath", "String"));
|
||||
|
||||
@@ -24,22 +24,35 @@ import org.dromara.maxkey.entity.HistorySynchronizer;
|
||||
import org.dromara.maxkey.entity.UserInfo;
|
||||
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
|
||||
import org.dromara.maxkey.synchronizer.ISynchronizerService;
|
||||
import org.dromara.maxkey.entity.SyncJobConfigField;
|
||||
import org.dromara.maxkey.synchronizer.service.SyncJobConfigFieldService;
|
||||
import org.dromara.maxkey.synchronizer.utils.MyResultSet;
|
||||
import org.dromara.maxkey.util.JdbcUtils;
|
||||
import org.dromara.maxkey.util.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.maxkey.synchronizer.utils.FieldUtil.setFieldValue;
|
||||
|
||||
@Service
|
||||
public class JdbcUsersService extends AbstractSynchronizerService implements ISynchronizerService {
|
||||
final static Logger _logger = LoggerFactory.getLogger(JdbcUsersService.class);
|
||||
@Autowired
|
||||
public SyncJobConfigFieldService syncJobConfigFieldService;
|
||||
|
||||
private static final Integer USER_TYPE = 1;
|
||||
static ArrayList<ColumnFieldMapper> mapperList = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
@@ -93,6 +106,65 @@ public class JdbcUsersService extends AbstractSynchronizerService implements ISy
|
||||
}
|
||||
}
|
||||
|
||||
public UserInfo buildUserInfoTemp(MyResultSet rs) throws SQLException {
|
||||
//DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
UserInfo user = new UserInfo();
|
||||
//basic
|
||||
for (ColumnFieldMapper mapper : mapperList) {
|
||||
if (rs.getColumnNames().contains(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 (rs.getColumnNames().contains("status")) {
|
||||
user.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
user.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
user.setInstId(synchronizer.getInstId());
|
||||
|
||||
//password
|
||||
if (rs.getColumnNames().contains("password")) {
|
||||
user.setPassword(rs.getString("password"));
|
||||
} else {
|
||||
//后4位
|
||||
String last4Char = "6666";
|
||||
if (StringUtils.isNotBlank(user.getIdCardNo())) {
|
||||
last4Char = user.getIdCardNo().substring(user.getIdCardNo().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getMobile())) {
|
||||
last4Char = user.getMobile().substring(user.getMobile().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getEmployeeNumber())) {
|
||||
last4Char = user.getEmployeeNumber().substring(user.getEmployeeNumber().length() - 4);
|
||||
}
|
||||
user.setPassword(user.getUsername() + "@M" + last4Char);
|
||||
}
|
||||
|
||||
/*HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(user.getId());
|
||||
historySynchronizer.setObjectName(user.getUsername());
|
||||
historySynchronizer.setObjectType(UserInfo.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);*/
|
||||
_logger.debug("User {} ", user);
|
||||
|
||||
return user;
|
||||
}
|
||||
public UserInfo buildUserInfo(ResultSet rs) throws SQLException {
|
||||
DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
UserInfo user = new UserInfo();
|
||||
@@ -153,6 +225,137 @@ public class JdbcUsersService extends AbstractSynchronizerService implements ISy
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
public UserInfo buildUserInfoByFieldMapTemp(MyResultSet rs) throws SQLException, InvocationTargetException, NoSuchMethodException, IllegalAccessException {
|
||||
//DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
UserInfo user = new UserInfo();
|
||||
Map<String, String> fieldMap = getFieldMap(Long.parseLong(synchronizer.getId()));
|
||||
for(Map.Entry<String,String> entry: fieldMap.entrySet()){
|
||||
String column = entry.getValue();
|
||||
String field = entry.getKey();
|
||||
Object value = null;
|
||||
if(rs.getColumnNames().contains(column) && !field.equals("status") && !field.equals("password")){
|
||||
value = rs.getObject(column);
|
||||
if(value!=null){
|
||||
setFieldValue(user,field,value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//password的获取和user的其他属性相关,如果在遍历过程中进行属性映射,需要在password映射之前,先完成其他属性的映射
|
||||
if (rs.getColumnNames().contains("status")) {
|
||||
user.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
user.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
user.setInstId(synchronizer.getInstId());
|
||||
// password
|
||||
if (rs.getColumnNames().contains("password")) {
|
||||
user.setPassword(rs.getString("password"));
|
||||
} else {
|
||||
String last4Char = "6666";
|
||||
if (StringUtils.isNotBlank(user.getIdCardNo())) {
|
||||
last4Char = user.getIdCardNo().substring(user.getIdCardNo().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getMobile())) {
|
||||
last4Char = user.getMobile().substring(user.getMobile().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getEmployeeNumber())) {
|
||||
last4Char = user.getEmployeeNumber().substring(user.getEmployeeNumber().length() - 4);
|
||||
}
|
||||
user.setPassword(user.getUsername() + "@M" + last4Char);
|
||||
}
|
||||
|
||||
/*HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(user.getId());
|
||||
historySynchronizer.setObjectName(user.getUsername());
|
||||
historySynchronizer.setObjectType(UserInfo.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);
|
||||
_logger.debug("User {} ", user);*/
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public UserInfo buildUserInfoByFieldMap(ResultSet rs) throws SQLException, InvocationTargetException, NoSuchMethodException, IllegalAccessException {
|
||||
DbTableMetaData meta = JdbcUtils.getMetaData(rs);
|
||||
UserInfo user = new UserInfo();
|
||||
Map<String, String> fieldMap = getFieldMap(Long.parseLong(synchronizer.getId()));
|
||||
for(Map.Entry<String,String> entry: fieldMap.entrySet()){
|
||||
|
||||
String column = entry.getValue();
|
||||
String field = entry.getKey();
|
||||
Object value = null;
|
||||
if(meta.getColumnsMap().containsKey(column) && !field.equals("status") && !field.equals("password")){
|
||||
value = rs.getObject(column);
|
||||
if(value!=null){
|
||||
setFieldValue(user,field,value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
user.setUserType("EMPLOYEE");
|
||||
user.setUserState("RESIDENT");
|
||||
//password的获取和user的其他属性相关,如果在遍历过程中进行属性映射,需要在password映射之前,先完成其他属性的映射
|
||||
if (meta.getColumnsMap().containsKey("status")) {
|
||||
user.setStatus(rs.getInt("status"));
|
||||
} else {
|
||||
user.setStatus(ConstsStatus.ACTIVE);
|
||||
}
|
||||
user.setInstId(synchronizer.getInstId());
|
||||
// password
|
||||
if (meta.getColumnsMap().containsKey("password")) {
|
||||
user.setPassword(rs.getString("password"));
|
||||
} else {
|
||||
String last4Char = "6666";
|
||||
if (StringUtils.isNotBlank(user.getIdCardNo())) {
|
||||
last4Char = user.getIdCardNo().substring(user.getIdCardNo().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getMobile())) {
|
||||
last4Char = user.getMobile().substring(user.getMobile().length() - 4);
|
||||
} else if (StringUtils.isNotBlank(user.getEmployeeNumber())) {
|
||||
last4Char = user.getEmployeeNumber().substring(user.getEmployeeNumber().length() - 4);
|
||||
}
|
||||
user.setPassword(user.getUsername() + "@M" + last4Char);
|
||||
}
|
||||
|
||||
HistorySynchronizer historySynchronizer = new HistorySynchronizer();
|
||||
historySynchronizer.setId(historySynchronizer.generateId());
|
||||
historySynchronizer.setSyncId(synchronizer.getId());
|
||||
historySynchronizer.setSyncName(synchronizer.getName());
|
||||
historySynchronizer.setObjectId(user.getId());
|
||||
historySynchronizer.setObjectName(user.getUsername());
|
||||
historySynchronizer.setObjectType(UserInfo.class.getSimpleName());
|
||||
historySynchronizer.setInstId(synchronizer.getInstId());
|
||||
historySynchronizer.setResult("success");
|
||||
historySynchronizerService.insert(historySynchronizer);
|
||||
_logger.debug("User {} ", user);
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public Map<String,String> getFieldMap(Long jobId){
|
||||
Map<String,String> fieldMap = new HashMap<>();
|
||||
//根据job id查询属性映射表
|
||||
List<SyncJobConfigField> syncJobConfigFieldList = syncJobConfigFieldService.findByJobId(jobId);
|
||||
//获取用户属性映射
|
||||
for(SyncJobConfigField element:syncJobConfigFieldList){
|
||||
if(Integer.parseInt(element.getObjectType()) == USER_TYPE.intValue()){
|
||||
fieldMap.put(element.getTargetField(), element.getSourceField());
|
||||
}
|
||||
}
|
||||
return fieldMap;
|
||||
}
|
||||
|
||||
public SyncJobConfigFieldService getSyncJobConfigFieldService() {
|
||||
return syncJobConfigFieldService;
|
||||
}
|
||||
|
||||
public void setSyncJobConfigFieldService(SyncJobConfigFieldService syncJobConfigFieldService) {
|
||||
this.syncJobConfigFieldService = syncJobConfigFieldService;
|
||||
}
|
||||
|
||||
static {
|
||||
mapperList.add(new ColumnFieldMapper("id", "id", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("username", "username", "String"));
|
||||
@@ -191,7 +394,7 @@ public class JdbcUsersService extends AbstractSynchronizerService implements ISy
|
||||
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("homephoneNumber", "homePhonenumber", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("homepostalcode", "homePostalCode", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("homefax", "homeFax", "String"));
|
||||
//company
|
||||
@@ -207,8 +410,8 @@ public class JdbcUsersService extends AbstractSynchronizerService implements ISy
|
||||
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("entryDate", "entrydate", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("quitDate", "quitdate", "String"));
|
||||
mapperList.add(new ColumnFieldMapper("ldapdn", "ldapDn", "String"));
|
||||
|
||||
mapperList.add(new ColumnFieldMapper("description", "description", "String"));
|
||||
|
||||
Reference in New Issue
Block a user