private void GenerateFromProcedures(string baseNamespace, IDictionary <string, StringBuilder> lookup, StringBuilder output) { foreach (ProcedureDefinition procedure in session.Schema.Procedures) { string classNamespace = CodeFormat.ToPascalCase(procedure.Owner); // Separate tables into namespace buckets. StringBuilder value; if (lookup.TryGetValue(classNamespace, out value)) { value.AppendLine(procedureProcessor.GenerateProcedure(procedure)); value.AppendLine(); } else { if (!Compare.AreSameOrdinalIgnoreCase(procedure.Owner, "dbo")) { output.AppendLine(string.Format("using {0};", baseNamespace.Length > 0 ? baseNamespace + "." + classNamespace : classNamespace)); } StringBuilder builder = new StringBuilder(); lookup.Add(classNamespace, builder); builder.AppendLine(procedureProcessor.GenerateProcedure(procedure)); builder.AppendLine(); } } }
private bool IsGlobalExclude(ISchema table) { foreach (string schema in GetSchemaExcludes()) { if (Compare.AreSameOrdinalIgnoreCase(schema, table.Owner)) { return(true); } } foreach (string prefix in GetPrefixExcludes()) { if (table.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { return(true); } } foreach (string suffix in GetSuffixExcludes()) { if (table.Name.EndsWith(suffix, StringComparison.OrdinalIgnoreCase)) { return(true); } } return(false); }
public string GenerateSingleProcedure(ProcedureDefinition procedure, IEnumerable <string> namespaces) { Argument.Assert.IsNotNull(procedure, nameof(procedure)); StringBuilder output = new StringBuilder(); output.AppendLine("#region Using Directives"); output.AppendLine("using System;"); output.AppendLine("using System.Data;"); output.AppendLine("using System.Xml;"); output.AppendLine("using System.Xml.Schema;"); output.AppendLine("using System.Xml.Serialization;"); output.AppendLine("using System.Runtime.Serialization;"); output.AppendLine("using Loom;"); output.AppendLine("using Loom.Data.Mapping;"); output.AppendLine("using Loom.Data.Mapping.Schema;"); foreach (string ns in namespaces) { output.AppendLine(string.Format("using {0};", ns)); } output.AppendLine("#endregion"); string baseNamespace = session.Configuration.CodeGen.BaseNamespace.Trim(); if (!Compare.AreSameOrdinalIgnoreCase(procedure.Owner, "dbo")) { baseNamespace += "." + procedure.Owner; } AddBaseNamespaceStart(output, baseNamespace); output.AppendLine(procedureProcessor.GenerateProcedure(procedure)); AddBaseNamespaceEnd(output, baseNamespace); return(output.ToString()); }
/// <summary> /// Creates for folder. /// </summary> /// <param name="path">The path.</param> /// <param name="maxSize">Size of the max.</param> /// <returns></returns> public static IEnumerable <Bitmap> FromFolder(string path, int maxSize) { Argument.Assert.IsNotNull(path, nameof(path)); if (maxSize <= 0 || maxSize > int.MaxValue) { throw new ArgumentOutOfRangeException("maxSize", maxSize, SR.ThumbnailSizeOutOfRange); } DirectoryInfo info = new DirectoryInfo(path); FileInfo[] files = info.GetFiles(); for (int i = 0; i < files.Length; i++) { // BUG: Non-image files will throw a OutOfMemory exception in Bitmap.FromFile(string). // Refactor to not attempt loading of non-image files. if (Compare.AreSameOrdinalIgnoreCase(files[i].Extension, ".jpg")) { using (Image image = Image.FromFile(files[i].FullName)) { yield return(CreatePrivate(image, maxSize, maxSize)); } } } }
// FEATURE: Allow configuration of default xml serialization type for properties (Attribute/Element). // FEATURE: Allow configuration of individual property's xml serialization type. private string GenerateProperties(TableDefinition table) { StringBuilder builder = new StringBuilder(); foreach (TableColumnDefinition column in table.Columns) { string foreignColumnAttribute = null; string localizableColumnAttribute = null; if (column.IsForeignKey && column.ForeignKeyColumn != null) { StringBuilder columnPropertyBuilder = new StringBuilder(); AddColumnPropertyValues(columnPropertyBuilder, column.ForeignKeyColumn); if (Compare.AreSameOrdinalIgnoreCase(column.ForeignKeyColumn.ParentTable.Owner, "dbo")) { foreignColumnAttribute = string.Format(" [ForeignColumn(\"{0}\", typeof({1}.{2}), ColumnProperties={3}, DbType=DbType.{4})]{5}", column.ForeignKeyColumn.Name, session.Configuration.CodeGen.BaseNamespace, column.ForeignKeyColumn.ParentTable.Name.ToPascalCase().Singularize(Plurality.CouldBeEither), columnPropertyBuilder, column.DbType, Environment.NewLine); } else { foreignColumnAttribute = string.Format(" [ForeignColumn(\"{0}\", typeof({1}.{2}.{3}), ColumnProperties={4}, DbType=DbType.{5})]{6}", column.ForeignKeyColumn.Name, session.Configuration.CodeGen.BaseNamespace, column.ForeignKeyColumn.ParentTable.Owner.ToPascalCase(), column.ForeignKeyColumn.ParentTable.Name.ToPascalCase().Singularize(Plurality.CouldBeEither), columnPropertyBuilder, column.DbType, Environment.NewLine); } } if (column.IsLocalizable && column.LocalizationColumn != null) { StringBuilder columnPropertyBuilder = new StringBuilder(); AddColumnPropertyValues(columnPropertyBuilder, column.LocalizationColumn); if (Compare.AreSameOrdinalIgnoreCase(column.LocalizationColumn.ParentTable.Owner, "dbo")) { localizableColumnAttribute = string.Format(" [LocalizableColumn(\"{0}\", typeof({1}.{2}))]{3}", column.LocalizationColumn.Name, session.Configuration.CodeGen.BaseNamespace, column.LocalizationColumn.ParentTable.Name, Environment.NewLine); } else { localizableColumnAttribute = string.Format(" [LocalizableColumn(\"{0}\", typeof{1}.({2}.{3}))]{4}", column.LocalizationColumn.Name, session.Configuration.CodeGen.BaseNamespace, column.LocalizationColumn.ParentTable.Owner, column.LocalizationColumn.ParentTable.Name, Environment.NewLine); } } builder.AppendLine(); string propertyName = column.ToPascalCase(CodeFormatOptions.RemoveFKPrefix); string xmlElementName = propertyName; if (column.Name == table.Name) { propertyName += "_"; } // Create Enum Property if (column.IsForeignKey && column.ForeignKeyColumn != null && column.ForeignKeyColumn.ParentTable.IsEnum) { string enumType = column.ForeignKeyColumn.ParentTable.ToPascalCase(); builder.AppendLine(processorState.EnumPropertyTemplate.Replace(Tokens.FieldName, column.Name.ToCamelCase()).Replace(Tokens.XmlAttribute, enumType).Replace(Tokens.AdditionalAttributes, foreignColumnAttribute + localizableColumnAttribute).Replace(Tokens.EnumType, enumType).Replace(Tokens.PropertyName, enumType).Replace(Tokens.Summary, column.Description).Replace(Tokens.SchemaAttributes, GeneratePropertyAttribute(column)).Replace(Tokens.ColumnName, column.Name)); } else { builder.AppendLine(processorState.PropertyTemplate.Replace(Tokens.FieldName, column.Name.ToCamelCase()).Replace(Tokens.XmlAttribute, xmlElementName).Replace(Tokens.AdditionalAttributes, foreignColumnAttribute + localizableColumnAttribute).Replace(Tokens.DataTypeShort, column.GetDataTypeShort()).Replace(Tokens.DataTypeLong, column.GetDataTypeLong()).Replace(Tokens.PropertyName, propertyName).Replace(Tokens.Summary, column.Description).Replace(Tokens.SchemaAttributes, GeneratePropertyAttribute(column)).Replace(Tokens.ColumnName, column.Name)); } } return(builder.ToString()); }
/// <summary> /// </summary> /// <returns></returns> public string GenerateAllObjects() { Dictionary <string, StringBuilder> lookup = new Dictionary <string, StringBuilder>(); StringBuilder output = new StringBuilder(); AddBaseUsingDirectives(output); string baseNamespace = session.Configuration.CodeGen.BaseNamespace.Trim(); if (session.Configuration.CodeGen.GenerateTables) { GenerateFromTables(baseNamespace, lookup, output); } if (session.Configuration.CodeGen.GenerateViews) { GenerateFromViews(baseNamespace, lookup, output); } if (session.Configuration.CodeGen.GenerateProcedures) { GenerateFromProcedures(baseNamespace, lookup, output); } AddBaseNamespaceStart(output, baseNamespace); StringBuilder value; if (lookup.Count == 1 && lookup.TryGetValue("Dbo", out value)) { output.AppendLine(value.ToString()); AddBaseNamespaceEnd(output, baseNamespace); return(output.ToString()); } foreach (KeyValuePair <string, StringBuilder> pair in lookup) { if (Compare.AreSameOrdinalIgnoreCase(pair.Key, "dbo")) { output.AppendLine(pair.Value.ToString()); continue; } output.AppendLine("namespace " + pair.Key); output.AppendLine("{"); output.AppendLine(pair.Value.ToString()); output.AppendLine("}"); } AddBaseNamespaceEnd(output, baseNamespace); return(output.ToString()); }
public IEnumerable <GeneratedObject> GenerateObjects() { List <string> namespaces = new List <string>(); if (session.Configuration.CodeGen.GenerateTables) { foreach (TableDefinition table in session.Schema.Tables) { if (table.IsReadOnly) { continue; } string classNamespace = session.Configuration.CodeGen.BaseNamespace.Trim(); if (!Compare.IsNullOrEmpty(classNamespace) && !Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo")) { classNamespace += "."; } if (!Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo")) { classNamespace += table.Owner; } if (!namespaces.Contains(classNamespace)) { namespaces.Add(classNamespace); } } foreach (TableDefinition table in session.Schema.Tables) { if (table.IsReadOnly) { continue; } string name = Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo") ? table.Name : table.Owner + "." + table.Name; yield return(new GeneratedObject(GenerateSingleClass(table, namespaces), name)); } } if (session.Configuration.CodeGen.GenerateViews) { foreach (TableDefinition table in session.Schema.Tables) { if (!table.IsReadOnly) { continue; } string classNamespace = session.Configuration.CodeGen.BaseNamespace.Trim(); if (!Compare.IsNullOrEmpty(classNamespace) && !Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo")) { classNamespace += "."; } if (!Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo")) { classNamespace += table.Owner; } if (!namespaces.Contains(classNamespace)) { namespaces.Add(classNamespace); } } foreach (TableDefinition table in session.Schema.Tables) { if (!table.IsReadOnly) { continue; } string name = Compare.AreSameOrdinalIgnoreCase(table.Owner, "dbo") ? table.Name : table.Owner + "." + table.Name; yield return(new GeneratedObject(GenerateSingleClass(table, namespaces), name)); } } if (session.Configuration.CodeGen.GenerateProcedures) { foreach (ProcedureDefinition procedure in session.Schema.Procedures) { string classNamespace = session.Configuration.CodeGen.BaseNamespace.Trim(); if (!Compare.IsNullOrEmpty(classNamespace) && !Compare.AreSameOrdinalIgnoreCase(procedure.Owner, "dbo")) { classNamespace += "."; } if (!Compare.AreSameOrdinalIgnoreCase(procedure.Owner, "dbo")) { classNamespace += procedure.Owner; } if (!namespaces.Contains(classNamespace)) { namespaces.Add(classNamespace); } } foreach (ProcedureDefinition procedure in session.Schema.Procedures) { string name = Compare.AreSameOrdinalIgnoreCase(procedure.Owner, "dbo") ? procedure.Name : procedure.Owner + "." + procedure.Name; yield return(new GeneratedObject(GenerateSingleProcedure(procedure, namespaces), name)); } } string className = session.Configuration.Provider.Name; yield return(new GeneratedObject(GenerateDataSessionInterface(namespaces, className), "I" + className)); yield return(new GeneratedObject(GenerateDataSession(namespaces, className), className)); }