예제 #1
0
 /// <summary>
 ///		Genera la documentación a partir de estructuras de documentación
 /// </summary>
 private void Process(StructDocumentationModelCollection structDocs, ProjectDocumentationModel project)
 {
     // Copia el contenido del directorio de plantillas
     CopyTemplates(project);
     // Genera la documentación
     new Processor.DocumentationGenerator(this, project).Process(structDocs);
 }
        /// <summary>
        ///		Comprueba si existe un tipo de estructura hija
        /// </summary>
        private bool CheckIfExistsChild(StructDocumentationModel objStruct, string strStructType)
        {
            StructDocumentationModelCollection objColStructs = SelectItemsForGeneration(objStruct, strStructType);

            // Devuelve el valor que indica si existe
            return(objColStructs != null && objColStructs.Count > 0);
        }
        /// <summary>
        ///		Convierte las referencias de una serie de estructuras
        /// </summary>
        internal void ConvertReferences(StructDocumentationModelCollection structsDoc)
        {
            Dictionary <string, StructDocumentationModel> dctStruct = new Dictionary <string, StructDocumentationModel>();

            // Añade las estructuras al diccionario
            FillDictionary(dctStruct, structsDoc);
            // Convierte las referencias
            ConvertReferences(dctStruct, structsDoc);
        }
