/// <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文件)的更多相关文章

  1. 读取Pdm文件内容(含源码)

    Pdm文件,就是PowerDesigner软件生成的文件,用来设计数据库表结构非常适合.其实,它的文件存储格式就是Xml,网上有很多代码,可以读取pdm文件内容.代码可以使用,但一般只能读取简单的pd ...

  2. 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录

    原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...

  3. Java 代码读取properties文件

    jdk1.6 package read;import java.io.File;import java.io.FileInputStream;import java.io.IOException;im ...

  4. WEB应用中普通java代码如何读取资源文件

    首先: 资源文件分两种:后缀.xml文件和.properties文件 .xml文件:当数据之间有联系时用.xml .properties文件:当数据之间没有联系时用.properties 正题:   ...

  5. C#读取Excel文件,准换为list

    经常会用到,废话不多说直接贴代码 //读取Excel文件 public static DataTable ReadExcelToTable(string path)//excel存放的路径{try{ ...

  6. 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版

    对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...

  7. 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)

    原文:分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要) XML文件 <?xml version="1.0"?> <student ...

  8. paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现

    paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现 准备从pd cdm生成java web 页面...但是,ms无直接地生成软件.... 只好自己解析cdm ...

  9. 分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要)

    原文:分享非常有用的Java程序(关键代码)(八)---Java InputStream读取网络响应Response数据的方法!(重要) Java InputStream读取数据问题 ======== ...

随机推荐

  1. TCP的建立和终止 图解

    前言 在没有理解TCP连接是如何建立和终止之前,我想你可能并不会使用connect,accept,close这三个函数并且使用netstat程序来调试应用.所以掌握TCP连接的建立和终止势在必行. 三 ...

  2. python 爬虫学习<将某一页的所有图片下载下来>

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  3. Python知识(6)--numpy做矩阵运算

    矩阵运算 论numpy中matrix 和 array的区别:http://blog.csdn.net/vincentlipan/article/details/20717163 matrix 和 ar ...

  4. js文件命名冲突理解

    在一个index.html文件里先后导入a.js和b.js文件a.js文件里写上var s = 2;console.log(s);b.js文件里写上var s = 5;这时a.js和b.js用了相同的 ...

  5. 一个java高级工程师的进阶之路【转】

    宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究 ...

  6. oracle数据库存储过程中NO_DATA_FOUND不起作用解决

    oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...

  7. java对mongodb的and, in, or 经常使用操作

    DBCollection dbcon = null; DBObject query = new BasicDBObject(); BasicDBList values = new BasicDBLis ...

  8. Delphi7 中使用FastMM 转载

    http://blog.csdn.net/cai5/article/details/17142697 Delphi7 中使用FastMM 在工程的第一行引用FastMM4即可(注意,一定要在第一个Us ...

  9. 聊聊JVM的年轻代(转)

    聊聊JVM的年轻代 本文转自http://ifeve.com/jvm-yong-generation/ 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代 ...

  10. java内存溢出示例(堆溢出、栈溢出)

    堆溢出: /** * @author LXA * 堆溢出 */ public class Heap { public static void main(String[] args) { ArrayLi ...