• 代码生成器的关键代码(读取PDM文件)


    /// <summary>
        /// 处理PDM文件
        /// </summary>
        public class DoPDMDal:IDoDataBaseDal
        {
            public List<DataBaseInfo> GetDataBaseTable()
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(AppSettings.PdmFilePath);
                XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);
                xmlnsManager.AddNamespace("a", "attribute");
                xmlnsManager.AddNamespace("c", "collection");
                xmlnsManager.AddNamespace("o", "object");
                XmlNode xnTables = xmlDoc.SelectSingleNode("//" + "c:Tables", xmlnsManager);
    
                List<PDMTableInfo> Tables = new List<PDMTableInfo>();
                foreach (XmlNode xnTable in xnTables.ChildNodes)
                {
                    Tables.Add(GetTable(xnTable));
                }
                List<DataBaseInfo> list = new List<DataBaseInfo>();
                
                foreach (var m in Tables)
                {
                    DataBaseInfo entity = new DataBaseInfo();
                    entity.TableName=m.Code;
                    list.Add(entity);
                }
                return list;
            }
    
            public List<TableInfo> GetTableColumnName(string tableName)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(AppSettings.PdmFilePath);
                XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);
                xmlnsManager.AddNamespace("a", "attribute");
                xmlnsManager.AddNamespace("c", "collection");
                xmlnsManager.AddNamespace("o", "object");
                XmlNode xnTables = xmlDoc.SelectSingleNode("//" + "c:Tables", xmlnsManager);
    
                List<PDMColumnInfo> list = new List<PDMColumnInfo>();
                foreach (XmlNode xnTable in xnTables.ChildNodes)
                {
    
                    PDMTableInfo entity = GetTable(xnTable);
                    if(entity.Code==tableName)
                        list= GetTable(xnTable).Columns.ToList();                
                }
    
                List<TableInfo> tableInfoList = new List<TableInfo>();
                foreach (var m in list)
                {
                    tableInfoList.Add(
                        new TableInfo()
                        {
                            ColumnName=m.Code,
                            ColumnType=m.DataType
                        }
                        );
                }
                return tableInfoList;
            }
    
            //初始化"o:Table"的节点
            private PDMTableInfo GetTable(XmlNode xnTable)
            {
                PDMTableInfo mTable = new PDMTableInfo();
                XmlElement xe = (XmlElement)xnTable;
                mTable.TableId = xe.GetAttribute("Id");
                XmlNodeList xnTProperty = xe.ChildNodes;
                foreach (XmlNode xnP in xnTProperty)
                {
                    switch (xnP.Name)
                    {
                        case "a:ObjectID": mTable.ObjectID = xnP.InnerText;
                            break;
                        case "a:Name": mTable.Name = xnP.InnerText;
                            break;
                        case "a:Code": mTable.Code = xnP.InnerText;
                            break;
                        case "a:CreationDate": mTable.CreationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Creator": mTable.Creator = xnP.InnerText;
                            break;
                        case "a:ModificationDate": mTable.ModificationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Modifier": mTable.Modifier = xnP.InnerText;
                            break;
                        case "a:Comment": mTable.Comment = xnP.InnerText;
                            break;
                        case "a:PhysicalOptions": mTable.PhysicalOptions = xnP.InnerText;
                            break;
                        case "c:Columns": InitColumns(xnP, mTable);
                            break;
                        case "c:Keys": InitKeys(xnP, mTable);
                            break;
                    }
                }
                return mTable;
            }
            //初始化"c:Columns"的节点
            private void InitColumns(XmlNode xnColumns, PDMTableInfo pTable)
            {
                foreach (XmlNode xnColumn in xnColumns)
                {
                    pTable.AddColumn(GetColumn(xnColumn));
                }
            }
    
            //初始化c:Keys"的节点
            private void InitKeys(XmlNode xnKeys, PDMTableInfo pTable)
            {
                foreach (XmlNode xnKey in xnKeys)
                {
                    pTable.AddKey(GetKey(xnKey));
                }
            }
    
            private PDMColumnInfo GetColumn(XmlNode xnColumn)
            {
                PDMColumnInfo mColumn = new PDMColumnInfo();
                XmlElement xe = (XmlElement)xnColumn;
                mColumn.ColumnId = xe.GetAttribute("Id");
                XmlNodeList xnCProperty = xe.ChildNodes;
                foreach (XmlNode xnP in xnCProperty)
                {
                    switch (xnP.Name)
                    {
                        case "a:ObjectID": mColumn.ObjectID = xnP.InnerText;
                            break;
                        case "a:Name": mColumn.Name = xnP.InnerText;
                            break;
                        case "a:Code": mColumn.Code = xnP.InnerText;
                            break;
                        case "a:CreationDate": mColumn.CreationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Creator": mColumn.Creator = xnP.InnerText;
                            break;
                        case "a:ModificationDate": mColumn.ModificationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Modifier": mColumn.Modifier = xnP.InnerText;
                            break;
                        case "a:Comment": mColumn.Comment = xnP.InnerText;
                            break;
                        case "a:DataType": mColumn.DataType = xnP.InnerText;
                            break;
                        case "a:Length": mColumn.Length = xnP.InnerText;
                            break;
                        case "a:Identity": mColumn.Identity = ConvertToBooleanPG(xnP.InnerText);
                            break;
                        case "a:Mandatory": mColumn.Mandatory = ConvertToBooleanPG(xnP.InnerText);
                            break;
                        case "a:PhysicalOptions": mColumn.PhysicalOptions = xnP.InnerText;
                            break;
                        case "a:ExtendedAttributesText": mColumn.ExtendedAttributesText = xnP.InnerText;
                            break;
                    }
                }
                return mColumn;
            }
    
            private PDMKey GetKey(XmlNode xnKey)
            {
                PDMKey mKey = new PDMKey();
                XmlElement xe = (XmlElement)xnKey;
                mKey.KeyId = xe.GetAttribute("Id");
                XmlNodeList xnKProperty = xe.ChildNodes;
                foreach (XmlNode xnP in xnKProperty)
                {
                    switch (xnP.Name)
                    {
                        case "a:ObjectID": mKey.ObjectID = xnP.InnerText;
                            break;
                        case "a:Name": mKey.Name = xnP.InnerText;
                            break;
                        case "a:Code": mKey.Code = xnP.InnerText;
                            break;
                        case "a:CreationDate": mKey.CreationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Creator": mKey.Creator = xnP.InnerText;
                            break;
                        case "a:ModificationDate": mKey.ModificationDate = Convert.ToInt32(xnP.InnerText);
                            break;
                        case "a:Modifier": mKey.Modifier = xnP.InnerText;
                            break;
                        //还差 <c:Key.Columns>
                    }
                }
                return mKey;
            }
    
            private static Boolean ConvertToBooleanPG(Object obj)
            {
                if (obj != null)
                {
                    string mStr = obj.ToString();
                    mStr = mStr.ToLower();
                    if ((mStr.Equals("y") || mStr.Equals("1")) || mStr.Equals("true"))
                    {
                        return true;
                    }
                }
                return false;
            }
        }
    

    种个实体:

    public class PDMColumnInfo
        {
            public PDMColumnInfo()
            { }
    
            string columnId;
    
            public string ColumnId
            {
                get { return columnId; }
                set { columnId = value; }
            }
            string objectID;
    
            public string ObjectID
            {
                get { return objectID; }
                set { objectID = value; }
            }
            string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            string code;
    
            public string Code
            {
                get { return code; }
                set { code = value; }
            }
            int creationDate;
    
            public int CreationDate
            {
                get { return creationDate; }
                set { creationDate = value; }
            }
            string creator;
    
            public string Creator
            {
                get { return creator; }
                set { creator = value; }
            }
            int modificationDate;
    
            public int ModificationDate
            {
                get { return modificationDate; }
                set { modificationDate = value; }
            }
            string modifier;
    
            public string Modifier
            {
                get { return modifier; }
                set { modifier = value; }
            }
            string comment;
    
            public string Comment
            {
                get { return comment; }
                set { comment = value; }
            }
            string dataType;
    
            public string DataType
            {
                get { return dataType; }
                set 
                {
                    if (value.Contains("nvarchar") || value.Contains("varchar"))
                    {
                        value = "string";
                    }
                    if (value.Contains("money"))
                    {
                        value = "decimal";
                    }
                    dataType = value; 
                }
            }
            string length;
    
            public string Length
            {
                get { return length; }
                set { length = value; }
            }
            //是否自增量
            bool identity;
    
            public bool Identity
            {
                get { return identity; }
                set { identity = value; }
            }
            bool mandatory;
            //禁止为空
            public bool Mandatory
            {
                get { return mandatory; }
                set { mandatory = value; }
            }
            string extendedAttributesText;
            //扩展属性
            public string ExtendedAttributesText
            {
                get { return extendedAttributesText; }
                set { extendedAttributesText = value; }
            }
            string physicalOptions;
    
            public string PhysicalOptions
            {
                get { return physicalOptions; }
                set { physicalOptions = value; }
            }
        }
    

      

    public class PDMKey
        {
            public PDMKey()
            {
            }
    
            string keyId;
    
            public string KeyId
            {
                get { return keyId; }
                set { keyId = value; }
            }
            string objectID;
    
            public string ObjectID
            {
                get { return objectID; }
                set { objectID = value; }
            }
            string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            string code;
    
            public string Code
            {
                get { return code; }
                set { code = value; }
            }
            int creationDate;
    
            public int CreationDate
            {
                get { return creationDate; }
                set { creationDate = value; }
            }
            string creator;
    
            public string Creator
            {
                get { return creator; }
                set { creator = value; }
            }
            int modificationDate;
    
            public int ModificationDate
            {
                get { return modificationDate; }
                set { modificationDate = value; }
            }
            string modifier;
    
            public string Modifier
            {
                get { return modifier; }
                set { modifier = value; }
            }
    
            IList<PDMColumnInfo> columns;
    
            public IList<PDMColumnInfo> Columns
            {
                get { return columns; }
            }
    
            public void AddColumn(PDMColumnInfo mColumn)
            {
                if (columns == null)
                    columns = new List<PDMColumnInfo>();
                columns.Add(mColumn);
            }
        }
    

      

    public class PDMTableInfo
        {
            public PDMTableInfo()
            {
            }
            string tableId;
    
            public string TableId
            {
                get { return tableId; }
                set { tableId = value; }
            }
            string objectID;
    
            public string ObjectID
            {
                get { return objectID; }
                set { objectID = value; }
            }
            string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            string code;
    
            public string Code
            {
                get { return code; }
                set { code = value; }
            }
            int creationDate;
    
            public int CreationDate
            {
                get { return creationDate; }
                set { creationDate = value; }
            }
            string creator;
    
            public string Creator
            {
                get { return creator; }
                set { creator = value; }
            }
            int modificationDate;
    
            public int ModificationDate
            {
                get { return modificationDate; }
                set { modificationDate = value; }
            }
            string modifier;
    
            public string Modifier
            {
                get { return modifier; }
                set { modifier = value; }
            }
            string comment;
    
            public string Comment
            {
                get { return comment; }
                set { comment = value; }
            }
    
            string physicalOptions;
    
            public string PhysicalOptions
            {
                get { return physicalOptions; }
                set { physicalOptions = value; }
            }
    
    
            IList<PDMColumnInfo> columns;
    
            public IList<PDMColumnInfo> Columns
            {
                get { return columns; }
            }
    
            IList<PDMKey> keys;
    
            public IList<PDMKey> Keys
            {
                get { return keys; }
            }
    
            public void AddColumn(PDMColumnInfo mColumn)
            {
                if (columns == null)
                    columns = new List<PDMColumnInfo>();
                columns.Add(mColumn);
            }
    
            public void AddKey(PDMKey mKey)
            {
                if (keys == null)
                    keys = new List<PDMKey>();
                keys.Add(mKey);
            }
        }
    

      

  • 相关阅读:
    性能测试 概述
    Jmeter 逻辑控制器 仅一次控制器Once Only Controller 一次登录,多次查询
    npm run build的时候报错:FATAL ERROR: Ineffective markcompacts near heap limit Allocation failed
    RAC修改私有网络IP(19C)
    如何关闭tfa
    创建asm磁盘指定failgroup
    删除冗余磁盘测试
    es磁盘满了无法写入的处理办法
    双系统启动问题
    openvmtools
  • 原文地址:https://www.cnblogs.com/ruiati/p/3284389.html
Copyright © 2020-2023  润新知