diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/AssignmentController.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/AssignmentController.java index 46144184..fccb4225 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/AssignmentController.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/AssignmentController.java @@ -119,7 +119,7 @@ public class AssignmentController { @ApiOperation(value = "导出") @PostMapping(value = "/export") public void exportAssignments(@RequestParam(value = "ids") List ids, HttpServletResponse response) { - assignmentService.exportAssignments(ids,response); + assignmentService.exportAssignments(ids, response); } } diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/AssignmentService.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/AssignmentService.java index 09b126c0..ba87093e 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/AssignmentService.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/AssignmentService.java @@ -63,331 +63,333 @@ import com.gitee.dbswitch.data.util.JsonUtils; @Service public class AssignmentService { - @Resource - private AssignmentTaskDAO assignmentTaskDAO; + @Resource + private AssignmentTaskDAO assignmentTaskDAO; - @Resource - private AssignmentConfigDAO assignmentConfigDAO; + @Resource + private AssignmentConfigDAO assignmentConfigDAO; - @Resource - private ScheduleService scheduleService; + @Resource + private ScheduleService scheduleService; - @Resource - private DatabaseConnectionDAO databaseConnectionDAO; + @Resource + private DatabaseConnectionDAO databaseConnectionDAO; - @Resource - private DriverLoadService driverLoadService; + @Resource + private DriverLoadService driverLoadService; - @Resource - private AssignmentJobMapper assignmentJobMapper; + @Resource + private AssignmentJobMapper assignmentJobMapper; - @Transactional(rollbackFor = Exception.class) - public AssignmentInfoResponse createAssignment(AssigmentCreateRequest request) { - AssignmentTaskEntity assignment = request.toAssignmentTask(); - assignmentTaskDAO.insert(assignment); + @Transactional(rollbackFor = Exception.class) + public AssignmentInfoResponse createAssignment(AssigmentCreateRequest request) { + AssignmentTaskEntity assignment = request.toAssignmentTask(); + assignmentTaskDAO.insert(assignment); - AssignmentConfigEntity assignmentConfigEntity = request.toAssignmentConfig(assignment.getId()); - assignmentConfigDAO.insert(assignmentConfigEntity); + AssignmentConfigEntity assignmentConfigEntity = request.toAssignmentConfig(assignment.getId()); + assignmentConfigDAO.insert(assignmentConfigEntity); - Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); - DatabaseConnectionEntity targetEntity = databaseConnectionDAO.getById(targetConnectionId); - if (ProductTypeEnum.SQLITE3 == targetEntity.getType()) { - if (ProductTypeEnum.isUnsupportedTargetSqlite(targetEntity.getUrl())) { - throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, - "不支持目的端数据源为远程服务器上的SQLite或内存方式下的SQLite"); - } - } + Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); + DatabaseConnectionEntity targetEntity = databaseConnectionDAO.getById(targetConnectionId); + if (ProductTypeEnum.SQLITE3 == targetEntity.getType()) { + if (ProductTypeEnum.isUnsupportedTargetSqlite(targetEntity.getUrl())) { + throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, + "不支持目的端数据源为远程服务器上的SQLite或内存方式下的SQLite"); + } + } - Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); - DatabaseConnectionEntity sourceEntity = databaseConnectionDAO.getById(sourceConnectionId); - if (ProductTypeEnum.ELASTICSEARCH == sourceEntity.getType()) { - throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, - "不支持源端数据源为ElasticSearch类型"); - } + Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); + DatabaseConnectionEntity sourceEntity = databaseConnectionDAO.getById(sourceConnectionId); + if (ProductTypeEnum.ELASTICSEARCH == sourceEntity.getType()) { + throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, + "不支持源端数据源为ElasticSearch类型"); + } - return ConverterFactory.getConverter(AssignmentInfoConverter.class) - .convert(assignmentTaskDAO.getById(assignment.getId())); - } + return ConverterFactory.getConverter(AssignmentInfoConverter.class) + .convert(assignmentTaskDAO.getById(assignment.getId())); + } - public void deleteAssignment(Long id) { - AssignmentTaskEntity taskEntity = assignmentTaskDAO.getById(id); - if (null != taskEntity && null != taskEntity.getPublished() && taskEntity.getPublished()) { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, - "已经发布的任务需先下线后方可执行删除操作"); - } - assignmentTaskDAO.deleteById(id); - } + public void deleteAssignment(Long id) { + AssignmentTaskEntity taskEntity = assignmentTaskDAO.getById(id); + if (null != taskEntity && null != taskEntity.getPublished() && taskEntity.getPublished()) { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, + "已经发布的任务需先下线后方可执行删除操作"); + } + assignmentTaskDAO.deleteById(id); + } - @Transactional(rollbackFor = Exception.class) - public void updateAssignment(AssigmentUpdateRequest request) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(request.getId()); - if (Objects.isNull(assignmentTaskEntity)) { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + request.getId()); - } else if (assignmentTaskEntity.getPublished()) { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, "ID=" + request.getId()); - } + @Transactional(rollbackFor = Exception.class) + public void updateAssignment(AssigmentUpdateRequest request) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(request.getId()); + if (Objects.isNull(assignmentTaskEntity)) { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + request.getId()); + } else if (assignmentTaskEntity.getPublished()) { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, "ID=" + request.getId()); + } - AssignmentTaskEntity newAssignmentTaskEntity = request.toAssignmentTask(); - assignmentTaskDAO.updateById(newAssignmentTaskEntity); + AssignmentTaskEntity newAssignmentTaskEntity = request.toAssignmentTask(); + assignmentTaskDAO.updateById(newAssignmentTaskEntity); - AssignmentConfigEntity assignmentConfigEntity = request - .toAssignmentConfig(assignmentTaskEntity.getId()); - assignmentConfigDAO.deleteByAssignmentTaskId(assignmentTaskEntity.getId()); - assignmentConfigDAO.insert(assignmentConfigEntity); + AssignmentConfigEntity assignmentConfigEntity = request + .toAssignmentConfig(assignmentTaskEntity.getId()); + assignmentConfigDAO.deleteByAssignmentTaskId(assignmentTaskEntity.getId()); + assignmentConfigDAO.insert(assignmentConfigEntity); - Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); - DatabaseConnectionEntity entity = databaseConnectionDAO.getById(targetConnectionId); - if (ProductTypeEnum.SQLITE3 == entity.getType()) { - if (ProductTypeEnum.isUnsupportedTargetSqlite(entity.getUrl())) { - throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, - "不支持目的端数据源为远程服务器上的SQLite或内存方式下的SQLite"); - } - } - } + Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); + DatabaseConnectionEntity entity = databaseConnectionDAO.getById(targetConnectionId); + if (ProductTypeEnum.SQLITE3 == entity.getType()) { + if (ProductTypeEnum.isUnsupportedTargetSqlite(entity.getUrl())) { + throw new DbswitchException(ResultCode.ERROR_INVALID_ASSIGNMENT_CONFIG, + "不支持目的端数据源为远程服务器上的SQLite或内存方式下的SQLite"); + } + } + } - public PageResult listAll(AssignmentSearchRequest request) { - Supplier> method = () -> { - List assignmentInfoResponseList = ConverterFactory.getConverter(AssignmentInfoConverter.class) - .convert(assignmentTaskDAO.listAll(request.getSearchText())); - assignmentInfoResponseList.forEach((e) -> { - AssignmentConfigEntity assignmentConfigEntity = this.assignmentConfigDAO.getByAssignmentTaskId(e.getId()); + public PageResult listAll(AssignmentSearchRequest request) { + Supplier> method = () -> { + List assignmentInfoResponseList = ConverterFactory.getConverter( + AssignmentInfoConverter.class) + .convert(assignmentTaskDAO.listAll(request.getSearchText())); + assignmentInfoResponseList.forEach((e) -> { + AssignmentConfigEntity assignmentConfigEntity = this.assignmentConfigDAO.getByAssignmentTaskId(e.getId()); - Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); - DatabaseConnectionEntity databaseConnectionEntity = this.databaseConnectionDAO.getById(sourceConnectionId); - String sourceSchema = assignmentConfigEntity.getSourceSchema(); - e.setSourceSchema(sourceSchema); - String sourceType = databaseConnectionEntity.getType().getName(); - e.setSourceType(sourceType); + Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); + DatabaseConnectionEntity databaseConnectionEntity = this.databaseConnectionDAO.getById(sourceConnectionId); + String sourceSchema = assignmentConfigEntity.getSourceSchema(); + e.setSourceSchema(sourceSchema); + String sourceType = databaseConnectionEntity.getType().getName(); + e.setSourceType(sourceType); - Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); - DatabaseConnectionEntity databaseConnectionEntity1 = this.databaseConnectionDAO.getById(targetConnectionId); - String targetSchema = assignmentConfigEntity.getTargetSchema(); - e.setTargetSchema(targetSchema); - String targetType = databaseConnectionEntity1.getType().getName(); - e.setTargetType(targetType); + Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); + DatabaseConnectionEntity databaseConnectionEntity1 = this.databaseConnectionDAO.getById(targetConnectionId); + String targetSchema = assignmentConfigEntity.getTargetSchema(); + e.setTargetSchema(targetSchema); + String targetType = databaseConnectionEntity1.getType().getName(); + e.setTargetType(targetType); - AssignmentJobEntity assignmentJobEntity = this.assignmentJobMapper.selectOne( - new LambdaQueryWrapper() - .eq(AssignmentJobEntity::getAssignmentId, e.getId()).orderByDesc(AssignmentJobEntity::getCreateTime) - .last(" limit 1 ")); - Integer status = (assignmentJobEntity == null || assignmentJobEntity.getStatus() == null) ? - JobStatusEnum.INIT.getValue() : - assignmentJobEntity.getStatus(); - e.setRunStatus(JobStatusEnum.of(status).getName()); + AssignmentJobEntity assignmentJobEntity = this.assignmentJobMapper.selectOne( + new LambdaQueryWrapper() + .eq(AssignmentJobEntity::getAssignmentId, e.getId()).orderByDesc(AssignmentJobEntity::getCreateTime) + .last(" limit 1 ")); + Integer status = (assignmentJobEntity == null || assignmentJobEntity.getStatus() == null) ? + JobStatusEnum.INIT.getValue() : + assignmentJobEntity.getStatus(); + e.setRunStatus(JobStatusEnum.of(status).getName()); - }); - return assignmentInfoResponseList; - }; - return PageUtils.getPage(method, request.getPage(), request.getSize()); - } + }); + return assignmentInfoResponseList; + }; + return PageUtils.getPage(method, request.getPage(), request.getSize()); + } - public Result detailAssignment(Long id) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - if (Objects.isNull(assignmentTaskEntity)) { - return Result.failed(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + id); - } + public Result detailAssignment(Long id) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + if (Objects.isNull(assignmentTaskEntity)) { + return Result.failed(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + id); + } - AssignmentDetailResponse detailResponse = ConverterFactory - .getConverter(AssignmentDetailConverter.class).convert(assignmentTaskEntity); - return Result.success(detailResponse); - } + AssignmentDetailResponse detailResponse = ConverterFactory + .getConverter(AssignmentDetailConverter.class).convert(assignmentTaskEntity); + return Result.success(detailResponse); + } - @Transactional(rollbackFor = Exception.class) - public void deployAssignments(List ids) { - checkAssignmentAllExist(ids); - ids.forEach(id -> { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - if (assignmentTaskEntity.getPublished()) { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, "ID=" + id); - } - }); + @Transactional(rollbackFor = Exception.class) + public void deployAssignments(List ids) { + checkAssignmentAllExist(ids); + ids.forEach(id -> { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + if (assignmentTaskEntity.getPublished()) { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_HAS_DEPLOY, "ID=" + id); + } + }); - for (Long id : ids) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - AssignmentConfigEntity assignmentConfigEntity = assignmentConfigDAO.getByAssignmentTaskId(id); + for (Long id : ids) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + AssignmentConfigEntity assignmentConfigEntity = assignmentConfigDAO.getByAssignmentTaskId(id); - DbswichPropertiesConfiguration properties = new DbswichPropertiesConfiguration(); - properties.setSource(this.getSourceDataSourceProperties(assignmentConfigEntity)); - properties.setTarget(this.getTargetDataSourceProperties(assignmentConfigEntity)); - properties.setConfig(this.getGlobalParamConfigProperties(assignmentConfigEntity)); + DbswichPropertiesConfiguration properties = new DbswichPropertiesConfiguration(); + properties.setSource(this.getSourceDataSourceProperties(assignmentConfigEntity)); + properties.setTarget(this.getTargetDataSourceProperties(assignmentConfigEntity)); + properties.setConfig(this.getGlobalParamConfigProperties(assignmentConfigEntity)); - assignmentTaskEntity.setPublished(Boolean.TRUE); - assignmentTaskEntity.setContent(JsonUtils.toJsonString(properties)); - assignmentTaskDAO.updateById(assignmentTaskEntity); + assignmentTaskEntity.setPublished(Boolean.TRUE); + assignmentTaskEntity.setContent(JsonUtils.toJsonString(properties)); + assignmentTaskDAO.updateById(assignmentTaskEntity); - ScheduleModeEnum systemScheduled = ScheduleModeEnum.SYSTEM_SCHEDULED; - if (assignmentTaskEntity.getScheduleMode() == systemScheduled) { - scheduleService.scheduleTask(assignmentTaskEntity.getId(), systemScheduled); - } - } + ScheduleModeEnum systemScheduled = ScheduleModeEnum.SYSTEM_SCHEDULED; + if (assignmentTaskEntity.getScheduleMode() == systemScheduled) { + scheduleService.scheduleTask(assignmentTaskEntity.getId(), systemScheduled); + } + } - } + } - @Transactional(rollbackFor = Exception.class) - public void runAssignments(List ids) { - checkAssignmentAllExist(ids); - List tasks = new ArrayList<>(); - for (Long id : ids) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - if (assignmentTaskEntity.getPublished()) { - tasks.add(assignmentTaskEntity); - } else { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_DEPLOY, assignmentTaskEntity.getName()); - } - } + @Transactional(rollbackFor = Exception.class) + public void runAssignments(List ids) { + checkAssignmentAllExist(ids); + List tasks = new ArrayList<>(); + for (Long id : ids) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + if (assignmentTaskEntity.getPublished()) { + tasks.add(assignmentTaskEntity); + } else { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_DEPLOY, assignmentTaskEntity.getName()); + } + } - tasks.forEach(assignmentTask -> { - scheduleService.scheduleTask(assignmentTask.getId(), ScheduleModeEnum.MANUAL); - }); + tasks.forEach(assignmentTask -> { + scheduleService.scheduleTask(assignmentTask.getId(), ScheduleModeEnum.MANUAL); + }); - } + } - @Transactional(rollbackFor = Exception.class) - public void retireAssignments(List ids) { - checkAssignmentAllExist(ids); - for (Long id : ids) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - if (Objects.nonNull(assignmentTaskEntity.getPublished()) - && assignmentTaskEntity.getPublished()) { - String jobKey = assignmentTaskEntity.getJobKey(); - scheduleService.cancelByJobKey(jobKey); - scheduleService.cancelManualJob(id); - assignmentTaskEntity.setPublished(Boolean.FALSE); - assignmentTaskEntity.setContent("{}"); - assignmentTaskEntity.setJobKey(""); - assignmentTaskDAO.updateById(assignmentTaskEntity); - } - } - } + @Transactional(rollbackFor = Exception.class) + public void retireAssignments(List ids) { + checkAssignmentAllExist(ids); + for (Long id : ids) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + if (Objects.nonNull(assignmentTaskEntity.getPublished()) + && assignmentTaskEntity.getPublished()) { + String jobKey = assignmentTaskEntity.getJobKey(); + scheduleService.cancelByJobKey(jobKey); + scheduleService.cancelManualJob(id); + assignmentTaskEntity.setPublished(Boolean.FALSE); + assignmentTaskEntity.setContent("{}"); + assignmentTaskEntity.setJobKey(""); + assignmentTaskDAO.updateById(assignmentTaskEntity); + } + } + } - private void checkAssignmentAllExist(List ids) { - for (Long id : ids) { - if (Objects.isNull(assignmentTaskDAO.getById(id))) { - throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + id); - } - } - } + private void checkAssignmentAllExist(List ids) { + for (Long id : ids) { + if (Objects.isNull(assignmentTaskDAO.getById(id))) { + throw new DbswitchException(ResultCode.ERROR_RESOURCE_NOT_EXISTS, "ID=" + id); + } + } + } - private SourceDataSourceProperties getSourceDataSourceProperties( - AssignmentConfigEntity assignmentConfigEntity) { - SourceDataSourceProperties sourceDataSourceProperties = new SourceDataSourceProperties(); - DatabaseConnectionEntity sourceDatabaseConnectionEntity = databaseConnectionDAO.getById( - assignmentConfigEntity.getSourceConnectionId() - ); - File driverVersionFile = driverLoadService.getVersionDriverFile( - sourceDatabaseConnectionEntity.getType(), - sourceDatabaseConnectionEntity.getVersion()); - sourceDataSourceProperties.setUrl(sourceDatabaseConnectionEntity.getUrl()); - sourceDataSourceProperties.setDriverClassName(sourceDatabaseConnectionEntity.getDriver()); - sourceDataSourceProperties.setDriverPath(driverVersionFile.getAbsolutePath()); - sourceDataSourceProperties.setUsername(sourceDatabaseConnectionEntity.getUsername()); - sourceDataSourceProperties.setPassword(sourceDatabaseConnectionEntity.getPassword()); + private SourceDataSourceProperties getSourceDataSourceProperties( + AssignmentConfigEntity assignmentConfigEntity) { + SourceDataSourceProperties sourceDataSourceProperties = new SourceDataSourceProperties(); + DatabaseConnectionEntity sourceDatabaseConnectionEntity = databaseConnectionDAO.getById( + assignmentConfigEntity.getSourceConnectionId() + ); + File driverVersionFile = driverLoadService.getVersionDriverFile( + sourceDatabaseConnectionEntity.getType(), + sourceDatabaseConnectionEntity.getVersion()); + sourceDataSourceProperties.setUrl(sourceDatabaseConnectionEntity.getUrl()); + sourceDataSourceProperties.setDriverClassName(sourceDatabaseConnectionEntity.getDriver()); + sourceDataSourceProperties.setDriverPath(driverVersionFile.getAbsolutePath()); + sourceDataSourceProperties.setUsername(sourceDatabaseConnectionEntity.getUsername()); + sourceDataSourceProperties.setPassword(sourceDatabaseConnectionEntity.getPassword()); - String sourceSchema = assignmentConfigEntity.getSourceSchema(); - if (assignmentConfigEntity.getExcluded()) { - if (CollectionUtils.isEmpty(assignmentConfigEntity.getSourceTables())) { - sourceDataSourceProperties.setSourceExcludes(""); - } else { - sourceDataSourceProperties.setSourceExcludes( - assignmentConfigEntity.getSourceTables() - .stream().collect(Collectors.joining(",")) - ); - } - } else { - if (CollectionUtils.isEmpty(assignmentConfigEntity.getSourceTables())) { - sourceDataSourceProperties.setSourceIncludes(""); - } else { - sourceDataSourceProperties.setSourceIncludes( - assignmentConfigEntity.getSourceTables() - .stream().collect(Collectors.joining(",")) - ); - } - } - sourceDataSourceProperties.setSourceSchema(sourceSchema); - sourceDataSourceProperties.setRegexTableMapper(assignmentConfigEntity.getTableNameMap()); - sourceDataSourceProperties.setRegexColumnMapper(assignmentConfigEntity.getColumnNameMap()); - sourceDataSourceProperties.setFetchSize(assignmentConfigEntity.getBatchSize()); - sourceDataSourceProperties.setTableType(assignmentConfigEntity.getTableType().name()); - return sourceDataSourceProperties; - } + String sourceSchema = assignmentConfigEntity.getSourceSchema(); + if (assignmentConfigEntity.getExcluded()) { + if (CollectionUtils.isEmpty(assignmentConfigEntity.getSourceTables())) { + sourceDataSourceProperties.setSourceExcludes(""); + } else { + sourceDataSourceProperties.setSourceExcludes( + assignmentConfigEntity.getSourceTables() + .stream().collect(Collectors.joining(",")) + ); + } + } else { + if (CollectionUtils.isEmpty(assignmentConfigEntity.getSourceTables())) { + sourceDataSourceProperties.setSourceIncludes(""); + } else { + sourceDataSourceProperties.setSourceIncludes( + assignmentConfigEntity.getSourceTables() + .stream().collect(Collectors.joining(",")) + ); + } + } + sourceDataSourceProperties.setSourceSchema(sourceSchema); + sourceDataSourceProperties.setRegexTableMapper(assignmentConfigEntity.getTableNameMap()); + sourceDataSourceProperties.setRegexColumnMapper(assignmentConfigEntity.getColumnNameMap()); + sourceDataSourceProperties.setFetchSize(assignmentConfigEntity.getBatchSize()); + sourceDataSourceProperties.setTableType(assignmentConfigEntity.getTableType().name()); + return sourceDataSourceProperties; + } - private TargetDataSourceProperties getTargetDataSourceProperties( - AssignmentConfigEntity assignmentConfigEntity) { - TargetDataSourceProperties targetDataSourceProperties = new TargetDataSourceProperties(); - DatabaseConnectionEntity targetDatabaseConnectionEntity = databaseConnectionDAO - .getById(assignmentConfigEntity.getTargetConnectionId()); - File driverVersionFile = driverLoadService.getVersionDriverFile( - targetDatabaseConnectionEntity.getType(), - targetDatabaseConnectionEntity.getVersion()); - targetDataSourceProperties.setUrl(targetDatabaseConnectionEntity.getUrl()); - targetDataSourceProperties.setDriverClassName(targetDatabaseConnectionEntity.getDriver()); - targetDataSourceProperties.setDriverPath(driverVersionFile.getAbsolutePath()); - targetDataSourceProperties.setUsername(targetDatabaseConnectionEntity.getUsername()); - targetDataSourceProperties.setPassword(targetDatabaseConnectionEntity.getPassword()); - targetDataSourceProperties.setTargetSchema(assignmentConfigEntity.getTargetSchema()); - if (assignmentConfigEntity.getTargetDropTable()) { - targetDataSourceProperties.setTargetDrop(Boolean.TRUE); - targetDataSourceProperties.setChangeDataSync(Boolean.FALSE); - } else { - targetDataSourceProperties.setTargetDrop(Boolean.FALSE); - targetDataSourceProperties.setChangeDataSync(Boolean.TRUE); - } - if (assignmentConfigEntity.getTargetOnlyCreate()) { - targetDataSourceProperties.setOnlyCreate(Boolean.TRUE); - } - if (assignmentConfigEntity.getTargetAutoIncrement()) { - targetDataSourceProperties.setCreateTableAutoIncrement(Boolean.TRUE); - } - targetDataSourceProperties.setTableNameCase(assignmentConfigEntity.getTableNameCase()); - targetDataSourceProperties.setColumnNameCase(assignmentConfigEntity.getColumnNameCase()); - targetDataSourceProperties.setTargetSyncOption(assignmentConfigEntity.getTargetSyncOption()); - targetDataSourceProperties.setBeforeSqlScripts(assignmentConfigEntity.getBeforeSqlScripts()); - targetDataSourceProperties.setAfterSqlScripts(assignmentConfigEntity.getAfterSqlScripts()); + private TargetDataSourceProperties getTargetDataSourceProperties( + AssignmentConfigEntity assignmentConfigEntity) { + TargetDataSourceProperties targetDataSourceProperties = new TargetDataSourceProperties(); + DatabaseConnectionEntity targetDatabaseConnectionEntity = databaseConnectionDAO + .getById(assignmentConfigEntity.getTargetConnectionId()); + File driverVersionFile = driverLoadService.getVersionDriverFile( + targetDatabaseConnectionEntity.getType(), + targetDatabaseConnectionEntity.getVersion()); + targetDataSourceProperties.setUrl(targetDatabaseConnectionEntity.getUrl()); + targetDataSourceProperties.setDriverClassName(targetDatabaseConnectionEntity.getDriver()); + targetDataSourceProperties.setDriverPath(driverVersionFile.getAbsolutePath()); + targetDataSourceProperties.setUsername(targetDatabaseConnectionEntity.getUsername()); + targetDataSourceProperties.setPassword(targetDatabaseConnectionEntity.getPassword()); + targetDataSourceProperties.setTargetSchema(assignmentConfigEntity.getTargetSchema()); + if (assignmentConfigEntity.getTargetDropTable()) { + targetDataSourceProperties.setTargetDrop(Boolean.TRUE); + targetDataSourceProperties.setChangeDataSync(Boolean.FALSE); + } else { + targetDataSourceProperties.setTargetDrop(Boolean.FALSE); + targetDataSourceProperties.setChangeDataSync(Boolean.TRUE); + } + if (assignmentConfigEntity.getTargetOnlyCreate()) { + targetDataSourceProperties.setOnlyCreate(Boolean.TRUE); + } + if (assignmentConfigEntity.getTargetAutoIncrement()) { + targetDataSourceProperties.setCreateTableAutoIncrement(Boolean.TRUE); + } + targetDataSourceProperties.setTableNameCase(assignmentConfigEntity.getTableNameCase()); + targetDataSourceProperties.setColumnNameCase(assignmentConfigEntity.getColumnNameCase()); + targetDataSourceProperties.setTargetSyncOption(assignmentConfigEntity.getTargetSyncOption()); + targetDataSourceProperties.setBeforeSqlScripts(assignmentConfigEntity.getBeforeSqlScripts()); + targetDataSourceProperties.setAfterSqlScripts(assignmentConfigEntity.getAfterSqlScripts()); - return targetDataSourceProperties; - } + return targetDataSourceProperties; + } - private GlobalParamConfigProperties getGlobalParamConfigProperties( - AssignmentConfigEntity assignmentConfigEntity) { - GlobalParamConfigProperties configProperties = new GlobalParamConfigProperties(); - configProperties.setChannelQueueSize(assignmentConfigEntity.getChannelSize()); - return configProperties; - } + private GlobalParamConfigProperties getGlobalParamConfigProperties( + AssignmentConfigEntity assignmentConfigEntity) { + GlobalParamConfigProperties configProperties = new GlobalParamConfigProperties(); + configProperties.setChannelQueueSize(assignmentConfigEntity.getChannelSize()); + return configProperties; + } - public void exportAssignments(List ids, HttpServletResponse response) { - checkAssignmentAllExist(ids); - List assignmentsDataResponses = new ArrayList<>(); - for (Long id : ids) { - AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); - AssignmentsDataResponse assignmentsDataResponse = ConverterFactory.getConverter(AssignmentsConverter.class) - .convert(assignmentTaskEntity); + public void exportAssignments(List ids, HttpServletResponse response) { + checkAssignmentAllExist(ids); + List assignmentsDataResponses = new ArrayList<>(); + for (Long id : ids) { + AssignmentTaskEntity assignmentTaskEntity = assignmentTaskDAO.getById(id); + AssignmentsDataResponse assignmentsDataResponse = ConverterFactory.getConverter(AssignmentsConverter.class) + .convert(assignmentTaskEntity); - AssignmentConfigEntity assignmentConfigEntity = this.assignmentConfigDAO.getByAssignmentTaskId(id); + AssignmentConfigEntity assignmentConfigEntity = this.assignmentConfigDAO.getByAssignmentTaskId(id); - Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); - DatabaseConnectionEntity databaseConnectionEntity = this.databaseConnectionDAO.getById(sourceConnectionId); - String sourceSchema = assignmentConfigEntity.getSourceSchema(); - assignmentsDataResponse.setSourceSchema(sourceSchema); - String sourceType = databaseConnectionEntity.getType().getName(); - assignmentsDataResponse.setSourceType(sourceType); + Long sourceConnectionId = assignmentConfigEntity.getSourceConnectionId(); + DatabaseConnectionEntity databaseConnectionEntity = this.databaseConnectionDAO.getById(sourceConnectionId); + String sourceSchema = assignmentConfigEntity.getSourceSchema(); + assignmentsDataResponse.setSourceSchema(sourceSchema); + String sourceType = databaseConnectionEntity.getType().getName(); + assignmentsDataResponse.setSourceType(sourceType); - Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); - DatabaseConnectionEntity databaseConnectionEntity1 = this.databaseConnectionDAO.getById(targetConnectionId); - String targetSchema = assignmentConfigEntity.getTargetSchema(); - assignmentsDataResponse.setTargetSchema(targetSchema); - String targetType = databaseConnectionEntity1.getType().getName(); - assignmentsDataResponse.setTargetType(targetType); + Long targetConnectionId = assignmentConfigEntity.getTargetConnectionId(); + DatabaseConnectionEntity databaseConnectionEntity1 = this.databaseConnectionDAO.getById(targetConnectionId); + String targetSchema = assignmentConfigEntity.getTargetSchema(); + assignmentsDataResponse.setTargetSchema(targetSchema); + String targetType = databaseConnectionEntity1.getType().getName(); + assignmentsDataResponse.setTargetType(targetType); - AssignmentJobEntity assignmentJobEntity = this.assignmentJobMapper.selectOne( - new LambdaQueryWrapper() - .eq(AssignmentJobEntity::getAssignmentId, assignmentsDataResponse.getId()).orderByDesc(AssignmentJobEntity::getCreateTime) - .last(" limit 1 ")); - Integer status = (assignmentJobEntity == null || assignmentJobEntity.getStatus() == null) ? - JobStatusEnum.INIT.getValue() : - assignmentJobEntity.getStatus(); - assignmentsDataResponse.setRunStatus(JobStatusEnum.of(status).getName()); - assignmentsDataResponses.add(assignmentsDataResponse); - } - EasyexcelUtils.write(response,AssignmentsDataResponse.class,assignmentsDataResponses,"任务管理","任务管理列表"); - } + AssignmentJobEntity assignmentJobEntity = this.assignmentJobMapper.selectOne( + new LambdaQueryWrapper() + .eq(AssignmentJobEntity::getAssignmentId, assignmentsDataResponse.getId()) + .orderByDesc(AssignmentJobEntity::getCreateTime) + .last(" limit 1 ")); + Integer status = (assignmentJobEntity == null || assignmentJobEntity.getStatus() == null) ? + JobStatusEnum.INIT.getValue() : + assignmentJobEntity.getStatus(); + assignmentsDataResponse.setRunStatus(JobStatusEnum.of(status).getName()); + assignmentsDataResponses.add(assignmentsDataResponse); + } + EasyexcelUtils.write(response, AssignmentsDataResponse.class, assignmentsDataResponses, "任务管理", "任务管理列表"); + } } diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java index b2153abd..37257e76 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java @@ -164,7 +164,7 @@ public class ConnectionService { MetadataService metaDataService = getMetaDataCoreService(dbConn); try { List tables = Optional.ofNullable( - metaDataService.queryTableList(schema)) + metaDataService.queryTableList(schema)) .orElseGet(ArrayList::new).stream() .filter(t -> !t.isViewTable()) .map(t -> t.getTableName()) @@ -180,7 +180,7 @@ public class ConnectionService { MetadataService metaDataService = getMetaDataCoreService(dbConn); try { List tables = Optional.ofNullable( - metaDataService.queryTableList(schema)) + metaDataService.queryTableList(schema)) .orElseGet(ArrayList::new).stream() .filter(t -> t.isViewTable()) .map(t -> t.getTableName()) diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/util/EasyexcelUtils.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/util/EasyexcelUtils.java index c94d8452..81144f6a 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/util/EasyexcelUtils.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/util/EasyexcelUtils.java @@ -26,26 +26,26 @@ import com.gitee.dbswitch.admin.common.response.ResultCode; */ public final class EasyexcelUtils { - public static void write(HttpServletResponse response, Class clazz, List list, String fileName, - String sheetName) { + public static void write(HttpServletResponse response, Class clazz, List list, String fileName, + String sheetName) { - try { - // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman - // response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setContentType("application/vnd.ms-excel"); - response.setCharacterEncoding("utf-8"); - // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 - fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); - // response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); - response.setHeader("Cache-Control", "no-cache"); - response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); - EasyExcel.write(response.getOutputStream(), clazz) - .sheet(sheetName) - .doWrite(list); - } catch (IOException ex) { - throw new DbswitchException(ResultCode.ERROR_INTERNAL_ERROR, ex.getMessage()); - } + try { + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + // response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + // response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); + EasyExcel.write(response.getOutputStream(), clazz) + .sheet(sheetName) + .doWrite(list); + } catch (IOException ex) { + throw new DbswitchException(ResultCode.ERROR_INTERNAL_ERROR, ex.getMessage()); + } - } + } } diff --git a/dbswitch-common/src/main/java/com/gitee/dbswitch/common/util/JdbcUrlUtils.java b/dbswitch-common/src/main/java/com/gitee/dbswitch/common/util/JdbcUrlUtils.java index dc15f501..121e96fe 100644 --- a/dbswitch-common/src/main/java/com/gitee/dbswitch/common/util/JdbcUrlUtils.java +++ b/dbswitch-common/src/main/java/com/gitee/dbswitch/common/util/JdbcUrlUtils.java @@ -84,9 +84,9 @@ public final class JdbcUrlUtils { return true; } - public static String getTemplateUrl(String url){ + public static String getTemplateUrl(String url) { return url.replaceAll("\\[(\\?|;|:)\\{params}\\]|\\[|\\]", "") - .replace("\\?{params}",""); + .replace("\\?{params}", ""); } /**