Ejemplo n.º 1
0
        public override DataTable GetChunk(IDataLoadEventListener listener, GracefulCancellationToken cancellationToken)
        {
            _listener = listener;

            if (_fileWorklist == null)
            {
                listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Warning, "Skipping component because _fileWorklist is null"));
                return(null);
            }

            _stopwatch.Start();

            var dt = base.GetDataTable();

            try
            {
                FileInfo      file;
                DirectoryInfo directory;

                if (!_fileWorklist.GetNextFileOrDirectoryToProcess(out directory, out file))
                {
                    return(null);
                }

                if (file != null && directory == null)
                {
                    dt.TableName = QuerySyntaxHelper.MakeHeaderNameSane(Path.GetFileNameWithoutExtension(file.Name));
                }
                else if (directory != null)
                {
                    dt.TableName = QuerySyntaxHelper.MakeHeaderNameSane(Path.GetFileNameWithoutExtension(directory.Name));
                }
                else
                {
                    throw new Exception("Expected IDicomProcessListProvider to return either a DirectoryInfo or a FileInfo not both/neither");
                }

                if (directory != null)
                {
                    ProcessDirectoryAsync(dt, directory, listener);
                    Task.WaitAll(tasks.ToArray());
                }
                else
                //Input is a single zip file
                if (file.Extension == ".zip")
                {
                    ProcessZipArchive(dt, listener, file.FullName);
                }
                else if (file.Extension == ".dcm")
                {
                    using (var fs = file.Open(FileMode.Open))
                        ProcessFile(fs, dt, file.Name, listener);
                }
                else
                {
                    throw new Exception("Expected file to be either .zip or .dcm ");
                }
            }
            finally
            {
                //stop recording performance
                _stopwatch.Stop();

                //let people know how far through we are
                UpdateProgressListeners();
            }

            return(dt);
        }
Ejemplo n.º 2
0
        public override DataTable GetChunk(IDataLoadEventListener listener, GracefulCancellationToken cancellationToken)
        {
            _listener = listener;

            if (_fileWorklist == null)
            {
                listener.OnNotify(this, new NotifyEventArgs(ProgressEventType.Warning, "Skipping component because _fileWorklist is null"));
                return(null);
            }

            _stopwatch.Start();

            var dt = base.GetDataTable();

            try
            {
                AmbiguousFilePath file;
                DirectoryInfo     directory;

                if (!_fileWorklist.GetNextFileOrDirectoryToProcess(out directory, out file))
                {
                    return(null);
                }

                // Exactly one of file/directory must be null:
                if ((file != null) == (directory != null))
                {
                    throw new Exception("Expected IDicomProcessListProvider to return either a DirectoryInfo or a FileInfo not both/neither");
                }

                if (file != null)
                {
                    dt.TableName = QuerySyntaxHelper.MakeHeaderNameSensible(Path.GetFileNameWithoutExtension(file.FullPath));
                    if (file.FullPath.EndsWith(".zip"))
                    {
                        //Input is a single zip file
                        ProcessZipArchive(dt, listener, file.FullPath);
                    }
                    else
                    {
                        var df = file.GetDataset(_zipPool);
                        ProcessDataset(file.FullPath, df.Dataset, dt, listener);
                    }
                }

                if (directory != null)
                {
                    // Processing a directory
                    dt.TableName = QuerySyntaxHelper.MakeHeaderNameSensible(Path.GetFileNameWithoutExtension(directory.Name));
                    ProcessDirectoryAsync(dt, directory, listener);
                    Task.WaitAll(tasks.ToArray());
                }
            }
            finally
            {
                //stop recording performance
                _stopwatch.Stop();

                //let people know how far through we are
                UpdateProgressListeners();
            }

            return(dt);
        }