Example #1
0
        /**
         * Constructs an ExecutionCondition that knows how to run a ModelCondition.
         *
         * @param modelTask
         *            the ModelCondition to run.
         * @param executor
         *            the BTExecutor that will manage this ExecutionCondition.
         * @param parent
         *            the parent ExecutionTask of this task.
         */

        protected ExecutionCondition(ModelCondition modelTask, BTExecutor executor, ExecutionTask parent)
            : base(modelTask, executor, parent)
        {
        }
Example #2
0
 public static string GenerateModelCode(ModelCondition modelCondition)
 {
     return(ModelObjectCodeUtil.GenerateModelCode(modelCondition));
 }
        public static string GenerateModelCode(ModelCondition modelCondition)
        {
            try
            {
                if (modelCondition == null || string.IsNullOrWhiteSpace(modelCondition.Text))
                {
                    return string.Empty;
                }

                StringBuilder sb = new StringBuilder();

                bool isAddClass = false;

                // 0. 将文本分割成多行
                var lines = modelCondition.Text.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);


                // 1. 查看第一行是否带有类的信息
                isAddClass = IsClass(lines[0], out string clazzName, out string clazzComment);
                if (isAddClass)
                {
                    if (modelCondition.AddApiModelPropertyAttribute)
                    {
                        sb.AppendLine($"@ApiModel(\"{clazzComment}\")");
                    }

                    sb.AppendLine("@Data");
                    sb.AppendLine($"public class {clazzName}" + '{');
                }

                // 2. 分析每一行 获取 所得列表
                int startIndex = isAddClass ? 1 : 0; // 如果是带了类信息,那么第一行描述的是类的信息,从第二行开始描述的才是filed信息
                for (int i = startIndex; i < lines.Length; i++)
                {
                    string line = lines[i];

                    if (GetField(line, out string fieldName, out string typeName, out string comment))
                    {
                        sb.AppendLine(); // 添加一个空行

                        string fieldCode = $"\tprivate {typeName} {fieldName}; // {comment}";
                        if (modelCondition.AddApiModelPropertyAttribute)
                        {
                            string apiComment = $"\t@ApiModelProperty(\"{comment}\")";
                            sb.AppendLine(apiComment);
                        }

                        sb.AppendLine(fieldCode);
                    }
                }

                // 3. 添加括号 返回代码
                if (isAddClass)
                {
                    sb.AppendLine("}");
                }

                return sb.ToString();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return string.Empty;
        }