예제 #4
0
        /// <summary>
        ///		Convierte un grupo de espacio de nombres en una serie de estructuras de documentación
        /// </summary>
        internal StructDocumentationModelCollection Convert(NameSpaceGroupModelCollection groups)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Convierte los grupos
            foreach (NameSpaceGroupModel group in groups)
            {
                structsDoc.Add(Convert(group));
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
        /// <summary>
        ///		Convierte un grupo de espacio de nombres en una serie de estructuras de documentación
        /// </summary>
        internal StructDocumentationModelCollection Convert(NameSpaceGroupModelCollection objColGroups)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Convierte los grupos
            foreach (NameSpaceGroupModel objGroup in objColGroups)
            {
                objColStructs.Add(Convert(objGroup));
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
예제 #6
0
        /// <summary>
        ///		Genera la documentación de un proyecto
        /// </summary>
        private void CompileProject(ProjectDocumentationModel project)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Genera las estructuras de documentación de los diferentes proveedores
            foreach (ProviderModel provider in project.Providers)
            {
                try
                {
                    switch (provider.Type.TrimIgnoreNull().ToUpper())
                    {
                    case "C#":
                        structsDoc.Add(new LibNetParser.ProgramParser().Parse(provider.Parameters));
                        break;

                    case "VISUALBASIC":
                        structsDoc.Add(new LibNetParser.ProgramParser().Parse(provider.Parameters));
                        break;

                    case "SQLSERVER":
                        structsDoc.Add(CompileDatabase(LibDataBaseDocumenter.StructDataBaseConversor.DataBaseType.SqlServer,
                                                       provider.Parameters));
                        break;

                    case "OLEDB":
                        structsDoc.Add(CompileDatabase(LibDataBaseDocumenter.StructDataBaseConversor.DataBaseType.SqlServer,
                                                       provider.Parameters));
                        break;

                    case "XMLSTRUCTS":
                        structsDoc.Add(new LibXMLStructs.Documenter.XMLStructsDocumenter().Parse(provider.Parameters));
                        break;

                    case "HELPPAGES":
                        structsDoc.Add(new LibHelpPages.Documenter.HelpPages().Parse(provider.Parameters));
                        break;

                    default:
                        Errors.Add($"No se reconoce el proveedor {provider.Type}");
                        break;
                    }
                }
                catch (Exception exception)
                {
                    Errors.Add($"Error en la generación de {provider.Type}. {exception.Message}");
                }
            }
            // Genera la documentación
            Process(structsDoc, project);
        }
        /// <summary>
        ///		Convierte una serie de elementos en estructuras
        /// </summary>
        private StructDocumentationModelCollection Convert(StructDocumentationModel objStruct, LanguageStructModelCollection objColItems)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Convierte los elementos
            foreach (LanguageStructModel objItem in objColItems)
            {
                switch (objItem.IDType)
                {
                case LanguageStructModel.StructType.Class:
                    objColStructs.Add(ConvertClass(objStruct, objItem as ClassModel));
                    break;

                case LanguageStructModel.StructType.CompilationUnit:
                    objColStructs.AddRange(Convert(objStruct, objItem.Items));
                    break;

                case LanguageStructModel.StructType.Constructor:
                    objColStructs.Add(ConvertConstructor(objStruct, objItem as ConstructorModel));
                    break;

                case LanguageStructModel.StructType.Enum:
                    objColStructs.Add(ConvertEnum(objStruct, objItem as EnumModel));
                    break;

                case LanguageStructModel.StructType.EnumMember:
                    objColStructs.Add(ConvertEnumMember(objStruct, objItem as EnumMemberModel));
                    break;

                case LanguageStructModel.StructType.Interface:
                    objColStructs.Add(ConvertInterface(objStruct, objItem as InterfaceModel));
                    break;

                case LanguageStructModel.StructType.Method:
                    objColStructs.Add(ConvertMethod(objStruct, objItem as MethodModel));
                    break;

                case LanguageStructModel.StructType.Property:
                    objColStructs.Add(ConvertProperty(objStruct, objItem as PropertyModel));
                    break;

                case LanguageStructModel.StructType.Struct:
                    objColStructs.Add(ConvertStruct(objStruct, objItem as StructModel));
                    break;
                }
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
예제 #8
0
        /// <summary>
        ///		Convierte una serie de elementos en estructuras
        /// </summary>
        private StructDocumentationModelCollection Convert(StructDocumentationModel structDoc, LanguageStructModelCollection items)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Convierte los elementos
            foreach (LanguageStructModel item in items)
            {
                switch (item.Type)
                {
                case LanguageStructModel.StructType.Class:
                    structsDoc.Add(ConvertClass(structDoc, item as ClassModel));
                    break;

                case LanguageStructModel.StructType.CompilationUnit:
                    structsDoc.AddRange(Convert(structDoc, item.Items));
                    break;

                case LanguageStructModel.StructType.Constructor:
                    structsDoc.Add(ConvertConstructor(structDoc, item as ConstructorModel));
                    break;

                case LanguageStructModel.StructType.Enum:
                    structsDoc.Add(ConvertEnum(structDoc, item as EnumModel));
                    break;

                case LanguageStructModel.StructType.EnumMember:
                    structsDoc.Add(ConvertEnumMember(structDoc, item as EnumMemberModel));
                    break;

                case LanguageStructModel.StructType.Interface:
                    structsDoc.Add(ConvertInterface(structDoc, item as InterfaceModel));
                    break;

                case LanguageStructModel.StructType.Method:
                    structsDoc.Add(ConvertMethod(structDoc, item as MethodModel));
                    break;

                case LanguageStructModel.StructType.Property:
                    structsDoc.Add(ConvertProperty(structDoc, item as PropertyModel));
                    break;

                case LanguageStructModel.StructType.Struct:
                    structsDoc.Add(ConvertStruct(structDoc, item as StructModel));
                    break;
                }
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
        /// <summary>
        ///		Trata un bucle
        /// </summary>
        private void TreatLoop(MLNode objMLSource, MLNode objMLParentTarget, StructDocumentationModel objStruct, string strStructType)
        {
            StructDocumentationModelCollection objColStructs = SelectItemsForGeneration(objStruct, strStructType);

            // Crea los nodos hijo
            foreach (StructDocumentationModel objChild in objColStructs)
            {                                     // Si hay que añadirla a la colección de estructuras por referencia, se añade
                if (objMLSource.Attributes[cnstStrTagAttributeAddToReferences].Value.GetBool())
                {
                    Document.StructsReferenced.Add(objChild);
                }
                // Trata los nodos hijo
                TreatChilds(objMLSource.Nodes, objMLParentTarget, objChild);
            }
        }
예제 #10
0
        /// <summary>
        ///		Trata un bucle
        /// </summary>
        private void TreatLoop(MLNode sourceML, MLNode parentTargetML, StructDocumentationModel structDoc, string structType)
        {
            StructDocumentationModelCollection structsDoc = SelectItemsForGeneration(structDoc, structType);

            // Crea los nodos hijo
            foreach (StructDocumentationModel child in structsDoc)
            {
                // Si hay que añadirla a la colección de estructuras por referencia, se añade
                if (sourceML.Attributes[TagAttributeAddToReferences].Value.GetBool())
                {
                    Document.StructsReferenced.Add(child);
                }
                // Trata los nodos hijo
                TreatChilds(sourceML.Nodes, parentTargetML, child);
            }
        }
예제 #11
0
        /// <summary>
        ///		Obtiene los elementos de determinada estructura que se deben documentar
        /// </summary>
        private StructDocumentationModelCollection SelectItemsForGeneration(StructDocumentationModel structDoc, string typeId)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Obtiene las estructuras
            foreach (StructDocumentationModel child in structDoc.Childs)
            {
                if (child.Type.EqualsIgnoreCase(typeId) &&
                    Generator.Templates.MustGenerateDocumentation(child, Project.GenerationParameters))
                {
                    structsDoc.Add(child);
                }
            }
            // Ordena las estructuras por nombre
            structsDoc.SortByName();
            // Devuelve la colección
            return(structsDoc);
        }
예제 #12
0
        /// <summary>
        ///		Convierte los procedimientos
        /// </summary>
        private StructDocumentationModelCollection ConvertProcedures(StructDocumentationModel objParent, SchemaRoutinesCollection objColRoutines)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Crea la estructura de las rutinas
            foreach (SchemaRoutine objRoutine in objColRoutines)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objRoutine, objRoutine.Type.ToString());

                // Añade los parámetros de la rutina
                objStruct.Parameters.Add("Summary", "");
                objStruct.Parameters.Add("Prototype", objRoutine.Definition);
                // Añade la estructura a la colección
                objColStructs.Add(objStruct);
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
        /// <summary>
        ///		Obtiene los elementos de determinada estructura que se deben documentar
        /// </summary>
        private StructDocumentationModelCollection SelectItemsForGeneration(StructDocumentationModel objStruct, string strIDType)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Obtiene las estructuras
            foreach (StructDocumentationModel objChild in objStruct.Childs)
            {
                if (objChild.Type.EqualsIgnoreCase(strIDType) &&
                    Generator.Templates.MustGenerateDocumentation(objChild, Project.GenerationParameters))
                {
                    objColStructs.Add(objChild);
                }
            }
            // Ordena las estructuras por nombre
            objColStructs.SortByName();
            // Devuelve la colección
            return(objColStructs);
        }
        /// <summary>
        ///		Convierte los desencadenadores
        /// </summary>
        private StructDocumentationModelCollection ConvertTriggers(StructDocumentationModel parent, List <TriggerDbModel> triggers, TableDbModel table)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Añade los desencadenadores
            foreach (TriggerDbModel trigger in triggers)
            {
                if (trigger.Table.EqualsIgnoreCase(table.Name))
                {
                    StructDocumentationModel structDoc = CreateStruct(parent, trigger, "Trigger");

                    // Añade los parámetros de la tabla
                    structDoc.Parameters.Add("Table", trigger.Table);
                    structDoc.Parameters.Add("UserName", trigger.UserName);
                    structDoc.Parameters.Add("Category", trigger.Category);
                    structDoc.Parameters.Add("IsExecuted", trigger.IsExecuted);
                    structDoc.Parameters.Add("IsExecutionAnsiNullsOn", trigger.IsExecutionAnsiNullsOn);
                    structDoc.Parameters.Add("IsExecutionQuotedIdentOn", trigger.IsExecutionQuotedIdentOn);
                    structDoc.Parameters.Add("IsAnsiNullsOn", trigger.IsAnsiNullsOn);
                    structDoc.Parameters.Add("IsQuotedIdentOn", trigger.IsQuotedIdentOn);
                    structDoc.Parameters.Add("IsExecutionAfterTrigger", trigger.IsExecutionAfterTrigger);
                    structDoc.Parameters.Add("IsExecutionDeleteTrigger", trigger.IsExecutionDeleteTrigger);
                    structDoc.Parameters.Add("IsExecutionFirstDeleteTrigger", trigger.IsExecutionFirstDeleteTrigger);
                    structDoc.Parameters.Add("IsExecutionFirstInsertTrigger", trigger.IsExecutionFirstInsertTrigger);
                    structDoc.Parameters.Add("IsExecutionFirstUpdateTrigger", trigger.IsExecutionFirstUpdateTrigger);
                    structDoc.Parameters.Add("IsExecutionInsertTrigger", trigger.IsExecutionInsertTrigger);
                    structDoc.Parameters.Add("IsExecutionInsteadOfTrigger", trigger.IsExecutionInsteadOfTrigger);
                    structDoc.Parameters.Add("IsExecutionLastDeleteTrigger", trigger.IsExecutionLastDeleteTrigger);
                    structDoc.Parameters.Add("IsExecutionLastInsertTrigger", trigger.IsExecutionLastInsertTrigger);
                    structDoc.Parameters.Add("IsExecutionLastUpdateTrigger", trigger.IsExecutionLastUpdateTrigger);
                    structDoc.Parameters.Add("IsExecutionTriggerDisabled", trigger.IsExecutionTriggerDisabled);
                    structDoc.Parameters.Add("IsExecutionUpdateTrigger", trigger.IsExecutionUpdateTrigger);
                    structDoc.Parameters.Add("Summary", trigger.Description);
                    structDoc.Parameters.Add("DateCreate", Format(trigger.CreatedAt));
                    structDoc.Parameters.Add("DateUpdate", Format(trigger.UpdatedAt));
                    structDoc.Parameters.Add("DateReference", trigger.DateReference);
                    structDoc.Parameters.Add("Prototype", trigger.Content);
                    // Añade la estructura
                    structsDoc.Add(structDoc);
                }
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
예제 #15
0
        /// <summary>
        ///		Convierta las restricciones
        /// </summary>
        private StructDocumentationModelCollection ConvertConstrainst(StructDocumentationModel objParent, SchemaConstraintsCollection objColConstraints)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Convierte las restricciones
            foreach (SchemaConstraint objConstraint in objColConstraints)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objConstraint, "Constraint");

                // Añade los parámetros
                objStruct.Parameters.Add("Table", objConstraint.Table);
                objStruct.Parameters.Add("Column", objConstraint.Column);
                objStruct.Parameters.Add("Type", objConstraint.Type.ToString());
                objStruct.Parameters.Add("Position", objConstraint.Position);
                // Añade la estructura a la colección
                objColStructs.Add(objStruct);
            }
            // Devuelve la documentación
            return(objColStructs);
        }
        /// <summary>
        ///		Convierta las restricciones
        /// </summary>
        private StructDocumentationModelCollection ConvertConstrainst(StructDocumentationModel parent, List <ConstraintDbModel> constraints)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Convierte las restricciones
            foreach (ConstraintDbModel constraint in constraints)
            {
                StructDocumentationModel structDoc = CreateStruct(parent, constraint, "Constraint");

                // Añade los parámetros
                structDoc.Parameters.Add("Table", constraint.Table);
                structDoc.Parameters.Add("Column", constraint.Column);
                structDoc.Parameters.Add("Type", constraint.Type.ToString());
                structDoc.Parameters.Add("Position", constraint.Position);
                // Añade la estructura a la colección
                structsDoc.Add(structDoc);
            }
            // Devuelve la documentación
            return(structsDoc);
        }
        /// <summary>
        ///		Genera la documentación de un proyecto
        /// </summary>
        private void CompileProject(ProjectDocumentationModel objProject)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Genera las estructuras de documentación de los diferentes proveedores
            foreach (ProviderModel objProvider in objProject.Providers)
            {
                try
                { switch (objProvider.Type.TrimIgnoreNull().ToUpper())
                  {
                  case "C#":
                      objColStructs.Add(new LibCSharpParser.ProgramParser().Parse(objProvider.Parameters));
                      break;

                  case "VISUALBASIC":
                      objColStructs.Add(new LibVisualBasicParser.ProgramParser().Parse(objProvider.Parameters));
                      break;

                  case "SQLSERVER":
                      objColStructs.Add(new LibSqlServer.Documenter.SchemaDocumenter().Parse(objProvider.Parameters));
                      break;

                  case "OLEDB":
                      objColStructs.Add(new LibOleDB.Documenter.SchemaDocumenter().Parse(objProvider.Parameters));
                      break;

                  case "XMLSTRUCTS":
                      objColStructs.Add(new LibXMLStructs.Documenter.XMLStructsDocumenter().Parse(objProvider.Parameters));
                      break;

                  default:
                      Errors.Add($"No se reconoce el proveedor {objProvider.Type}");
                      break;
                  }
                }
                catch (Exception objException)
                { Errors.Add($"Error en la generación de {objProvider.Type}. {objException.Message}"); }
            }
            // Genera la documentación
            Process(objColStructs, objProject);
        }
        /// <summary>
        ///		Convierte los procedimientos
        /// </summary>
        private StructDocumentationModelCollection ConvertProcedures(StructDocumentationModel parent, List <RoutineDbModel> routines)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Crea la estructura de las rutinas
            foreach (RoutineDbModel routine in routines)
            {
                StructDocumentationModel structDoc = CreateStruct(parent, routine, routine.Type.ToString());

                // Añade los parámetros de la rutina
                structDoc.Parameters.Add("Summary", routine.Description);
                structDoc.Parameters.Add("Remarks", ExtractRemarks(routine.Content));
                structDoc.Parameters.Add("DateCreate", Format(routine.CreatedAt));
                structDoc.Parameters.Add("DateUpdate", Format(routine.UpdatedAt));
                structDoc.Parameters.Add("Prototype", routine.Content);
                // Añade la estructura a la colección
                structsDoc.Add(structDoc);
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
예제 #19
0
        /// <summary>
        ///		Convierte las vistas
        /// </summary>
        private StructDocumentationModelCollection ConvertViews(StructDocumentationModel objParent, SchemaViewsCollection objColViews)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Crea la estructura de las vistas
            foreach (SchemaView objView in objColViews)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objView, "View");

                // Añade los parámetros de la tabla
                objStruct.Parameters.Add("Prototype", objView.Definition);
                objStruct.Parameters.Add("CheckOption", objView.CheckOption);
                objStruct.Parameters.Add("IsUpdatable", objView.IsUpdatable);
                // Añade las columnas
                objStruct.Childs.AddRange(ConvertColumns(objStruct, objView.Columns, null));
                // Añade la estructura a la colección
                objColStructs.Add(objStruct);
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
예제 #20
0
        /// <summary>
        ///		Convierta las columnas
        /// </summary>
        private StructDocumentationModelCollection ConvertColumns(StructDocumentationModel objParent, SchemaColumnsCollection objColColumns, SchemaTable objTable)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Ordena las columnas
            objColColumns.SortByOrdinalPosition();
            // Añade la información de las columnas
            foreach (SchemaColumn objColumn in objColColumns)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objColumn, "Column");

                // Añade los parámetros de la columna
                objStruct.Parameters.Add("Summary", objColumn.Description);
                objStruct.Parameters.Add("Default", objColumn.Default);
                objStruct.Parameters.Add("IsNullable", objColumn.IsNullable);
                objStruct.Parameters.Add("DataType", objColumn.DataType);
                objStruct.Parameters.Add("CharacterMaximumLength", objColumn.CharacterMaximumLength);
                objStruct.Parameters.Add("NumericPrecision", objColumn.NumericPrecision);
                objStruct.Parameters.Add("NumericPrecisionRadix", objColumn.NumericPrecisionRadix);
                objStruct.Parameters.Add("NumericScale", objColumn.NumericScale);
                objStruct.Parameters.Add("DateTimePrecision", objColumn.DateTimePrecision);
                objStruct.Parameters.Add("CharacterSetName", objColumn.CharacterSetName);
                objStruct.Parameters.Add("CollationCatalog", objColumn.CollationCatalog);
                objStruct.Parameters.Add("CollationSchema", objColumn.CollationSchema);
                objStruct.Parameters.Add("CollationName", objColumn.CollationName);
                objStruct.Parameters.Add("IsIdentity", objColumn.IsIdentity);
                // Obtiene el valor que indica si es una tabla foránea
                if (objTable != null)
                {
                    objStruct.Parameters.Add("IsForeignKey", CheckIsForeignKey(objTable, objColumn));
                }
                // Obtiene el tipo
                objStruct.Parameters.Add("Type", GetDataType(objColumn));
                // Añade la estructura a la colección
                objColStructs.Add(objStruct);
            }
            // Devuelve la colección
            return(objColStructs);
        }
예제 #21
0
        /// <summary>
        ///		Convierte los desencadenadores
        /// </summary>
        private StructDocumentationModelCollection ConvertTriggers(StructDocumentationModel objParent, SchemaTriggersCollection objColTriggers)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Añade los desencadenadores
            foreach (SchemaTrigger objTrigger in objColTriggers)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objTrigger, "Trigger");

                // Añade los parámetros de la tabla
                objStruct.Parameters.Add("Table", objTrigger.Table);
                objStruct.Parameters.Add("UserName", objTrigger.UserName);
                objStruct.Parameters.Add("Category", objTrigger.Category);
                objStruct.Parameters.Add("IsExecuted", objTrigger.IsExecuted);
                objStruct.Parameters.Add("IsExecutionAnsiNullsOn", objTrigger.IsExecutionAnsiNullsOn);
                objStruct.Parameters.Add("IsExecutionQuotedIdentOn", objTrigger.IsExecutionQuotedIdentOn);
                objStruct.Parameters.Add("IsAnsiNullsOn", objTrigger.IsAnsiNullsOn);
                objStruct.Parameters.Add("IsQuotedIdentOn", objTrigger.IsQuotedIdentOn);
                objStruct.Parameters.Add("IsExecutionAfterTrigger", objTrigger.IsExecutionAfterTrigger);
                objStruct.Parameters.Add("IsExecutionDeleteTrigger", objTrigger.IsExecutionDeleteTrigger);
                objStruct.Parameters.Add("IsExecutionFirstDeleteTrigger", objTrigger.IsExecutionFirstDeleteTrigger);
                objStruct.Parameters.Add("IsExecutionFirstInsertTrigger", objTrigger.IsExecutionFirstInsertTrigger);
                objStruct.Parameters.Add("IsExecutionFirstUpdateTrigger", objTrigger.IsExecutionFirstUpdateTrigger);
                objStruct.Parameters.Add("IsExecutionInsertTrigger", objTrigger.IsExecutionInsertTrigger);
                objStruct.Parameters.Add("IsExecutionInsteadOfTrigger", objTrigger.IsExecutionInsteadOfTrigger);
                objStruct.Parameters.Add("IsExecutionLastDeleteTrigger", objTrigger.IsExecutionLastDeleteTrigger);
                objStruct.Parameters.Add("IsExecutionLastInsertTrigger", objTrigger.IsExecutionLastInsertTrigger);
                objStruct.Parameters.Add("IsExecutionLastUpdateTrigger", objTrigger.IsExecutionLastUpdateTrigger);
                objStruct.Parameters.Add("IsExecutionTriggerDisabled", objTrigger.IsExecutionTriggerDisabled);
                objStruct.Parameters.Add("IsExecutionUpdateTrigger", objTrigger.IsExecutionUpdateTrigger);
                objStruct.Parameters.Add("DateCreate", objTrigger.DateCreate);
                objStruct.Parameters.Add("DateReference", objTrigger.DateReference);
                objStruct.Parameters.Add("Prototype", objTrigger.Content);
                // Añade la estructura
                objColStructs.Add(objStruct);
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
예제 #22
0
        /// <summary>
        ///		Procesa la generación de documentos
        /// </summary>
        internal void Process(StructDocumentationModelCollection structDocs)
        {
            DocumentFileModelCollection documents = new DocumentFileModelCollection();

            // Carga las plantillas
            Templates = new Repository.Templates.TemplateRepository().Load(Project.TemplatePath);
            // Crea los documentos
            foreach (StructDocumentationModel structDoc in structDocs)
            {
                if (Templates.MustGenerateFile(structDoc, Project.GenerationParameters))
                {
                    DocumentFileModel document = new DocumentFileModel(null, structDoc, 0);

                    // Procesa la estructura del lenguaje
                    Generate(structDoc, document);
                    // Añade el documento a la colección
                    documents.Add(document);
                }
            }
            // Graba los documentos
            ProcessDocuments(documents);
        }
        /// <summary>
        ///		Convierte las tablas
        /// </summary>
        private StructDocumentationModelCollection ConvertTables(StructDocumentationModel parent, SchemaDbModel schema)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Crea la estructura de las tablas
            foreach (TableDbModel table in schema.Tables)
            {
                StructDocumentationModel structDoc = CreateStruct(parent, table, "Table");

                // Añade los parámetros de la tabla
                structDoc.Parameters.Add("Summary", table.Description);
                structDoc.Parameters.Add("DateCreate", Format(table.CreatedAt));
                structDoc.Parameters.Add("DateUpdate", Format(table.UpdatedAt));
                // Añade las columnas, restricciones, triggers...
                structDoc.Childs.AddRange(ConvertColumns(structDoc, table.Fields, table));
                structDoc.Childs.AddRange(ConvertConstrainst(structDoc, table.Constraints));
                structDoc.Childs.AddRange(ConvertTriggers(parent, schema.Triggers, table));
                // Añade la estructura a la colección
                structsDoc.Add(structDoc);
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
예제 #24
0
        /// <summary>
        ///		Comprueba si existe un tipo de estructura hija
        /// </summary>
        private bool CheckIfExistsChild(StructDocumentationModel structDoc, string structType)
        {
            // Obtiene las estructuras
            if (!structType.IsEmpty())
            {
                string[] structTypes = structType.Split(';');

                foreach (string strStruct in structTypes)
                {
                    if (!strStruct.IsEmpty())
                    {
                        StructDocumentationModelCollection structsDoc = SelectItemsForGeneration(structDoc, strStruct.TrimIgnoreNull());

                        if (structsDoc != null && structsDoc.Count > 0)
                        {
                            return(true);
                        }
                    }
                }
            }
            // Si ha llegado hasta aquí es porque no existía ninguna
            return(false);
        }
        /// <summary>
        ///		Convierta las columnas
        /// </summary>
        private StructDocumentationModelCollection ConvertColumns(StructDocumentationModel parent, List <FieldDbModel> fields, TableDbModel table)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Añade la información de las columnas
            foreach (FieldDbModel column in fields)
            {
                StructDocumentationModel structDoc = CreateStruct(parent, column, "Column");

                // Añade los parámetros de la columna
                structDoc.Parameters.Add("Summary", column.Description);
                structDoc.Parameters.Add("Default", column.Default);
                structDoc.Parameters.Add("IsNullable", !column.IsRequired);
                structDoc.Parameters.Add("DataType", column.DbType);
                structDoc.Parameters.Add("CharacterMaximumLength", column.Length);
                structDoc.Parameters.Add("NumericPrecision", column.NumericPrecision);
                structDoc.Parameters.Add("NumericPrecisionRadix", column.NumericPrecisionRadix);
                structDoc.Parameters.Add("NumericScale", column.NumericScale);
                structDoc.Parameters.Add("DateTimePrecision", column.DateTimePrecision);
                structDoc.Parameters.Add("CharacterSetName", column.CharacterSetName);
                structDoc.Parameters.Add("CollationCatalog", column.CollationCatalog);
                structDoc.Parameters.Add("CollationSchema", column.CollationSchema);
                structDoc.Parameters.Add("CollationName", column.CollationName);
                structDoc.Parameters.Add("IsIdentity", column.IsIdentity);
                // Obtiene el valor que indica si es una tabla foránea
                if (table != null)
                {
                    structDoc.Parameters.Add("IsForeignKey", CheckIsForeignKey(table, column));
                }
                // Obtiene el tipo
                structDoc.Parameters.Add("Type", column.DbType);
                // Añade la estructura a la colección
                structsDoc.Add(structDoc);
            }
            // Devuelve la colección
            return(structsDoc);
        }
