diff --git a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/DataxJsonServiceImpl.java b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/DataxJsonServiceImpl.java index 71a6560b..fe1079a4 100644 --- a/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/DataxJsonServiceImpl.java +++ b/datax-admin/src/main/java/com/wugui/datax/admin/service/impl/DataxJsonServiceImpl.java @@ -9,6 +9,10 @@ import com.wugui.datax.admin.tool.datax.DataxJsonHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * com.wugui.datax json构建实现类 * @@ -20,18 +24,32 @@ import org.springframework.stereotype.Service; @Service public class DataxJsonServiceImpl implements DataxJsonService { + private static final String[] sqlDataSource = new String[]{"mysql", "oracle", "postgresql", "sqlserver", "hive"}; + @Autowired - private IJobJdbcDatasourceService jdbcDatasourceService; + private IJobJdbcDatasourceService jobJdbcDatasourceService; @Override - public String buildJobJson(DataxJsonDto dto) { + public String buildJobJson(DataxJsonDto dataxJsonDto) { DataxJsonHelper dataxJsonHelper = new DataxJsonHelper(); // reader - JobJdbcDatasource readerDatasource = jdbcDatasourceService.getById(dto.getReaderDatasourceId()); + JobJdbcDatasource readerDatasource = jobJdbcDatasourceService.getById(dataxJsonDto.getReaderDatasourceId()); + if (Arrays.stream(sqlDataSource).anyMatch(db -> db.equals(readerDatasource.getDatasource()))) { + List readerColumns = dataxJsonDto.getReaderColumns().stream() + .map(column -> "`" + column + "`") + .collect(Collectors.toList()); + dataxJsonDto.setReaderColumns(readerColumns); + } // reader plugin init - dataxJsonHelper.initReader(dto, readerDatasource); - JobJdbcDatasource writerDatasource = jdbcDatasourceService.getById(dto.getWriterDatasourceId()); - dataxJsonHelper.initWriter(dto, writerDatasource); + dataxJsonHelper.initReader(dataxJsonDto,readerDatasource); + JobJdbcDatasource writerDatasource = jobJdbcDatasourceService.getById(dataxJsonDto.getWriterDatasourceId()); + if (Arrays.stream(sqlDataSource).anyMatch(db -> db.equals(writerDatasource.getDatasource()))) { + List writerColumns = dataxJsonDto.getWriterColumns().stream() + .map(column -> "`" + column + "`") + .collect(Collectors.toList()); + dataxJsonDto.setWriterColumns(writerColumns); + } + dataxJsonHelper.initWriter(dataxJsonDto,writerDatasource); return JSON.toJSONString(dataxJsonHelper.buildJob()); } -} +} \ No newline at end of file