Ejemplo n.º 1
0
        public async Task AddFiles(IEnumerable <string> filePaths)
        {
            _log?.Write(LogEventCategory.Informational, $"Adding {filePaths.Count()} files to FITS database...");
            OnAddStatusUpdated?.Invoke(FileDbAddStatus.ReadingHeaders, null, 0, filePaths.Count());
            var fitsFiles = await ReadFitsFiles(filePaths);

            await InsertOrUpdateFitsFiles(fitsFiles.Where(ff => ff != null));
        }
Ejemplo n.º 2
0
        private async Task InsertOrUpdateFitsFiles(IEnumerable <IFitsFileInfo> fitsFiles)
        {
            int handled = 0;

            foreach (var ff in fitsFiles)
            {
                try
                {
                    var dataChange = await PerformFitsTableChangesTransaction(ff);

                    if (dataChange == DataChange.Created)
                    {
                        _log?.Write(LogEventCategory.Informational,
                                    $"Read and indexed {ff.HeaderKeys.Count} keywords from " +
                                    $"a new FITS file {Path.GetFileName(ff.FilePath)}");
                    }
                    else if (dataChange == DataChange.Updated)
                    {
                        _log?.Write(LogEventCategory.Informational,
                                    $"Read and indexed {ff.HeaderKeys.Count} keywords from " +
                                    $"a changed FITS file {Path.GetFileName(ff.FilePath)}");
                    }
                    else
                    {
                        _log?.Write(LogEventCategory.Informational,
                                    $"Read {Path.GetFileName(ff.FilePath)}, file was already indexed and unchanged");
                    }
                }
                catch (Exception e)
                {
                    var err = "Reading of file / extraction of FITS header keywords failed";
                    _log?.Write(LogEventCategory.Error, err, e);
                }

                handled++;
                EventUtils.IgnoreExceptions(() => OnAddStatusUpdated?.Invoke(FileDbAddStatus.InsertingAndUpdating, ff.FilePath, handled, fitsFiles.Count()));
            }

            EventUtils.IgnoreExceptions(() => OnAddStatusUpdated?.Invoke(FileDbAddStatus.TransactionCompleted, null, handled, fitsFiles.Count()));
        }