代码拉取完成,页面将自动刷新
同步操作将从 wxd_tony1984/DevelopAssistant 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using NVelocity;
using NVelocity.App;
using NVelocity.Runtime;
using System;
using System.Collections.Generic;
using System.Data;
namespace DevelopAssistant.AddIn.JavaProject
{
public class JavaSpringBootHelper
{
private static readonly string templete="template";
private static string currentDirectory
{
get
{
return AppDomain.CurrentDomain.BaseDirectory;
}
}
private static bool ArrayContains(string[] array,string str)
{
bool result = false;
if(array!=null && array.Length > 0)
{
for(int i = 0; i < array.Length; i++)
{
if (string.Equals(array[i].ToString(),
str, StringComparison.OrdinalIgnoreCase))
{
result = true;
break;
}
}
}
return result;
}
private static string ToJavaDataType(string dataType)
{
string result = "String";
switch (dataType.ToLower())
{
case "uuid":
case "xml":
case "text":
case "varchar":
case "nvarchar":
case "character":
case "character varying":
result = "String";
break;
case "date":
case "datetime":
case "timestamp":
result = "Date";
break;
case "int":
case "smallint":
result = "int";
break;
case "integer":
result = "integer";
break;
case "bigint":
result = "long";
break;
case "numeric":
result = "Number";
break;
case "float":
result = "float";
break;
case "double":
result = "double";
break;
case "bit":
case "boolean":
result = "boolean";
break;
case "bytea":
case "image":
case "varbinary":
result = "byte[]";
break;
}
return result;
}
private static string ToIdType(string dataType)
{
string result = "AUTO";
switch (dataType)
{
case "varchar":
result = "ASSIGN_UUID";
break;
case "bigint":
result = "AUTO";
break;
}
return result;
}
private static string ToJdbcType(string dataType)
{
string result = "VARCHAR";
switch (dataType.ToLower())
{
case "string":
case "nvarchar":
result = "VARCHAR";
break;
case "boolean":
result = "BOOLEAN";
break;
case "byte":
result = "TINYINT";
break;
case "byte[]":
result = "VARBINARY";
break;
case "long":
result = "BIGINT";
break;
case "decimal":
case "numberic":
result = "NUMERIC";
break;
case "float":
result = "REAL";
break;
case "double":
result = "DOUBLE";
break;
case "date":
case "timestamp":
result = "TIMESTAMP";
break;
case "time":
result = "TIME";
break;
default:
result = "VARCHAR";
break;
}
return result;
}
private static string ToOrderBies(List<QueryEntity> orderbies)
{
string result = "";
for (int i = 0; i < orderbies.Count; i++)
{
QueryEntity entity = orderbies[i];
if (i == 0)
{
result += entity.Column + " " + entity.Value;
}
else
{
result += "," + entity.Column + " " + entity.Value;
}
}
return result;
}
private static void DoColumnInfoParse(DataTableColumnInfo column,string cisnull)
{
string[] strings = cisnull.Split(',');
if (ArrayContains(strings, "pk"))
{
column.IsParmaryKey = true;
}
if (ArrayContains(strings, "identity"))
{
column.IsParmaryKey = true;
}
if (column.PropertyDataType.Equals("Date"))
{
column.JsonFormat = "yyyy-MM-dd HH:mm:ss";
}
if (string.IsNullOrEmpty(column.Description))
{
column.Description = column.ColumnName;
}
}
private static ResultEntity GenerateEntityCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
string codeText = "";
try
{
Template vltTemplate = vltEngine.GetTemplate("EntityTemplate.tt");
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
}
catch(Exception ex)
{
DevelopAssistant.Common.NLogger.LogError(ex);
}
result.Name = entityName;
result.TypeName = "Entity";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateDTOCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
string codeText = "";
try
{
Template vltTemplate = vltEngine.GetTemplate("DTOTemplate.tt");
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
}
catch (Exception ex)
{
DevelopAssistant.Common.NLogger.LogError(ex);
}
result.Name = entityName;
result.TypeName = "DTO";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateMapperCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext, List<DataTableColumnInfo> columns, QueryWrapper wrapper)
{
ResultEntity result = new ResultEntity();
string codeText = "";
try
{
Template vltTemplate = vltEngine.GetTemplate("MapperTemplate.tt");
vltContext.Put("QueryWrapper", wrapper.ToList());
vltContext.Put("OrderWrapper", ToOrderBies(wrapper.Orderbies()));
DataTableColumnInfo parmaryKeyColumnInfo = null; // new DataTableColumnInfo();
System.Text.StringBuilder columnsString = new System.Text.StringBuilder();
System.Text.StringBuilder valuesString = new System.Text.StringBuilder();
for (int i = 0; i < columns.Count; i++)
{
DataTableColumnInfo column = columns[i];
if (i == 0)
{
columnsString.Append(column.ColumnName);
if (settings.AutoJdbcType)
valuesString.Append("#{" + column.PropertyName + ",jdbcType=" + column.JdbcType + "}");
else
valuesString.Append("#{" + column.PropertyName + "}");
}
else
{
columnsString.Append("," + column.ColumnName);
if (settings.AutoJdbcType)
valuesString.Append(",#{" + column.PropertyName + ",jdbcType=" + column.JdbcType + "}");
else
valuesString.Append(",#{" + column.PropertyName + "}");
}
if (column.IsParmaryKey)
{
parmaryKeyColumnInfo = (DataTableColumnInfo)column.Clone();
}
}
vltContext.Put("ColumnsString", columnsString.ToString());
vltContext.Put("ValuesString", valuesString.ToString());
vltContext.Put("ParmaryKeyColumnInfo", parmaryKeyColumnInfo);
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
}
catch(Exception ex)
{
DevelopAssistant.Common.NLogger.LogError(ex);
}
result.Name = entityName;
result.TypeName = "Mapper";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateDaoCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
string codeText = "";
try
{
Template vltTemplate = vltEngine.GetTemplate("DaoTemplate.tt");
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
}
catch(Exception ex)
{
DevelopAssistant.Common.NLogger.LogError(ex);
}
result.Name = entityName;
result.TypeName = "DAO";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateIServiceCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
Template vltTemplate = vltEngine.GetTemplate("IServiceTemplate.tt");
string codeText = "";
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
result.Name = entityName;
result.TypeName = "IService";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateServiceImplCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
Template vltTemplate = vltEngine.GetTemplate("ServiceImplTemplate.tt");
string codeText = "";
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
result.Name = entityName;
result.TypeName = "ServiceImpl";
result.SnippetCode = codeText;
return result;
}
private static ResultEntity GenerateControllerCode(string entityName, GenerateSettings settings, VelocityEngine vltEngine, VelocityContext vltContext)
{
ResultEntity result = new ResultEntity();
Template vltTemplate = vltEngine.GetTemplate("ControllerTemplate.tt");
string codeText = "";
using (System.IO.StringWriter vltWriter = new System.IO.StringWriter())
{
vltTemplate.Merge(vltContext, vltWriter);
codeText = vltWriter.GetStringBuilder().ToString();
}
result.Name = entityName;
result.TypeName = "Controller";
result.SnippetCode = codeText;
return result;
}
public static List<ResultEntity> GenerateCode(string tableName, GenerateSettings settings, DataTable dataTable,List<RequestEntity> list,Action<ReportProgressValueEventArgent> action)
{
List<ResultEntity> result = new List<ResultEntity>();
string templetePath = string.Format("{0}\\{1}\\", currentDirectory.Trim('\\'), templete);
VelocityEngine vltEngine = new VelocityEngine();
vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templetePath);
vltEngine.Init();
DevelopAssistant.Common.StringPlus stringPlus = new Common.StringPlus();
string EntityName = stringPlus.Underline2Camel(tableName.Replace(settings.NameSpace + "_", "").Replace(settings.Modelpath + "_", ""), false);
string InstanceName = stringPlus.Underline2Camel(tableName.Replace(settings.NameSpace + "_", "").Replace(settings.Modelpath + "_", ""), true);
string namespaceFullName = settings.NameSpace;
if (!string.IsNullOrEmpty(settings.Modelpath))
{
namespaceFullName = settings.NameSpace + "." + settings.Modelpath;
}
int index = 0;
QueryWrapper queryWrapper = new QueryWrapper();
List<DataTableColumnInfo> DataTableColumns = new List<DataTableColumnInfo>();
foreach (DataRow row in dataTable.Rows)
{
DataTableColumnInfo ColumnInfo = new DataTableColumnInfo();
ColumnInfo.IdType = ToIdType(row["TypeName"] + "");
ColumnInfo.ColumnName = row["ColumnName"] + "";
ColumnInfo.PropertyName = stringPlus.Underline2Camel(row["ColumnName"] + "", true);
ColumnInfo.Description = row["Describ"] + "";
ColumnInfo.ColumnDataType = (row["TypeName"] + "").ToUpper();
ColumnInfo.PropertyDataType = ToJavaDataType(row["TypeName"] + "");
ColumnInfo.JdbcType = ToJdbcType(ColumnInfo.PropertyDataType);
DoColumnInfoParse(ColumnInfo, row["Cisnull"] + "");
DataTableColumns.Add(ColumnInfo);
if (index == 1)
{
queryWrapper.EQ(ColumnInfo.ColumnName, "" + ColumnInfo.ColumnName + "");
}
if (ColumnInfo.PropertyDataType.Equals("Date"))
{
queryWrapper.OrderBy(ColumnInfo.ColumnName,"DESC");
}
index = index + 1;
}
double progressIndex = 1.0;
double progressTotal = list.Count * 1.0d;
action(new ReportProgressValueEventArgent("开始生成代码", ReportProgressState.started));
foreach (RequestEntity reqest in list)
{
VelocityContext vltContext = new VelocityContext();
vltContext.Put("PakageName", namespaceFullName);
vltContext.Put("TableName", tableName);
vltContext.Put("EntityName", EntityName);
vltContext.Put("InstanceName", InstanceName);
vltContext.Put("EntityProperties", DataTableColumns);
vltContext.Put("ParamaryKey", settings.ParamaryKey);
vltContext.Put("Module", settings.Modelpath);
vltContext.Put("Comment", settings.Comment);
vltContext.Put("stringPlus", stringPlus);
ResultEntity resultEntity = null;
if (reqest.Name.Equals("Entity"))
{
resultEntity = GenerateEntityCode(EntityName, settings, vltEngine, vltContext);
}
else if (reqest.Name.Equals("DTO"))
{
resultEntity = GenerateDTOCode(EntityName, settings, vltEngine, vltContext);
}
else if (reqest.Name.Equals("Mapper"))
{
resultEntity = GenerateMapperCode(EntityName, settings, vltEngine, vltContext, DataTableColumns, queryWrapper);
}
else if (reqest.Name.Equals("DAO"))
{
resultEntity = GenerateDaoCode(EntityName, settings, vltEngine, vltContext);
}
else if (reqest.Name.Equals("IService"))
{
resultEntity = GenerateIServiceCode(EntityName, settings, vltEngine, vltContext);
}
else if (reqest.Name.Equals("ServiceImpl"))
{
resultEntity = GenerateServiceImplCode(EntityName, settings, vltEngine, vltContext);
}
else if (reqest.Name.Equals("Controller"))
{
resultEntity = GenerateControllerCode(EntityName, settings, vltEngine, vltContext);
}
double progressValue = progressIndex / progressTotal * 100;
action(new ReportProgressValueEventArgent("已生成 " + reqest.Name + " 代码", resultEntity, progressValue));
progressIndex++;
}
action(new ReportProgressValueEventArgent("生成代码完成", ReportProgressState.finished));
return result;
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。