package com.ai.tech.template;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import javax.annotation.PostConstruct;
import java.io.File;
import java.util.Map;
/**
* @Classname MavenTemplate
* @Description TODO
* @Date 4/25/2020 11:31 AM
* @Created by jason.yan
*/
@Slf4j
public abstract class MavenTemplate implements Template {
protected Configuration config;
@Autowired
protected Environment environment;
@PostConstruct
public void initProperties() {
log.info("初始化模板外部属性配置文件");
try {
this.config = new PropertiesConfiguration("template.properties");
} catch (ConfigurationException e) {
log.error(e.getMessage(), e);
}
}
@Override
public String getPackage(Map<String, Object> context) {
String basePackage = (String) context.get("basePackage");
if (!basePackage.endsWith(".")) {
basePackage += ".";
}
String templatePackage = config.getString(this.getNameSpace() + ".package");
if (templatePackage.startsWith(".")) {
templatePackage = templatePackage.substring(1);
}
return basePackage + templatePackage;
}
@Override
public String getOutputFile(Map<String, Object> context) {
String templatePackage = this.getPackage(context);
return getRootPath(this.getFileName())
+ "/"
+ templatePackage.replace(".", File.separator)
+ "/"
+ getGenertorFileName(context);
}
@Override
public String getGenertorFileName(Map<String, Object> context) {
String fileName = config.getString(getNameSpace() + ".namingRule");
// {className} 占位符处理
if (fileName.contains("{className}")) {
fileName = fileName.replace("{className}",
formatOutputFileNameValue(fileName, context));
}
// %s 占位符处理
if (fileName.contains("%s")) {
fileName = String.format(fileName, formatOutputFileNameValue(fileName, context));
}
return fileName;
}
/**
* 格式化替换文件名中的{className}
* 不同的文件生成命名规则可以通过子类重写返回的value值实现
* @param propertiesConfigFileName
* @param context
* @return
*/
protected String formatOutputFileNameValue(String propertiesConfigFileName,
Map<String, Object> context) {
return (String) context.get("className");
}
@Override
public String getTemplatePath(Map<String, Object> context) {
return config.getString(getNameSpace() + ".templatePath");
}
@Override
public boolean isEnabled() {
try {
return config.getBoolean(getNameSpace() + ".enabled");
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return false;
}
@Override
public int getOrder() {
return config.getInt(getNameSpace() + ".order", Integer.MAX_VALUE/2);
}
/**
* 模板渲染完成后处理
* @param context
*/
@Override
public void before(Map<String, Object> context) {
String basePackage = (String) context.get("basePackage");
if (!basePackage.endsWith(".")) {
basePackage += ".";
}
// 包名处理
String nameSpace = getNameSpace();
String nameSpacePackage = config.getString(nameSpace + ".package");
if (nameSpacePackage.startsWith(".")) {
nameSpacePackage = nameSpacePackage.substring(0);
}
context.put(nameSpace + "Package", basePackage + nameSpacePackage);
String nameingRule= config.getString(nameSpace + ".namingRule");
// 去掉拓展名
nameingRule = nameingRule.substring(0, nameingRule .lastIndexOf("."));
String componentServiceName = nameingRule.replace("{className}",
(String) context.get("className"));
context.put(nameSpace + "Name", componentServiceName);
// 赋值 注入变量名
context.put(nameSpace + "AutoName", smallHump(componentServiceName));
// 追加模板赋值处理
setData(context);
}
protected String smallHump(String source) {
char[] chars = new char[1];
chars[0] = source.charAt(0);
String temp = new String(chars);
if (chars[0] >= 'A' && chars[0] <= 'Z') {
return source.replaceFirst(temp, temp.toLowerCase());
}
return source;
}
/**
* 空实现
* 子类重写 赋值数据
* @param context
*/
protected void setData(Map<String, Object> context) {
}
protected String getRootPath(String fileName) {
if ("java".equalsIgnoreCase(fileName)) {
return "src/main/java";
}
return "src/main/resources";
}
protected String getRootPath() {
return "src/main/resources";
}
protected boolean isEnabledFromTemplateProperties(String key) {
try {
return config.getBoolean(key);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return false;
}
protected abstract String getFileName();
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目描述 干货分享,减少重复劳动,让工作更专注,为提高开发效率而出的代码生成器,支持mysql,sqlserver,oracle 等主流数据库,单表增删改查一键生成,大家可随意修改模版来满足你的需要。 运行环境 jdk8+ 项目技术(必填) springBoot+mybatis+bootstrap+jquery 数据库文件(可选) 项目自带
资源推荐
资源详情
资源评论
收起资源包目录
springboot + mybatis plus + vue代码生成器 (138个子文件)
.classpath 1KB
bootstrap.min.css 118KB
AdminLTE.min.css 88KB
all-skins.min.css 40KB
font-awesome.min.css 30KB
ui.jqgrid-bootstrap.css 19KB
ui.jqgrid.css 17KB
layer.css 14KB
layer.css 5KB
style.css 3KB
main.css 1KB
ui.jqgrid-bootstrap-ui.css 692B
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
fontawesome-webfont.eot 162KB
glyphicons-halflings-regular.eot 20KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-1.gif 701B
index.html 4KB
generator.html 1KB
main.html 444B
favicon.ico 8KB
biz-solution-generator.iml 12KB
MavenTemplate.java 6KB
MysqlCalculator.java 4KB
VelocityUtils.java 4KB
GenUtils.java 3KB
ConvertTemplate.java 3KB
GaePythonCalculator.java 3KB
GlobalCalculator.java 2KB
SysGeneratorService.java 2KB
BlobTypeHandler.java 2KB
SysGeneratorController.java 2KB
ColumnEntity.java 2KB
PageUtils.java 2KB
RRExceptionHandler.java 2KB
DbConfig.java 1KB
BaseCalculatorContext.java 1KB
TableEntity.java 1KB
PythonTemplate.java 1KB
DataTemplate.java 1KB
GeneratorDao.java 1024B
ServiceImplTemplate.java 1023B
Query.java 1015B
R.java 977B
RRException.java 924B
CalculatorContextInit.java 885B
SpringBeanFactory.java 833B
DateUtils.java 760B
ResourcesTemplate.java 727B
SpringBootCalculator.java 718B
FireStoreTemplate.java 715B
Template.java 609B
ModelTemplate.java 566B
MenuSqlTemplate.java 546B
FacadeTemplate.java 471B
DataBaseCalculator.java 469B
CalculatorContext.java 457B
TemplateDelegate.java 434B
GeneratorApplication.java 402B
IndexVueTemplate.java 395B
AddOrUpdateVueTemplate.java 382B
XmlMapperTemplate.java 372B
ControllerTemplate.java 369B
ServiceTemplate.java 363B
DaoTemplate.java 355B
GeneratorApplicationTests.java 346B
JavaTemplate.java 346B
PostgreSQLGeneratorDao.java 240B
SQLServerGeneratorDao.java 238B
MySQLGeneratorDao.java 235B
OracleGeneratorDao.java 232B
Constant.java 156B
jquery.jqGrid.min.js 328KB
jquery.min.js 84KB
vue.min.js 77KB
bootstrap.min.js 36KB
app.js 23KB
layer.js 21KB
app.min.js 10KB
grid.locale-cn.js 9KB
fastclick.min.js 9KB
jquery.slimscroll.min.js 6KB
layer.js 3KB
common.js 2KB
router.js 2KB
generator.js 2KB
index.js 1KB
FontAwesome.otf 132KB
共 138 条
- 1
- 2
资源评论
源码头
- 粉丝: 253
- 资源: 504
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功