💩 改进命名方式
This commit is contained in:
parent
1e07831818
commit
08c4ff9b6b
|
@ -6,7 +6,6 @@ import cn.bunny.domain.entity.TableMetaData;
|
||||||
import cn.bunny.exception.GeneratorCodeException;
|
import cn.bunny.exception.GeneratorCodeException;
|
||||||
import cn.bunny.utils.TypeConvertUtil;
|
import cn.bunny.utils.TypeConvertUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -23,6 +22,7 @@ import java.util.*;
|
||||||
public class DatabaseMetadataProvider implements IMetadataProvider {
|
public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
|
|
||||||
private final DataSource dataSource;
|
private final DataSource dataSource;
|
||||||
|
|
||||||
@Value("${bunny.master.database}")
|
@Value("${bunny.master.database}")
|
||||||
private String currentDatabase;
|
private String currentDatabase;
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
|
|
||||||
return primaryKeys;
|
return primaryKeys;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GeneratorCodeException("获取主键失败:" + e.getMessage());
|
throw new GeneratorCodeException("Get primary key error:" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
*
|
*
|
||||||
* @return 当前连接的数据库信息属性
|
* @return 当前连接的数据库信息属性
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
|
||||||
public DatabaseInfoMetaData databaseInfoMetaData() {
|
public DatabaseInfoMetaData databaseInfoMetaData() {
|
||||||
try (Connection connection = dataSource.getConnection()) {
|
try (Connection connection = dataSource.getConnection()) {
|
||||||
DatabaseMetaData metaData = connection.getMetaData();
|
DatabaseMetaData metaData = connection.getMetaData();
|
||||||
|
@ -73,6 +72,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
.username(metaData.getUserName())
|
.username(metaData.getUserName())
|
||||||
.currentDatabase(currentDatabase)
|
.currentDatabase(currentDatabase)
|
||||||
.build();
|
.build();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GeneratorCodeException("Get database info error:" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +83,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
* @param identifier 表名称或sql
|
* @param identifier 表名称或sql
|
||||||
* @return 表西悉尼
|
* @return 表西悉尼
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
|
||||||
@Override
|
@Override
|
||||||
public TableMetaData getTableMetadata(String identifier) {
|
public TableMetaData getTableMetadata(String identifier) {
|
||||||
TableMetaData tableMetaData;
|
TableMetaData tableMetaData;
|
||||||
|
@ -113,6 +113,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
return tableMetaData;
|
return tableMetaData;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new GeneratorCodeException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +123,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
*
|
*
|
||||||
* @return 所有表信息
|
* @return 所有表信息
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
|
||||||
public List<TableMetaData> getTableMetadataBatch(String dbName) {
|
public List<TableMetaData> getTableMetadataBatch(String dbName) {
|
||||||
// 当前数据库数据库所有的表
|
// 当前数据库数据库所有的表
|
||||||
List<TableMetaData> allTableInfo = new ArrayList<>();
|
List<TableMetaData> allTableInfo = new ArrayList<>();
|
||||||
|
@ -141,6 +142,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
|
|
||||||
allTableInfo.add(tableMetaData);
|
allTableInfo.add(tableMetaData);
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new GeneratorCodeException("Get error of [current/all] database tables" + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return allTableInfo;
|
return allTableInfo;
|
||||||
|
@ -152,7 +155,6 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
* @param identifier 表名称或sql
|
* @param identifier 表名称或sql
|
||||||
* @return 当前表所有的列内容
|
* @return 当前表所有的列内容
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
|
||||||
@Override
|
@Override
|
||||||
public List<ColumnMetaData> getColumnInfoList(String identifier) {
|
public List<ColumnMetaData> getColumnInfoList(String identifier) {
|
||||||
try (Connection connection = dataSource.getConnection()) {
|
try (Connection connection = dataSource.getConnection()) {
|
||||||
|
@ -198,6 +200,8 @@ public class DatabaseMetadataProvider implements IMetadataProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ArrayList<>(map.values());
|
return new ArrayList<>(map.values());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Get error of database columns mete data" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import java.util.List;
|
||||||
* 模板方法模式
|
* 模板方法模式
|
||||||
* 如果需要继承 AbstractVmsGenerator
|
* 如果需要继承 AbstractVmsGenerator
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractVmsGeneratorTemplate {
|
public abstract class AbstractTemplateGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加生成内容
|
* 添加生成内容
|
|
@ -15,7 +15,7 @@ import java.util.Date;
|
||||||
* 使用模板方法,方便扩展
|
* 使用模板方法,方便扩展
|
||||||
* 如果需要继承 AbstractVmsGenerator
|
* 如果需要继承 AbstractVmsGenerator
|
||||||
*/
|
*/
|
||||||
public class VmsArgumentDtoBaseTemplateGenerator extends AbstractTemplateGenerator {
|
public class VmsTemplateGenerator extends AbstractTemplateGenerator {
|
||||||
|
|
||||||
private final VmsArgumentDto dto;
|
private final VmsArgumentDto dto;
|
||||||
private final String path;
|
private final String path;
|
||||||
|
@ -26,7 +26,7 @@ public class VmsArgumentDtoBaseTemplateGenerator extends AbstractTemplateGenerat
|
||||||
* @param path 当前路径
|
* @param path 当前路径
|
||||||
* @param tableMetaData 表名称
|
* @param tableMetaData 表名称
|
||||||
*/
|
*/
|
||||||
public VmsArgumentDtoBaseTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) {
|
public VmsTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) {
|
||||||
this.dto = dto;
|
this.dto = dto;
|
||||||
this.path = path;
|
this.path = path;
|
||||||
this.tableMetaData = tableMetaData;
|
this.tableMetaData = tableMetaData;
|
|
@ -2,7 +2,7 @@ package cn.bunny.service.impl.vms;
|
||||||
|
|
||||||
import cn.bunny.core.factory.DatabaseMetadataProvider;
|
import cn.bunny.core.factory.DatabaseMetadataProvider;
|
||||||
import cn.bunny.core.factory.SqlMetadataProvider;
|
import cn.bunny.core.factory.SqlMetadataProvider;
|
||||||
import cn.bunny.core.template.VmsArgumentDtoBaseTemplateGenerator;
|
import cn.bunny.core.template.VmsTemplateGenerator;
|
||||||
import cn.bunny.domain.dto.VmsArgumentDto;
|
import cn.bunny.domain.dto.VmsArgumentDto;
|
||||||
import cn.bunny.domain.entity.ColumnMetaData;
|
import cn.bunny.domain.entity.ColumnMetaData;
|
||||||
import cn.bunny.domain.entity.TableMetaData;
|
import cn.bunny.domain.entity.TableMetaData;
|
||||||
|
@ -25,8 +25,8 @@ import java.util.stream.Collectors;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class VmsCodeGeneratorService {
|
public class VmsCodeGeneratorService {
|
||||||
|
|
||||||
private final DatabaseMetadataProvider databaseInfoCore;
|
private final DatabaseMetadataProvider databaseMetadataProvider;
|
||||||
private final SqlMetadataProvider sqlParserDatabaseInfo;
|
private final SqlMetadataProvider sqlMetadataProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据DTO生成代码模板
|
* 根据DTO生成代码模板
|
||||||
|
@ -44,7 +44,7 @@ public class VmsCodeGeneratorService {
|
||||||
|
|
||||||
return dto.getPath().stream()
|
return dto.getPath().stream()
|
||||||
.map(path -> {
|
.map(path -> {
|
||||||
VmsArgumentDtoBaseTemplateGenerator generator = new VmsArgumentDtoBaseTemplateGenerator(dto, path, tableMetaData);
|
VmsTemplateGenerator generator = new VmsTemplateGenerator(dto, path, tableMetaData);
|
||||||
StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList);
|
StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList);
|
||||||
String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName());
|
String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName());
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ public class VmsCodeGeneratorService {
|
||||||
*/
|
*/
|
||||||
private TableMetaData getTableMetadata(VmsArgumentDto dto, String tableName) {
|
private TableMetaData getTableMetadata(VmsArgumentDto dto, String tableName) {
|
||||||
return StringUtils.hasText(dto.getSql())
|
return StringUtils.hasText(dto.getSql())
|
||||||
? sqlParserDatabaseInfo.getTableMetadata(dto.getSql())
|
? sqlMetadataProvider.getTableMetadata(dto.getSql())
|
||||||
: databaseInfoCore.getTableMetadata(tableName);
|
: databaseMetadataProvider.getTableMetadata(tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -84,8 +84,8 @@ public class VmsCodeGeneratorService {
|
||||||
*/
|
*/
|
||||||
private List<ColumnMetaData> getColumnInfoList(String sql, String tableName) {
|
private List<ColumnMetaData> getColumnInfoList(String sql, String tableName) {
|
||||||
return StringUtils.hasText(sql)
|
return StringUtils.hasText(sql)
|
||||||
? sqlParserDatabaseInfo.getColumnInfoList(sql)
|
? sqlMetadataProvider.getColumnInfoList(sql)
|
||||||
: databaseInfoCore.getColumnInfoList(tableName).stream().distinct().toList();
|
: databaseMetadataProvider.getColumnInfoList(tableName).stream().distinct().toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue