示例#1
0
 public void GeneratePocos(CDBM db, CSharpProject p, CUsing NamespaceName, TextWriter mensajes)
 {
     foreach (CTableM t in db.lTable)
     {
         p.AddCSharpFile(PocoName(t.Name), NamespaceName);
         CClass c = p.AddClass(PocoName(t.Name));
         c.lUsing.Add(CSharpStandarUsing.System);
         CConstructor consVacio = new CConstructor(c, CSharpVisibility.cvPublic);
         CConstructor cons      = new CConstructor(c, CSharpVisibility.cvPublic);
         //Se añaden al final por estética de la clase generada
         foreach (CFieldM f in t.lFieldAll)
         {
             CType aux = CGenerator.SqlServerTD2CSharp(f.Td, f.IsNullable);
             if (aux.Equals(CSharpPrimitiveType.cDateTime))
             {
                 c.lUsing.Add(CSharpStandarUsing.System);
             }
             c.AddField(new CField(f.Name, aux, CSharpVisibility.cvPublic));
             cons.AddParam(SUtil.LowerFirst(f.Name), CGenerator.SqlServerTD2CSharp(f.Td, f.IsNullable));
             cons.AddSentence(new CTextualSentence($"this.{f.Name} = {SUtil.LowerFirst(f.Name)};"));
         }
         c.AddConstructor(consVacio);
         c.AddConstructor(cons);
     }
     mensajes.WriteLine("Pocos generados en: " + p.RootDirectory.ActualDirectory.FullName);
 }
示例#2
0
        private CClass BuildBaseDataServiceClass(CInterface dbProviderInterface)
        {
            var dataService = new CClass($"BaseDataService")
            {
                IsAbstract = true
            };

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System"
                }
            });

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = dbProviderInterface.Namespace
            });

            dataService.Namespace = new CNamespace
            {
                NamespaceName =
                    $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.DataServices.Base"
            };
            dataService.Field.Add(new CField
            {
                AccessModifier = CAccessModifier.Protected,
                FieldName      = "DbProvider",
                FieldType      = $"I{_dataLayerKProject.ProjectName}DbProvider",
                IsReadonly     = true
            });

            var staticConstructor = new CConstructor
            {
                IsStatic        = true,
                AccessModifier  = CAccessModifier.Private,
                ConstructorName = "BaseDataService"
            };

            dataService.Constructor.Add(staticConstructor);

            var constructor = new CConstructor
            {
                ConstructorName = dataService.ClassName,
                AccessModifier  = CAccessModifier.Protected
            };

            constructor.Parameter.Add(new CParameter
            {
                ParameterName = "dbProvider",
                Type          = $"I{_dataLayerKProject.ProjectName}DbProvider"
            });
            constructor.CodeSnippet = "DbProvider = dbProvider ?? throw new ArgumentException(nameof(dbProvider));";
            dataService.Constructor.Add(constructor);


            return(dataService);
        }
 public void Visit(CConstructor constructor)
 {
     _constructorVisitor.Visit(this, constructor);
 }
示例#4
0
        private CClass BuildDataServiceClass(CInterface dataServiceInterface, CInterface dataProviderInterface, List <CClass> dtoClasses)
        {
            var dataService = new CClass($"{_dataLayerKProject.ProjectName}{_dataLayerKProject.ProjectSuffix}Service")
            {
                Namespace = new CNamespace
                {
                    NamespaceName =
                        $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.{_dataLayerKProject.ProjectSuffix}.DataServices"
                },
                IsAbstract   = false,
                InheritsFrom = new CClass("BaseDataService"),
                Implements   = new List <CInterface> {
                    new CInterface {
                        InterfaceName = dataServiceInterface.InterfaceName
                    }
                }
            };

            dataService.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System"
                }
            });
            dataService.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Collections.Generic"
                }
            });
            dataService.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Data"
                }
            });
            dataService.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Linq"
                }
            });

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Reflection"
                }
            });

            dataService.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Threading.Tasks"
                }
            });

            //dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = "Dapper" } });

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = new CNamespace {
                    NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.DataServices.Base"
                }
            });

            //dataService.NamespaceRef.Add(new CNamespaceRef { ReferenceTo = new CNamespace { NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.Extensions" } });

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = new CNamespace {
                    NamespaceName = $"{_dataLayerKProject.CompanyName}.{_dataLayerKProject.ProjectName}{_dataLayerKProject.NamespaceSuffix}.Data.Entities"
                }
            });

            dataService.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = dataProviderInterface.Namespace
            });


            /*
             * if (ConnectsToDatabaseType == DatabaseTypes.Postgres)
             * {
             *  dataService.NamespaceRef.Add(new CNamespaceRef
             *  {
             *      ReferenceTo = new CNamespace { NamespaceName = "Npgsql" }
             *  });
             * }*/

            //dataService.Field.Add(new SField() { FieldName = "DefaultPageNumber", FieldType = "int", IsReadonly = false });
            //dataService.Field.Add(new SField() { FieldName = "DefaultPageSize", FieldType = "int", IsReadonly = false });

            var constructor = new CConstructor
            {
                IsStatic        = false,
                ConstructorName = dataService.ClassName,
                CodeSnippet     = "//empty constructor"
            };

            constructor.Parameter.Add(new CParameter
            {
                PassToBaseClass = true,
                ParameterName   = "dbProvider",
                Type            = $"I{_dataLayerKProject.ProjectName}DbProvider"
            });

            dataService.Constructor.Add(constructor);

            var methods = GetDataServiceMethods();

            foreach (var m in methods)
            {
                m.CodeSnippet = "throw new NotImplementedException();";
            }

            dataService.Method.AddRange(methods);


            //todo: clean this up
            // if (dtoClasses.Count > 0)
            //     dataService.NamespaceRef.Add(_dataProject.BuildNamespaceRefForType(dtoClasses.First().ClassName));
            return(dataService);
        }
