提交 30c6f92b 编写于 作者: sq3536's avatar sq3536

push

上级 503b9474
......@@ -41,8 +41,6 @@ public class DefaultGenerator implements Generator {
private static final String METADATA_DIR = ".ibizlab-generator";
protected CodegenConfig config;
private String basePath;
private String contextPath;
private Map<String, String> generatorPropertyDefaults = new HashMap<>();
protected TemplateProcessor templateProcessor = null;
......
......@@ -7,6 +7,7 @@ import cn.ibizlab.codegen.utils.DataObject;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
......@@ -17,6 +18,7 @@ import java.util.Map;
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
@JsonIgnoreProperties(value = "handler")
public class EntityModel {
......
......@@ -3,6 +3,7 @@ package cn.ibizlab.codegen.model;
import cn.ibizlab.codegen.CodegenConstants;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -13,6 +14,8 @@ import java.util.Map;
public class CliData extends DataObj
{
private static CliData EMPTY = new CliData().setOptions(new ArrayList<>());
public CliData set(String key, Object value)
{
......@@ -30,7 +33,7 @@ public class CliData extends DataObj
}
private List<CliOption> options;
private List<CliOption> options=new ArrayList<>();
public List<CliOption> getOptions()
{
......@@ -44,21 +47,34 @@ public class CliData extends DataObj
}
public CliData addOption(CliOption option) {
if(this.options==null)
this.options=new ArrayList<>();
this.options.add(option);
if(!StringUtils.isEmpty(option.getCliSubType()))
addSubTypeOption(option);
return this;
}
List<CliOption> subTypes=null;
public CliData addSubTypeOption(CliOption option) {
CliData subData=null;
Object sub=this.get(option.getCliSubType());
if(sub==null)
{
subTypes=new ArrayList<>();
this.set(option.getCliSubType(),subTypes);
subData=new CliData();
this.set(option.getCliSubType(),subData);
}
else
subTypes=(List<CliOption>)sub;
subTypes.add(option);
subData=(CliData)sub;
subData.getOptions().add(option);
return this;
}
public CliData getSubData(String subType)
{
if(this.containsKey(subType))
return (CliData)this.get(subType);
return EMPTY;
}
}
package cn.ibizlab.codegen.model;
import cn.ibizlab.codegen.templating.TemplateFileType;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import cn.ibizlab.codegen.CodegenConstants;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.util.Map;
......@@ -10,15 +13,41 @@ import java.util.Map;
@JsonIgnoreProperties(ignoreUnknown = true)
public class CliOption extends DataObj
{
public CliOption setCliSubType(String type)
private TemplateFileType templateFileType;
public CliOption setTemplateFileType(TemplateFileType templateFileType)
{
this.templateFileType=templateFileType;
return this;
}
public TemplateFileType getTemplateFileType()
{
return this.templateFileType;
}
private String cliSubType;
public CliOption setCliSubType(String cliSubType)
{
this.set("_cli-sub-type",type);
this.cliSubType=cliSubType;
return this;
}
public String getCliSubType()
{
return this.getStringValue("_cli-sub-type","default");
return this.cliSubType;
}
public CliOption baseData(Object baseData,String name)
{
Assert.notNull(templateFileType,"模板类型为空");
this.set(templateFileType.name(),baseData);
this.set(templateFileType.value(),name);
if(!StringUtils.isEmpty(this.cliSubType))
this.set(templateFileType.value()+"#"+this.cliSubType,name);
return this;
}
public CliOption set(String key, Object value)
......@@ -37,7 +66,7 @@ public class CliOption extends DataObj
}
public String getProjectName(){
return this.getStringValue("projectName",this.getStringValue("system_id",this.getStringValue("system",this.getStringValue("system_name"))));
return this.getStringValue(CodegenConstants.PROJECT_NAME,this.getStringValue("system_id",this.getStringValue("system",this.getStringValue("system_name"))));
}
public CliOption setProjectName(String projectName)
......@@ -51,7 +80,7 @@ public class CliOption extends DataObj
}
public String getPackageName(){
return this.getStringValue("packageName","cn.ibizlab");
return this.getStringValue(CodegenConstants.PACKAGE_NAME,"cn.ibizlab");
}
public CliOption setPackageName(String packageName)
......
......@@ -42,10 +42,12 @@ public class ModelStorage {
public CliOption newCliOption()
public CliOption newCliOption(TemplateFileType type)
{
CliOption opt=new CliOption();
opt.putAll(config.getAdditionalProperties());
opt.setTemplateFileType(type);
IPSSystem ipsSystem=dynamicService.getPSSystem();
if(StringUtils.isEmpty(config.getAdditionalProperties().get(CodegenConstants.PROJECT_NAME)))
opt.setProjectName(ipsSystem.getCodeName().toLowerCase()).toString();
......@@ -53,6 +55,7 @@ public class ModelStorage {
opt.setProjectDesc(ipsSystem.getName().toLowerCase()).toString();
if(StringUtils.isEmpty(config.getAdditionalProperties().get(CodegenConstants.PACKAGE_NAME)))
opt.setPackageName(ipsSystem.getCodeName().toLowerCase()).toString();
opt.set("system",ipsSystem);
return opt;
}
......@@ -89,7 +92,7 @@ public class ModelStorage {
if(dynamicService.getPSSystem().getAllPSSysServiceAPIs()!=null)
{
dynamicService.getPSSystem().getAllPSSysServiceAPIs().forEach(item->{
CliOption opt=newCliOption().set(TemplateFileType.api.toString(),item).set(TemplateFileType.api.value(),item.getCodeName().toLowerCase());
CliOption opt=newCliOption(TemplateFileType.api).baseData(item,item.getCodeName().toLowerCase());
rt.addOption(opt);
});
}
......@@ -99,7 +102,7 @@ public class ModelStorage {
if(dynamicService.getPSSystem().getAllPSApps()!=null)
{
dynamicService.getPSSystem().getAllPSApps().forEach(item->{
CliOption opt=newCliOption().set(TemplateFileType.app.toString(),item).set(TemplateFileType.app.value(),item.getCodeName().toLowerCase());
CliOption opt=newCliOption(TemplateFileType.app).baseData(item,item.getCodeName().toLowerCase());
rt.addOption(opt);
});
}
......@@ -110,7 +113,7 @@ public class ModelStorage {
if(api.getPSDEServiceAPIs()!=null)
{
api.getPSDEServiceAPIs().forEach(item->{
CliOption opt=newCliOption().set(TemplateFileType.serviceApi.toString(),item).set(TemplateFileType.serviceApi.value(),item.getCodeName());
CliOption opt=newCliOption(TemplateFileType.serviceApi).baseData(item,item.getCodeName());
rt.addOption(opt);
});
}
......@@ -120,25 +123,26 @@ public class ModelStorage {
{
dynamicService.getPSSystem().getAllPSDataEntities().forEach(item->{
PojoSchema pojoSchema=this.getEntitySchema(item.getName());
CliOption opt=newCliOption().setModule(pojoSchema.getModule()).setCliSubType(pojoSchema.getStorageMode())
.set(TemplateFileType.entity.toString(),pojoSchema).set(TemplateFileType.entity.value(),item.getCodeName());
CliOption opt=newCliOption(TemplateFileType.entity).setCliSubType(pojoSchema.getStorageMode()).setModule(pojoSchema.getModule())
.baseData(pojoSchema,item.getCodeName());
rt.addOption(opt);
});
}
else if(type.equals(TemplateFileType.module))
{
dynamicService.getPSSystem().getAllPSSystemModules().forEach(item->{
CliOption opt=newCliOption()
.set(TemplateFileType.module.toString(),item).set(TemplateFileType.module.value(),item.getCodeName());
CliOption opt=newCliOption(TemplateFileType.module)
.baseData(item,item.getCodeName());
rt.addOption(opt);
});
}
else if(type.equals(TemplateFileType.supportingFiles))
{
CliOption opt=newCliOption();
opt.set(TemplateFileType.app.value(),getTemplateData(TemplateFileType.app));
opt.set(TemplateFileType.api.value(),getTemplateData(TemplateFileType.api));
opt.set(TemplateFileType.module.value(),getTemplateData(TemplateFileType.module));
CliOption opt=newCliOption(TemplateFileType.supportingFiles)
.set(TemplateFileType.app.value(),getTemplateData(TemplateFileType.app))
.set(TemplateFileType.api.value(),getTemplateData(TemplateFileType.api))
.set(TemplateFileType.module.value(),getTemplateData(TemplateFileType.module));
rt.addOption(opt);
}
templateData.put(type,rt);
......
......@@ -13,6 +13,8 @@ import java.nio.file.Paths;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Getter
@Setter
......@@ -23,7 +25,7 @@ public class TemplateDefinition {
protected TemplateFileType templateType;
private String subType="default";
private String subType;
protected CliData templateDatas;
......@@ -32,7 +34,11 @@ public class TemplateDefinition {
this.templateFile = templateFile;
this.templateType = getType(Paths.get(this.templateFile));
this.templateDatas= ModelStorage.getInstance().getTemplateData(this.templateType);
CliData data=ModelStorage.getInstance().getTemplateData(this.templateType);
if(StringUtils.isEmpty(subType))
this.templateDatas = data;
else
this.templateDatas = data.getSubData(subType);
}
......@@ -46,10 +52,20 @@ public class TemplateDefinition {
String fileName=path.getFileName().toString();
for(TemplateFileType type:TemplateFileType.values())
{
if(fileName.indexOf("{{"+type.name()+"}}")>=0
||fileName.indexOf("{{"+type.value()+"}}")>=0)
Pattern p = Pattern.compile("\\{\\{([^}]*)\\}\\}");
Matcher m = p.matcher(fileName);
while (m.find()) {
String[] pairs=m.group(1).split("#");
if(type.name().equalsIgnoreCase(pairs[0])
||type.value().equalsIgnoreCase(pairs[0])) {
if(pairs.length>1&&(!StringUtils.isEmpty(pairs[1])))
this.setSubType(pairs[1]);
return type;
}
}
}
return getType(path.getParent());
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册