Exemplo n.º 1
0
        public void PopulateDependencies(FzServiceDirectory serviceDirectory, FzFileCache fileCache)
        {
            // For each route-builder...
            //  1.Find referenced sub-components
            //  2.Add referenced sub-components to the starting component
            //  3.Recurseivly for each sub-component, start again from #1

            var flatFileCache = GetFlatFileCache(fileCache);
            var cursorLeft    = Console.CursorLeft;
            var cursorTop     = Console.CursorTop;
            var currentJob    = 1;
            var totalJobs     = serviceDirectory.Services.Count;

            _deadline = DateTime.Now.AddMinutes(2);

            foreach (var service in serviceDirectory.Services)
            {
                // TODO: REMOVE THIS FOR FINAL VERSION
                if (!service.File.FileName.Contains("PrepareForIdCards"))
                {
                    continue;
                }

                Console.SetCursorPosition(cursorLeft, cursorTop);
                Console.WriteLine($"Working on {currentJob} of {totalJobs} ({service.Name})...");
                currentJob++;

                FindSubComponentsOfComponent(service, flatFileCache);
            }
        }
Exemplo n.º 2
0
        public FzServiceDirectory GetAllServices(FzFileCache fileCache)
        {
            var serviceDirectory = new FzServiceDirectory();

            PopulateRouteBuilders(serviceDirectory, fileCache.BaseDirectory);

            return(serviceDirectory);
        }
Exemplo n.º 3
0
        public void WriteSummary(FzServiceDirectory serviceDirectory)
        {
            var outputText = new StringBuilder();

            foreach (var service in serviceDirectory.Services)
            {
                AppendGivenComponent(service, outputText);
                outputText.Append("\r\n\r\n");
            }

            // Write output to file
            if (File.Exists(_summaryOutputPath))
            {
                File.Delete(_summaryOutputPath);
            }

            File.WriteAllText(_summaryOutputPath, outputText.ToString());
        }
Exemplo n.º 4
0
        public static void FindAllComponents(FzServiceDirectory serviceDirectory, FzFileCache fileCache)
        {
            var taskList             = new List <Task>();
            var serviceComponentList = new List <FzServiceComponent>();

            // Setup each service component
            foreach (var serviceComponent in serviceDirectory.Services)
            {
                var newServiceComponent = new FzServiceComponent
                {
                    File        = serviceComponent.File,
                    Name        = serviceComponent.Name,
                    OutboundUrl = serviceComponent.OutboundUrl,
                    PreviousReferencedComponent = serviceComponent.PreviousReferencedComponent,
                    SubComponents = new List <FzServiceComponent>()
                };

                serviceComponentList.Add(newServiceComponent);
            }

            // Find each service component as a task
            foreach (var serviceComponent in serviceComponentList)
            {
                taskList.Add(Task.Run(() => FindSubComponentsOfComponent(serviceComponent, fileCache)));
            }

            // Await for each service to finish
            foreach (var runningTask in taskList)
            {
                runningTask.GetAwaiter().GetResult();
            }

            // Populate all finished service components back into the service directory
            foreach (var serviceDirectoryServiceComponent in serviceDirectory.Services)
            {
                foreach (var serviceComponent in serviceComponentList)
                {
                    if (serviceDirectoryServiceComponent.Name.Equals(serviceComponent.Name))
                    {
                        serviceDirectoryServiceComponent.SubComponents.AddRange(serviceComponent.SubComponents);
                    }
                }
            }
        }
Exemplo n.º 5
0
        private void PopulateRouteBuilders(FzServiceDirectory serviceDirectory, FzDirectory directory)
        {
            foreach (var file in directory.Files)
            {
                if (file.FileType == FzFileType.RouteBuilder)
                {
                    var newService = new FzService();
                    newService.File = file;
                    newService.Name = file.FileName;
                    newService.RouteBuilderFileContent = file.Content;
                    newService.RouteBuilderFilePath    = file.FullPath;
                    serviceDirectory.Services.Add(newService);
                }
            }

            foreach (var subDirectory in directory.SubDirectories)
            {
                PopulateRouteBuilders(serviceDirectory, subDirectory);
            }
        }