代码生成器的关键代码(读取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);
- }
- }
代码生成器的关键代码(读取PDM文件)的更多相关文章
- 读取Pdm文件内容(含源码)
Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pd ...
- 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录
原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...
- Java 代码读取properties文件
jdk1.6 package read;import java.io.File;import java.io.FileInputStream;import java.io.IOException;im ...
- WEB应用中普通java代码如何读取资源文件
首先: 资源文件分两种:后缀.xml文件和.properties文件 .xml文件:当数据之间有联系时用.xml .properties文件:当数据之间没有联系时用.properties 正题: ...
- C#读取Excel文件,准换为list
经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径{try{ ...
- 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版
对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...
- paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现
paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现 准备从pd cdm生成java web 页面...但是,ms无直接地生成软件.... 只好自己解析cdm ...
- 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)
原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要) Java InputStream读取数据问题 ======== ...
随机推荐
- java的反射机制(第二篇)
本文转载自:http://c.biancheng.net/cpp/html/1781.html 要理解RTTI在Java中的工作原理,首先必须知道类型信息在运行时是如何表示的,这项工作是由“Class ...
- noip 1995 灯的排列问题 排列组合 DFS
题目描述 设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……Nk(k表示不同颜色灯的个数). 放灯时要遵守下列规则: ①同一种颜色的灯不能分开: ②不同颜 ...
- ZOJ 3632 K - Watermelon Full of Water 优先队列优化DP
K - Watermelon Full of Water Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%lld &am ...
- CGI 、PHP-CGI、FASTCGI、PHP-FPM
CGI是干嘛的? CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者.web server(比如说nginx)只是内容的分发者.比如,如果请求的是/index/ht ...
- redux基础(1)
redux ps:每个案例都是接着上一个案例写的 主要以案例讲解如何使用,具体概念请参考如下: 基本概念参考1 基本概念参考2 案例源码戳这里 一.Store.Action.Reducer简介 Sto ...
- 华为S5300系列升级固件S5300SI-V100R003C00SPC301.cc
这个固件是升级V100R005的中间件,所以是必经的,注意,这个固件带有http的服务,但现在无论官网还是外面,几乎找不到这个固件的web功能,如果非要实现,可以拿V100R005的web文件改名为w ...
- MySQL的mysql.sock文件作用(转)
mysql.sock是可用于本地服务器的套接字文件.它只是另一种连接机制. 不包含任何数据,但仅用于从客户端到本地服务器来进行交换数据.
- SQLite 一款轻型的数据库
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...
- MVC扩展ActionInvoker,自定义ActionInvoker,根据请求数据返回不同视图
ActionInvoker的作用是:根据请求数据(HttpPost,HttpGet等)和action名称,来激发响应的action,再由action渲染视图.本文通过自定义ActionInvoker, ...
- .NET:CLR via C# Manifest
An assembly is a collection of one or more files containing type definitions and resource files. One ...