private void GenerateCatalogInformationAndSpWrappers(StoredProcedureWrapperClass spWrapper, int percentageDoneBeforeSpWrappers)
        {
            DateTime startCatalogAndSP = DateTime.Now;
            string catalogFile = CreateSpAndCatalogOutputFilePath();
            using (StreamWriter sw = new StreamWriter(catalogFile, /*overwrite existing file*/ false, Encoding.UTF8))
            {
                this.spAndCatalogTemplate.Run(sw, spWrapper);
            }

            string msgStatistics = string.Format(Messages.DbProjectGenerator_GeneratedCatalogAndSpClassTimeUsedX, GenUtil.GetDuration(startCatalogAndSP));
            FireItemGenerated(msgStatistics, 100 - OtherCost);
        }
        private void GenerateAllCode()
        {
            this.stopGenerator = false;
            FireItemGenerated(Messages.DbProjectGenerator_CodeGenerationStarted, 0);
            DateTime start = DateTime.Now;
            CreateOutputFolders();

            OpenConnectionToMetaDataSource();
            Table[] tables = RetrieveTableMetaData();
            if (tables == null)
                return;
            StoredProcedure[] procedures = RetrieveSpMetaData();
            if (procedures == null)
                return;
            CloseConnectionToMetaDataSource();

            OptimizeMetaByIndexing(tables);

            bool multiFileTemplatesOk = GenerateCodeForSelectedTables(tables);
            if (!multiFileTemplatesOk)
                return;

            bool singeFileTemplatesOk = GenerateSingleFileTemplateForTables(tables);
            if (!singeFileTemplatesOk)
                return;

            StoredProcedureWrapperClass spWrapper = new StoredProcedureWrapperClass() { TypeTemplate = this.typeTemplate, Procedures = procedures };
            GenerateCatalogInformationAndSpWrappers(spWrapper, MetaCost + EntityClassesCost);

            GenerateAppConfigFile(tables);
            string msgTotalStats = string.Format(Messages.DbProjectGenerator_CompletedTimeUsedX, GenUtil.GetDuration(start));
            FireItemGenerated(msgTotalStats, 100);
        }