Example #1
0
        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);
        }
Example #3
0
        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());
        }
Example #4
0
        /// <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));
                    }
                }
            }
        }
Example #5
0
        // 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());
        }
Example #6
0
        /// <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());
        }
Example #7
0
        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));
        }