public System.Xml.XmlElement GenerateDefinitionXmlElement(EntitiesGenerator.Definitions.DataTable table) { System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument(); System.Xml.XmlElement definitionElement = xmlDocument.CreateElement("Definition"); System.Xml.XmlElement xmlElement = xmlDocument.CreateElement("DataTable"); System.Xml.XmlAttribute tableNameXmlAttribute = xmlDocument.CreateAttribute("TableName"); tableNameXmlAttribute.Value = table.TableName.Trim(); xmlElement.Attributes.Append(tableNameXmlAttribute); System.Xml.XmlAttribute sourceNameXmlAttribute = xmlDocument.CreateAttribute("SourceName"); sourceNameXmlAttribute.Value = table.SourceName.Trim(); xmlElement.Attributes.Append(sourceNameXmlAttribute); foreach (EntitiesGenerator.Definitions.DataColumn column in table.Columns) { System.Xml.XmlElement dataColumnXmlElement = xmlDocument.CreateElement("DataColumn"); System.Xml.XmlAttribute dataColumnColumnNameXmlAttribute = xmlDocument.CreateAttribute("ColumnName"); dataColumnColumnNameXmlAttribute.Value = column.ColumnName.Trim(); dataColumnXmlElement.Attributes.Append(dataColumnColumnNameXmlAttribute); System.Xml.XmlAttribute dataColumnSourceNameXmlAttribute = xmlDocument.CreateAttribute("SourceName"); dataColumnSourceNameXmlAttribute.Value = column.SourceName.Trim(); dataColumnXmlElement.Attributes.Append(dataColumnSourceNameXmlAttribute); System.Xml.XmlAttribute dataColumnDataTypeXmlAttribute = xmlDocument.CreateAttribute("DataType"); dataColumnDataTypeXmlAttribute.Value = column.DataType.Trim(); dataColumnXmlElement.Attributes.Append(dataColumnDataTypeXmlAttribute); if (column.PrimaryKey) { System.Xml.XmlAttribute dataColumnPrimaryKeyXmlAttribute = xmlDocument.CreateAttribute("PrimaryKey"); dataColumnPrimaryKeyXmlAttribute.Value = column.PrimaryKey ? "true" : "false"; dataColumnXmlElement.Attributes.Append(dataColumnPrimaryKeyXmlAttribute); } if (!column.AllowDBNull) { System.Xml.XmlAttribute dataColumnAllowDBNullXmlAttribute = xmlDocument.CreateAttribute("AllowDBNull"); dataColumnAllowDBNullXmlAttribute.Value = column.AllowDBNull ? "true" : "false"; dataColumnXmlElement.Attributes.Append(dataColumnAllowDBNullXmlAttribute); } if (column.AutoIncrement) { System.Xml.XmlAttribute dataColumnAutoIncrementXmlAttribute = xmlDocument.CreateAttribute("AutoIncrement"); dataColumnAutoIncrementXmlAttribute.Value = column.AutoIncrement ? "true" : "false"; dataColumnXmlElement.Attributes.Append(dataColumnAutoIncrementXmlAttribute); } // TODO: caption. xmlElement.AppendChild(dataColumnXmlElement); } definitionElement.AppendChild(xmlElement); xmlDocument.AppendChild(definitionElement); return xmlDocument.DocumentElement; }
public bool GenerateDefinitionXmlFile(EntitiesGenerator.Definitions.DataTable table, string pathName) { System.Xml.XmlElement definitionXmlElement = GenerateDefinitionXmlElement(table); System.Xml.XmlDocument xmlDocument = definitionXmlElement.OwnerDocument; System.Xml.XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", null, "yes"); xmlDocument.InsertBefore(xmlDeclaration, definitionXmlElement); string fileName = string.Format("{0}.definition.xml", table.TableName.Trim()); fileName = Path.Combine(pathName, fileName); if (!System.IO.Directory.Exists(pathName)) { System.IO.Directory.CreateDirectory(pathName); } xmlDocument.Save(fileName); return true; }
public string GenerateForMYSQL(EntitiesGenerator.Definitions.DataTable table) { StringBuilder sqlStringBuilder = new StringBuilder(); string tableName = table.SourceName.Trim(); sqlStringBuilder.AppendFormat("CREATE TABLE {0}", tableName); sqlStringBuilder.AppendLine(); sqlStringBuilder.Append("("); sqlStringBuilder.AppendLine(); List<EntitiesGenerator.Definitions.DataColumn> primaryKeyColumns = new List<EntitiesGenerator.Definitions.DataColumn>(); foreach (EntitiesGenerator.Definitions.DataColumn column in table.Columns) { string columnName = column.SourceName.Trim(); string dataType = column.DataType.Trim(); if (column.AllowDBNull) { sqlStringBuilder.AppendFormat(" {0} {1} NULL {2},", columnName, GetSqlTypeForMYSQL(dataType, column.Length), column.AutoIncrement ? "AUTO_INCREMENT" : string.Empty); sqlStringBuilder.AppendLine(); } else { sqlStringBuilder.AppendFormat(" {0} {1} NOT NULL {2},", columnName, GetSqlTypeForMYSQL(dataType, column.Length), column.AutoIncrement ? "AUTO_INCREMENT" : string.Empty); sqlStringBuilder.AppendLine(); } if (column.PrimaryKey) { primaryKeyColumns.Add(column); } } if (primaryKeyColumns.Count > 0) { string primaryKeyColumnsText = GetColumnsText(primaryKeyColumns); sqlStringBuilder.AppendFormat(" CONSTRAINT PK_{0} PRIMARY KEY ({1})", tableName, primaryKeyColumnsText); sqlStringBuilder.AppendLine(); } else { sqlStringBuilder.Remove(sqlStringBuilder.ToString().LastIndexOf(","), 1); } sqlStringBuilder.Append(")"); sqlStringBuilder.AppendLine(); return sqlStringBuilder.ToString(); }
private static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; Console.WriteLine(Resources.About); if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday) { Console.WriteLine(Resources.SundayGreeting); return; } Console.WriteLine(Resources.WorkDayGreeting); Console.WriteLine(Resources.HowToUse); var entitiesGenerator = new EntitiesGenerator(); ConsoleKey pressedKey; do { Human parent = entitiesGenerator.CreateRandomHuman(); Human anotherParent = entitiesGenerator.CreateRandomHuman(); parent.ToConsole(); anotherParent.ToConsole(); try { IHasName child = entitiesGenerator.Couple(parent, anotherParent); if (child == null) { Console.WriteLine(Resources.FailedCoupleCreation); } else { child.ToConsole(); } } catch (SameSexException exception) { Console.WriteLine(exception.Message); } Console.WriteLine(); pressedKey = ReadControlKey(); } while (!IsInterruptKey(pressedKey)); }
internal static CompilationUnitSyntax CreateCompilationUnitSyntax(string nameSpace, IReadOnlyCollection <HassState> entities, IReadOnlyCollection <HassServiceDomain> services) { var orderedEntities = entities.OrderBy(x => x.EntityId).ToArray(); var orderedServiceDomains = services.OrderBy(x => x.Domain).ToArray(); var code = CompilationUnit() .AddUsings(UsingDirective(ParseName("System"))) .AddUsings(UsingDirective(ParseName("System.Collections.Generic"))) .AddUsings(UsingNamespaces.OrderBy(s => s).Select(u => UsingDirective(ParseName(u))).ToArray()); var namespaceDeclaration = NamespaceDeclaration(ParseName(nameSpace)).NormalizeWhitespace(); namespaceDeclaration = namespaceDeclaration.AddMembers(EntitiesGenerator.Generate(orderedEntities).ToArray()); namespaceDeclaration = namespaceDeclaration.AddMembers(ServicesGenerator.Generate(orderedServiceDomains).ToArray()); namespaceDeclaration = namespaceDeclaration.AddMembers(ExtensionMethodsGenerator.Generate(orderedServiceDomains, entities).ToArray()); code = code.AddMembers(namespaceDeclaration); code = code.NormalizeWhitespace(Tab.ToString(), eol: "\n"); return(code); }
public string GenerateForSQLite(EntitiesGenerator.Definitions.DataTable table) { StringBuilder sqlStringBuilder = new StringBuilder(); string tableName = table.SourceName.Trim(); sqlStringBuilder.AppendFormat("CREATE TABLE [{0}]", tableName); sqlStringBuilder.AppendLine(); sqlStringBuilder.Append("("); sqlStringBuilder.AppendLine(); List<EntitiesGenerator.Definitions.DataColumn> primaryKeyColumns = new List<EntitiesGenerator.Definitions.DataColumn>(); foreach (EntitiesGenerator.Definitions.DataColumn column in table.Columns) { string columnName = column.SourceName.Trim(); string dataType = column.DataType.Trim(); sqlStringBuilder.AppendFormat(" [{0}] {1} {2} {3} {4},", columnName, GetSqlTypeForSQLite(dataType, column.Length), column.AllowDBNull ? "NULL" : "NOT NULL", column.PrimaryKey ? "PRIMARY KEY" : string.Empty, column.AutoIncrement ? "AUTOINCREMENT" : string.Empty); sqlStringBuilder.AppendLine(); } sqlStringBuilder.Remove(sqlStringBuilder.Length - 4, 4); sqlStringBuilder.AppendLine(); sqlStringBuilder.Append(")"); return sqlStringBuilder.ToString(); }
public ChildGenerationTest() { this._entitiesGenerator = new EntitiesGenerator(d => true); }
private TreeNode CreateDataTableNode(EntitiesGenerator.Definitions.DataTable table) { TreeNode treeNode = new TreeNode(); if (this.showSourceName) { treeNode.Text = table.SourceName; } else { treeNode.Text = table.TableName; } treeNode.ImageKey = "Microsoft.VisualStudio.DataTools.Table.ico"; treeNode.SelectedImageKey = treeNode.ImageKey; treeNode.Tag = table; table.PropertyChanged += new EventHandler(table_PropertyChanged); return treeNode; }
private TreeNode CreateDataColumnNode(EntitiesGenerator.Definitions.DataColumn column) { TreeNode treeNode = new TreeNode(); if (this.showSourceName) { treeNode.Text = column.SourceName; } else { treeNode.Text = column.ColumnName; } treeNode.ImageKey = "Microsoft.VisualStudio.DataTools.Column.ico"; treeNode.SelectedImageKey = treeNode.ImageKey; treeNode.Tag = column; column.PropertyChanged += new EventHandler(column_PropertyChanged); return treeNode; }
private void UpdateTableTreeNode(EntitiesGenerator.Definitions.DataTable table) { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); this.treeView1.BeginUpdate(); TreeNode definitionNode = this.treeView1.Nodes[0]; if (definitionNode != null) { foreach (TreeNode treeNode in definitionNode.Nodes) { if (treeNode.Tag == table) { UpdateTreeNode(treeNode); foreach (TreeNode columnNode in treeNode.Nodes) { UpdateTreeNode(columnNode); } break; } } } this.treeView1.EndUpdate(); sw.Stop(); Console.WriteLine("UpdateTableTreeNode: {0}", sw.ElapsedMilliseconds); //MessageBox.Show(sw.ElapsedMilliseconds.ToString()); }
private void UpdateColumnTreeNode(EntitiesGenerator.Definitions.DataColumn column) { TreeNode definitionNode = this.treeView1.Nodes[0]; if (definitionNode != null) { foreach (TreeNode treeNode in definitionNode.Nodes) { foreach (TreeNode columnNode in treeNode.Nodes) { if (treeNode.Tag == column) { UpdateTreeNode(columnNode); break; } } } } }
private void SelectDataGridViewRow(EntitiesGenerator.Definitions.DataColumn dataColumn) { foreach (DataGridViewRow row in this.dataGridView1.Rows) { if (row.DataBoundItem == dataColumn) { DataGridViewCell dataGridViewCell = this.dataGridView1[this.dataGridView1.CurrentCell.ColumnIndex, row.Index]; if (this.dataGridView1.CurrentCell != dataGridViewCell) { this.dataGridView1.CurrentCell = dataGridViewCell; } break; } } }
private void RefreshTreeNode(EntitiesGenerator.Definitions.DataTable table) { TreeNode definitionNode = this.treeView1.Nodes[0]; if (definitionNode != null) { foreach (TreeNode treeNode in definitionNode.Nodes) { if (treeNode.Tag == table) { RefreshTableNode(treeNode); break; } } } }
private string GetDataColumnType(EntitiesGenerator.Definitions.DataColumn dataColumn, ViewColumnSchema column) { return TypeManager.GetWellKnownDbTypeName(column.DataType); }
private void GenerateAutoIncrementForOracle(StringBuilder sqlStringBuilder, string tableName, EntitiesGenerator.Definitions.DataColumn column) { string template = @"CREATE SEQUENCE $TABLENAME$_$COLUMNNAME$_SEQ START WITH 1 INCREMENT BY 1 / CREATE OR REPLACE TRIGGER $TABLENAME$_$COLUMNNAME$_TRIGGER BEFORE INSERT ON $TABLENAME$ REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW BEGIN SELECT $TABLENAME$_$COLUMNNAME$_SEQ.NEXTVAL INTO :NEW.$COLUMNNAME$ FROM DUAL; END;"; string sql = template.Replace("$TABLENAME$", tableName); sql = sql.Replace("$COLUMNNAME$", column.SourceName.Trim()); sqlStringBuilder.AppendLine(sql); }
private string GetDataColumnType(EntitiesGenerator.Definitions.DataColumn dataColumn, ColumnSchema column) { string dataType = TypeManager.GetWellKnownDbTypeName(column.DataType); switch (dataType.ToLower()) { case "ansistring": case "ansistringfixedlength": case "stringfixedlength": { return "string"; } case "currency": { return "decimal"; } } return dataType; }
private string GetDataTableAttribute(EntitiesGenerator.Definitions.DataTable table) { return string.Format("[RaisingStudio.Data.DataTable(\"{0}\")]", table.SourceName); }
private string GetDataColumnAttribute(EntitiesGenerator.Definitions.DataColumn column) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("[RaisingStudio.Data.DataColumn(\"{0}\"", column.SourceName); string typeNameOfType = GetDbType(column.Type); string typeNameOfDataType = GetDbType(column.DataType); if (typeNameOfType != typeNameOfDataType) { stringBuilder.AppendFormat(", DbType = {0}", typeNameOfDataType); } if (!column.AllowDBNull) { stringBuilder.Append(", AllowDBNull = false"); } if (column.PrimaryKey) { stringBuilder.Append(", IsPrimaryKey = true"); } if (column.AutoIncrement) { stringBuilder.Append(", AutoIncrement = true"); } stringBuilder.Append(")]"); return stringBuilder.ToString(); }
public string GenerateDataObject(EntitiesGenerator.Definitions.DataTable table, bool xmlMapping, out string designerCode, out string definitionCode, out string proxyCode, List<string> newTypeList) { #region Designer code // read the content of the template file. string dataObjectText = xmlMapping ? ReadTemplateFile(DATAOBJECT_DESIGNER_FILENAME) : ReadTemplateFile(DATAOBJECT_ATTRIBUTE_DESIGNER_FILENAME); string dataObjectColumnText = xmlMapping ? ReadTemplateFile(DATAOBJECTCOLUMN_FILENAME) : ReadTemplateFile(DATAOBJECTCOLUMN_ATTRIBUTE_FILENAME); string dataObjectCode = dataObjectText; System.Text.StringBuilder dataObjectColumnSB = new System.Text.StringBuilder(); System.Text.StringBuilder dataObjectColumnDefinitionSB = new System.Text.StringBuilder(); System.Text.StringBuilder columnsDeclareSB = new System.Text.StringBuilder(); System.Text.StringBuilder objectColumnsDeclareSB = new System.Text.StringBuilder(); string dataObjectName = table.TableName.Trim(); foreach (EntitiesGenerator.Definitions.DataColumn column in table.Columns) { // get column name. string columnName = column.ColumnName.Trim(); // get type of column. string dataType = "string"; if (!string.IsNullOrEmpty(column.Type)) { dataType = GetDataType(column.Type.Trim(), column.AllowDBNull, newTypeList); } string dataObjectColumnCode = dataObjectColumnText; dataObjectColumnCode = dataObjectColumnCode.Replace(COLUMNNAME_MARK, columnName); string caption = columnName; dataObjectColumnCode = dataObjectColumnCode.Replace(COLUMNDESCRIPTION_MARK, caption); dataObjectColumnCode = dataObjectColumnCode.Replace(COLUMNTYPE_MARK, dataType); string dataColumnAttribute = GetDataColumnAttribute(column); dataObjectColumnCode = dataObjectColumnCode.Replace(DATACOLUMN_ATTRIBUTE_MARK, dataColumnAttribute); dataObjectColumnSB.Append(dataObjectColumnCode); // Definition code. dataObjectColumnDefinitionSB.AppendFormat(" public static readonly RaisingStudio.Data.Expressions.ColumnExpression _{0} = \"{0}\";", columnName); dataObjectColumnDefinitionSB.AppendLine(); //dataObjectColumnDefinitionSB.AppendFormat(" public readonly RaisingStudio.Data.Expressions.ColumnExpression {0} = _{0};", columnName); dataObjectColumnDefinitionSB.AppendFormat(" public RaisingStudio.Data.Expressions.ColumnExpression {0} {{ get {{ return _{0}; }} }}", columnName); dataObjectColumnDefinitionSB.AppendLine(); columnsDeclareSB.AppendFormat(" _{0}._{1},", dataObjectName, columnName); columnsDeclareSB.AppendLine(); objectColumnsDeclareSB.AppendFormat(" {0}.{1},", dataObjectName, columnName); objectColumnsDeclareSB.AppendLine(); } string dataObjectColumn = dataObjectColumnSB.ToString(); // replace the entity. dataObjectCode = dataObjectCode.Replace(DATAOBJECTCOLUMN_MARK, dataObjectColumn); // replace the namespace. dataObjectCode = dataObjectCode.Replace(NAMESPACE_MARK, codeNamespace); // replace the entity name. dataObjectCode = dataObjectCode.Replace(OBJECTNAME_MARK, dataObjectName); string dataTableAttribute = GetDataTableAttribute(table); dataObjectCode = dataObjectCode.Replace(DATATABLE_ATTRIBUTE_MARK, dataTableAttribute); designerCode = dataObjectCode; #endregion #region Definition code // Definition code. string definitionCodeText = ReadTemplateFile(DATAOBJECT_DEFINITION_FILENAME); definitionCode = definitionCodeText; // TODO: generate definition code. definitionCode = definitionCode.Replace("$$DATAOBJECTCOLUMNDEFINITION$$", dataObjectColumnDefinitionSB.ToString()); definitionCode = definitionCode.Replace("$$COLUMNSDECLARE$$", columnsDeclareSB.ToString()); definitionCode = definitionCode.Replace("$$OBJECTCOLUMNSDECLARE$$", objectColumnsDeclareSB.ToString()); // replace the namespace. definitionCode = definitionCode.Replace(NAMESPACE_MARK, codeNamespace); // replace the entity name. definitionCode = definitionCode.Replace(OBJECTNAME_MARK, dataObjectName); #endregion #region Proxy code // Proxy code. string proxyCodeText = ReadTemplateFile(DATAOBJECT_PROXY_FILENAME); proxyCode = proxyCodeText; string typeName = dataObjectName; System.Text.StringBuilder getValueCodeStringBuilder = new StringBuilder(); System.Text.StringBuilder setValueCodeStringBuilder = new StringBuilder(); System.Text.StringBuilder getPropertyTypeCodeStringBuilder = new StringBuilder(); foreach (EntitiesGenerator.Definitions.DataColumn column in table.Columns) { // get column name. string columnName = column.ColumnName.Trim(); // get type of column. string dataType = "string"; if (!string.IsNullOrEmpty(column.Type)) { dataType = GetDataType(column.Type.Trim(), column.AllowDBNull, newTypeList); } string propertyName = columnName; string propertyTypeCode = dataType; string getValueCode = GETCASE_TEMPLATE_CODE; getValueCode = getValueCode.Replace(PROPERTYNAME_MARK, propertyName); getValueCodeStringBuilder.Append(getValueCode); string setValueCode = SETCASE_TEMPLATE_CODE; setValueCode = setValueCode.Replace(PROPERTYNAME_MARK, propertyName); setValueCode = setValueCode.Replace(PROPERTYTYPE_MARK, propertyTypeCode); setValueCodeStringBuilder.Append(setValueCode); string getPropertyTypeCode = GET_PROPERTYTYPE_CASE_TEMPLATE_CODE; getPropertyTypeCode = getPropertyTypeCode.Replace(PROPERTYNAME_MARK, propertyName); getPropertyTypeCode = getPropertyTypeCode.Replace(PROPERTYTYPE_MARK, propertyTypeCode); getPropertyTypeCodeStringBuilder.Append(getPropertyTypeCode); } string getValueFinallyCode = getValueCodeStringBuilder.ToString(); string setValueFinallyCode = setValueCodeStringBuilder.ToString(); string getPropertyTypeFinallyCode = getPropertyTypeCodeStringBuilder.ToString(); proxyCode = proxyCode.Replace(TYPENAME_MARK, typeName); proxyCode = proxyCode.Replace(GET_CASE_MARK, getValueFinallyCode); proxyCode = proxyCode.Replace(SET_CASE_MARK, setValueFinallyCode); proxyCode = proxyCode.Replace(GET_PROPERTYTYPE_CASE_MARK, getPropertyTypeFinallyCode); // replace the namespace. proxyCode = proxyCode.Replace(NAMESPACE_MARK, codeNamespace); // replace the entity name. proxyCode = proxyCode.Replace(OBJECTNAME_MARK, dataObjectName); #endregion #region Main code string mainCodeText = ReadTemplateFile(DATAOBJECT_FILENAME); string mainCode = mainCodeText; // replace the namespace. mainCode = mainCode.Replace(NAMESPACE_MARK, codeNamespace); // replace the entity name. mainCode = mainCode.Replace(OBJECTNAME_MARK, dataObjectName); #endregion return mainCode; }
private void RefreshDataGridView(EntitiesGenerator.Definitions.DataTable table) { ClearDataGridView(); this.dataGridView1.Tag = table; this.dataGridView1.DataSource = table.Columns; //this.dataGridView1.Refresh(); }
private static void AddListViewItem(SelectTableForm selectTableForm, EntitiesGenerator.Definitions.DataTable dataTable, int imageIndex) { ListViewItem item = new ListViewItem(); item.Text = dataTable.SourceName; item.Tag = dataTable; item.ImageIndex = imageIndex; item.Checked = true; selectTableForm.AddListViewItem(item); }