Пример #1
0
        private void WriteSingleReadData(string resultClassName, DatabaseResultSet result)
        {
            //single result set
            using (_cb.BeginNest("private static void ReadData(IDataReader rdr, ICollection<" + resultClassName + "> result)"))
            {
                using (_cb.BeginNest("while (rdr.Read())"))
                {
                    _cb.AppendLine("var record = new " + resultClassName + "();");
                    for (int index = 0; index < result.Columns.Count; index++)
                    {
                        var column   = result.Columns[index];
                        var name     = column.NetName ?? NameFixer.ToPascalCase(column.Name);
                        var dt       = column.DataType;
                        var dataType = dt != null?dt.NetCodeName(column) : column.DbDataType;

                        if (!string.Equals(dataType, "String", StringComparison.OrdinalIgnoreCase) && !dataType.EndsWith("[]", StringComparison.OrdinalIgnoreCase))
                        {
                            dataType += "?"; //nullable
                        }
                        //manage DbNull
                        _cb.AppendLine("record." + name + " = (" + dataType + ")FixNull(rdr[" + index + "]);");
                    }
                    _cb.AppendLine("result.Add(record);");
                }
            }
        }
Пример #2
0
 public void TestSingularNames()
 {
     using (var t = new BulkTester((x, r) => NameFixer.MakeSingular(x).ShouldBe(r, x)))
     {
         t.Test("categories", "category");
         t.Test("products", "product");
         t.Test("CATEGORIES", "CATEGORY");
         t.Test("PRODUCTS", "PRODUCT");
         t.Test("NOAM", "NOAM");
     }
 }
Пример #3
0
        public static string ArgumentCamelCaseName(DatabaseArgument argument)
        {
            var name = argument.NetName;

            if (string.IsNullOrEmpty(name))
            {
                name             = NameFixer.ToPascalCase(argument.Name);
                argument.NetName = name;
            }
            return(Char.ToLowerInvariant(name[0])
                   + (name.Length > 1 ? name.Substring(1) : string.Empty));
        }
Пример #4
0
        public static SyntaxTree MoveNamesToCorrectNamespaces(SyntaxTree tree, Dictionary <string, string> namesToNamespaces)
        {
            if (tree.FilePath.EndsWith("manual.cs"))
            {
                return(tree);
            }

            var nameFixer = new NameFixer(namesToNamespaces);
            var newTree   = nameFixer.FixNames(tree);

            return(CSharpSyntaxTree.ParseText(newTree.GetText(), null, tree.FilePath));
        }
Пример #5
0
        private void WriteProperties(DatabaseResultSet result)
        {
            foreach (var column in result.Columns)
            {
                if (string.IsNullOrEmpty(column.NetName))
                {
                    column.NetName = NameFixer.ToPascalCase(column.Name);
                }
                var dataType = TranslateDataTypeToCSharp(column.DbDataType);

                if (!string.Equals(dataType, "String", StringComparison.OrdinalIgnoreCase) &&
                    !dataType.EndsWith("[]", StringComparison.OrdinalIgnoreCase))
                {
                    dataType += "?"; //nullable
                }
                _cb.AppendAutomaticProperty(dataType, column.NetName);
            }
        }
Пример #6
0
        public void ToPascalCaseTest()
        {
            //ARRANGE

            var dict = new Dictionary <string, string>();

            //pascalcase
            dict.Add("START_DATE", "StartDate");   //underscore
            dict.Add("EMPLOYEE_ID", "EmployeeId");
            dict.Add("EMPLOYEE ID", "EmployeeId"); //spaces
            dict.Add("CategoryId", "CategoryId");  //if mixed case, preserve it
            //singularization
            dict.Add("Cars", "Car");
            dict.Add("rates", "Rate");
            dict.Add("Boxes", "Box");
            dict.Add("Categories", "Category");
            dict.Add("queries", "Query");
            dict.Add("Statuses", "Status");
            dict.Add("People", "Person");
            //complex titlecase
            dict.Add("les naufragés d'ythaq", "LesNaufragésDythaq");
            dict.Add("Database_IO", "DatabaseIO"); //mixed case with uppercase acronym
            //Id recognition
            dict.Add("CategoryID", "CategoryId");
            //weird db names
            dict.Add("$NAME", "Name");

            foreach (var item in dict)
            {
                var name     = item.Key;
                var expected = item.Value;

                //ACT
                var actual = NameFixer.ToPascalCase(name);

                //ASSERT
                Assert.AreEqual(expected, actual);
            }
        }
Пример #7
0
        public static List <SyntaxTree> MoveNamesToCorrectNamespaces(List <SyntaxTree> trees, Dictionary <string, string> namesToNamespaces)
        {
            List <SyntaxTree> ret = new List <SyntaxTree>();

            var nameFixer = new NameFixer(namesToNamespaces);

            foreach (SyntaxTree tree in trees)
            {
                if (tree.FilePath.EndsWith("manual.cs"))
                {
                    ret.Add(tree);
                }
                else
                {
                    var newTree = nameFixer.FixNames(tree);
                    newTree = CSharpSyntaxTree.ParseText(newTree.GetText().ToString(), null, tree.FilePath);
                    ret.Add(newTree);
                }
            }

            return(ret);
        }
Пример #8
0
        public void ToCamelCaseTest()
        {
            //ARRANGE

            var dict = new Dictionary <string, string>();

            //pascalcase
            dict.Add("START_DATE", "startDate");   //underscore
            dict.Add("EMPLOYEE_ID", "employeeId");
            dict.Add("EMPLOYEE ID", "employeeId"); //spaces
            dict.Add("CategoryId", "categoryId");  //if mixed case, preserve it
            //no singularization
            dict.Add("Cars", "cars");
            //complex titlecase
            dict.Add("les naufragés d'ythaq", "lesNaufragésDythaq");
            dict.Add("Database_IO", "databaseIO"); //mixed case with uppercase acronym
            //Id recognition
            dict.Add("CategoryID", "categoryId");
            //weird db names
            dict.Add("$NAME", "name");
            //c# keywords
            dict.Add("NAMESPACE", "@namespace");
            dict.Add("CLASS", "@class");

            foreach (var item in dict)
            {
                var name     = item.Key;
                var expected = item.Value;

                //ACT
                var actual = NameFixer.ToCamelCase(name);

                //ASSERT
                Assert.AreEqual(expected, actual);
            }
        }
Пример #9
0
 public SprocLogic(DatabaseStoredProcedure storedProcedure)
 {
     _storedProcedure = storedProcedure;
     _className       = _storedProcedure.NetName ?? (_storedProcedure.NetName = NameFixer.ToPascalCase(_storedProcedure.Name));
 }
Пример #10
0
 public TreeRewriterForAdding(NameFixer parent, Dictionary <string, MovedData> namespaceToMovedData)
 {
     this.parent = parent;
     this.namespaceToMovedData = namespaceToMovedData;
 }