private void writeClassNameBegin(AutoMation entity, StreamWriter writer, bool p) { //写状态 foreach (var state in entity.StateList) { writer.WriteLine(@" Ipms." + _Model + @"." + entity.Field + @"." + state.name + @" = '" + state.name + @"';"); } writer.WriteLine(); //写Render writer.WriteLine(@" Ipms."+_Model+@"."+entity.Field+@"Render = function (value, metadata) {"); writer.WriteLine(@" switch (value) {"); foreach (var state in entity.StateList) { writer.WriteLine(@" case " + state.name + @" :"); writer.WriteLine(@" return '" + state.stateLabel + @"';"); } writer.WriteLine(@" default:"); writer.WriteLine(@" return '未知'"); writer.WriteLine(@" }"); writer.WriteLine(@" }"); writer.WriteLine(); //写FilterItems writer.WriteLine(@" Ipms." + _Model + @"." + entity.Field + @"RenderFilterItems = ["); foreach (var state in entity.StateList) { writer.WriteLine(@" {"); writer.WriteLine(@" id: ' " + state.name + @"',"); writer.WriteLine(@" text: '" + state.stateLabel + @"'"); writer.WriteLine(@" },"); } writer.WriteLine(@"]"); }
private static void buildEntityItemList(List<AutoMation> entityList, AutoMation currentEntity, XmlNode node) { currentEntity.Name = Convert.ToString(getStringFromAttribute(node, "signature")); currentEntity.Module = Convert.ToString(getStringFromAttribute(node, "module")); currentEntity.Field = Convert.ToString(getStringFromAttribute(node, "field")); entityList.Add(currentEntity); }
private void buildEntityCode(AutoMation entity) { var path = _Path + entity.Module; if (!Directory.Exists(path)) Directory.CreateDirectory(path); buildMainCode(entity); }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="autoMata"></param> public void Generate(string path, AutoMation[] autoMata) { _Path = path.EndsWith("/") ? path : path + "/"; _AutoMata = autoMata; foreach (var entity in autoMata) buildEntityCode(entity); }
private static List<State> getItemsFromNode(XmlNodeList xmlNodeList, AutoMation currentEntity) { var stateList = new List<State>(); foreach (XmlNode node in xmlNodeList) { stateList.Add(getItemFromNode(node)); } return stateList; }
private void buildEntityCode(AutoMation entity) { if (entity.Module.ToLower() == "memberapplys") _Model = "expertApplys"; else _Model = entity.Module.ToLower(); var path = _Path + _Model; if (!Directory.Exists(path)) Directory.CreateDirectory(path); buildMainCode(entity); }
private void buildMainCode(AutoMation entity) { string stateFild = _Path + _Model + "/" + entity.Field + ".js"; if (File.Exists(stateFild))//当前的Extjs实体枚举类型存在 File.Delete(stateFild); var writer = File.CreateText(stateFild); writeNameSpaceBegin(entity, writer); writeClassNameBegin(entity, writer, true); writeClassNameEnd(writer); writer.Close(); }
/// <summary> /// 生成Linq的实体代码 /// </summary> /// <param name="path">路径</param> /// <param name="baseNameSpace">基于的命名空间</param> /// <param name="autoMata">要生成的实体</param> /// <param name="usingNameSpaces">需要附加的命名空间</param> /// <param name="overwriteMainCode">是否覆盖已有的主代码文件</param> public void Generate(string path, string baseNameSpace, AutoMation[] autoMata, string[] usingNameSpaces, bool overwriteMainCode) { if (!Directory.Exists(path)) throw new ArgumentNullException("目录不存在。"); _Path = path.EndsWith("/") ? path : path + "/"; _AutoMata = autoMata; _BaseNameSpace = baseNameSpace; _UsingNameSpaces = usingNameSpaces; _OverwriteMainCode = overwriteMainCode; foreach (var entity in autoMata) buildEntityCode(entity); }
private void writeClassNameBegin(AutoMation entity, StreamWriter writer, bool withBaseClass) { writer.WriteLine(@" /// <summary>"); writer.WriteLine(@" /// " + entity.Name+"状态类型"); writer.WriteLine(@" /// </summary>"); writer.WriteLine(@" public enum {0}", entity.Field); writer.WriteLine(@" {"); foreach (var state in entity.StateList) { writer.WriteLine(@" /// <summary>"); writer.WriteLine(@" /// " + state.stateLabel); writer.WriteLine(@" /// </summary>"); writer.WriteLine(@" " + state.name + @"=" + state.stateValue + @","); } }
private static void buildEntityList(List<AutoMation> entityList, AutoMation parentEntity, XmlNode entityNode) { var currentEntity = parentEntity; //此节点对应表的情况 currentEntity = new AutoMation(); //解析列和表 foreach (XmlNode node in entityNode.ChildNodes) { if (node.Name == "Entity") buildEntityItemList(entityList, currentEntity, node); if (node.Name == "StateSet") currentEntity.StateList.AddRange(getItemsFromNode(node.ChildNodes, currentEntity)); } }
private void buildMainCode(AutoMation entity) { string stateFild = _Path + entity.Module + "/" + entity.Field + ".cs"; if (File.Exists(stateFild))//当前的实体枚举类型存在 File.Delete(stateFild); var writer = File.CreateText(stateFild); writeUsingNameSpace(writer, entity); writeNameSpaceBegin(entity, writer); writeClassNameBegin(entity, writer, true); writeClassNameEnd(writer); writer.WriteLine(); writeNameSapceEnd(writer); writer.Close(); }
private void writeNameSpaceBegin(AutoMation entity, StreamWriter writer) { writer.WriteLine(); writer.WriteLine(@"if (!Ipms." + _Model + @")" ); writer.WriteLine(@" Ext.namespace('Ipms." + _Model + @"');"); writer.WriteLine(); writer.WriteLine(@"Ext.namespace('Ipms."+_Model+@"."+entity.Field+@"');"); writer.WriteLine(); }
private void writeUsingNameSpace(StreamWriter writer, AutoMation entity) { List<string> nsList = new List<string>(); nsList.Add("using System;"); nsList.Add("using System.Collections.Generic;"); nsList.Add("using System.Data.Linq;"); nsList.Add("using System.Linq;"); nsList.Add("using System.Text;"); nsList.Add(""); foreach (var ns in nsList) writer.WriteLine(ns); }
private void writeNameSpaceBegin(AutoMation entity, StreamWriter writer) { writer.WriteLine(@"namespace " + _BaseNameSpace + @"." + entity.Module); writer.WriteLine(@"{"); }