示例#5
0
        private CClass BuildDataHealthCheckClass(CInterface dataHealthCheckInterface, CClass baseDataService, CInterface dbProviderInterface)
        {
            var @class = new CClass("DataHealthCheckService")
            {
                AccessModifier = CAccessModifier.Public,
                Implements     = new List <CInterface>()
                {
                    dataHealthCheckInterface
                },
                InheritsFrom = baseDataService
            };

            @class.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System"
                }
            });



            @class.NamespaceRef.Add(new CNamespaceRef
            {
                ReferenceTo = new CNamespace {
                    NamespaceName = "System.Threading.Tasks"
                }
            });

            /*
             * @class.NamespaceRef.Add(new CNamespaceRef
             * {
             *  ReferenceTo = new CNamespace { NamespaceName = "Dapper" }
             * });
             */

            @class.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = baseDataService.Namespace
            });
            @class.NamespaceRef.Add(new CNamespaceRef {
                ReferenceTo = dbProviderInterface.Namespace
            });


            @class.Namespace = new CNamespace {
                NamespaceName = dataHealthCheckInterface.Namespace.NamespaceName
            };

            var constructor = new CConstructor
            {
                AccessModifier  = CAccessModifier.Public,
                ConstructorName = "DataHealthCheckService",
                Parameter       = new List <CParameter>
                {
                    new CParameter {
                        Type = dbProviderInterface.InterfaceName, ParameterName = "dbProvider", PassToBaseClass = true
                    },
                },
                CodeSnippet = "//Empty Constructor"
            };

            @class.Constructor.Add(constructor);

            var methodCheck = new CMethod {
                ReturnType = "Task<bool>", MethodName = "Check", IsAsync = true, AccessModifier = CAccessModifier.Public
            };

            /*
             * methodCheck.CodeSnippet =
             *  @"using var connection = DbProvider.GetConnection();
             *
             *  return await connection.QueryFirstAsync<bool>(""select 1"").ConfigureAwait(false);
             * ";
             */
            methodCheck.CodeSnippet = "throw new NotImplementedException();";
            @class.Method.Add(methodCheck);

            return(@class);
        }
示例#6
0
        public void Visit(IVisitor visitor, CConstructor constructor)
        {
            string staticString   = constructor.IsStatic ? "static " : string.Empty;
            var    accessModifier = constructor.IsStatic ? string.Empty : $"{constructor.AccessModifier.GetString()} ";

            _codeWriter.Write($"{accessModifier}{staticString}{constructor.ConstructorName}(");

            var first = true;

            foreach (var param in constructor.Parameter)
            {
                if (!first)
                {
                    _codeWriter.Write(", ");
                }

                visitor.VisitCParameter(param);
                first = false;
            }
            _codeWriter.Write(")");

            var passToBaseClass = constructor.Parameter.Where(p => p.PassToBaseClass);

            if (passToBaseClass.Any())
            {
                _codeWriter.Write(" : base(");
                var firstParameter = true;
                foreach (var parameter in passToBaseClass)
                {
                    if (!firstParameter)
                    {
                        _codeWriter.Write(", ");
                    }
                    firstParameter = false;
                    _codeWriter.Write($"{parameter.ParameterName}");
                }
                _codeWriter.Write(")");
            }

            {
                _codeWriter.WriteLine(string.Empty);
                _codeWriter.WriteLine("{");
                _codeWriter.Indent();
                if (!string.IsNullOrEmpty(constructor.CodeSnippetFile) ||
                    !string.IsNullOrEmpty(constructor.CodeSnippet))
                {
                    if (!string.IsNullOrEmpty(constructor.CodeSnippet))
                    {
                        _codeWriter.WriteLine(constructor.CodeSnippet);
                    }
                    if (!string.IsNullOrEmpty(constructor.CodeSnippetFile))
                    {
                        var snippetService = new SnippetService();
                        _codeWriter.WriteLine(snippetService.GetCodeSnippet(constructor.ConstructorName,
                                                                            constructor.CodeSnippetFile));
                    }
                }
                else
                {
                    //_codeWriter.WriteLine("throw new NotImplementedException();");
                }
                _codeWriter.Unindent();
                _codeWriter.WriteLine("}");
                _codeWriter.WriteLine();
            }
        }