예제 #26
0
        /// <summary>
        ///		Convierte las tablas
        /// </summary>
        private StructDocumentationModelCollection ConvertTables(StructDocumentationModel objParent, Schema objSchema)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Crea la estructura de las tablas
            foreach (SchemaTable objTable in objSchema.Tables)
            {
                StructDocumentationModel objStruct = CreateStruct(objParent, objTable, "Table");

                // Añade los parámetros de la tabla
                objStruct.Parameters.Add("Summary", objTable.Description);
                objStruct.Parameters.Add("Type", objTable.Type.ToString());
                objStruct.Parameters.Add("DateCreate", Format(objTable.DateCreate));
                objStruct.Parameters.Add("DateUpdate", Format(objTable.DateUpdate));
                // Añade las columnas, restricciones, triggers...
                objStruct.Childs.AddRange(ConvertColumns(objStruct, objTable.Columns, objTable));
                objStruct.Childs.AddRange(ConvertConstrainst(objStruct, objTable.Constraints));
                objStruct.Childs.AddRange(ConvertTriggers(objParent, objSchema.Triggers.SearchByTable(objTable.Name)));
                // Añade la estructura a la colección
                objColStructs.Add(objStruct);
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
        /// <summary>
        ///		Convierte las vistas
        /// </summary>
        private StructDocumentationModelCollection ConvertViews(StructDocumentationModel parent, SchemaDbModel schema)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Crea la estructura de las vistas
            foreach (ViewDbModel view in schema.Views)
            {
                StructDocumentationModel structDoc = CreateStruct(parent, view, "View");

                // Añade los parámetros de la tabla
                structDoc.Parameters.Add("Prototype", view.Definition);
                structDoc.Parameters.Add("CheckOption", view.CheckOption);
                structDoc.Parameters.Add("IsUpdatable", view.IsUpdatable);
                structDoc.Parameters.Add("Summary", view.Description);
                structDoc.Parameters.Add("DateCreate", Format(view.CreatedAt));
                structDoc.Parameters.Add("DateUpdate", Format(view.UpdatedAt));
                // Añade las columnas
                structDoc.Childs.AddRange(ConvertColumns(structDoc, view.Fields, null));
                // Añade la estructura a la colección
                structsDoc.Add(structDoc);
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
 /// <summary>
 ///		Convierte las referencias de las estructuras
 /// </summary>
 private void ConvertReferences(Dictionary <string, StructDocumentationModel> dctStruct, StructDocumentationModelCollection structsDoc)
 {
     foreach (StructDocumentationModel structDoc in structsDoc)
     {
         // Convierte las referencias de los parámetros
         ConvertReferences(dctStruct, structDoc.Parameters);
         // convierte las referencias de las estructuras hija
         ConvertReferences(dctStruct, structDoc.Childs);
     }
 }
 /// <summary>
 ///		Rellena un diccionario con las estructuras de clase, interface...
 /// </summary>
 private void FillDictionary(Dictionary <string, StructDocumentationModel> dctStruct, StructDocumentationModelCollection structsDoc)
 {
     foreach (StructDocumentationModel structDoc in structsDoc)
     {
         // Añade la estructura al diccionario si es necesario
         if (MustAdd(structDoc) && !dctStruct.ContainsKey(NormalizeKey(structDoc.Name)))
         {
             dctStruct.Add(NormalizeKey(structDoc.Name), structDoc);
         }
         // Añade los elementos hijo
         FillDictionary(dctStruct, structDoc.Childs);
     }
 }