RFID.RFIDInterface.LakeChabotReader.SaveDataToFile C# (CSharp) Method

SaveDataToFile() public method

public SaveDataToFile ( Object context, BackgroundWorker worker, int refreshMS, string Filename ) : ReportBase
context Object
worker BackgroundWorker
refreshMS int
Filename string
return ReportBase
        public ReportBase SaveDataToFile( Object context, BackgroundWorker worker, int refreshMS, string Filename )
        {
            if ( IsDisposed )
                throw new ObjectDisposedException( "LakeChabotReader" );

            if ( TableResult != TableState.Ready )
                //return new rfidOperationReport(context, OperationOutcome.FailByContext, new rfidException(rfidErrorCode.TablesAreNotReady, "You must build the post-capture views before saving."));
                return new rfidSimpleReport( context, OperationOutcome.FailByContext, new rfidException( rfidErrorCode.TablesAreNotReady, "You must build the post-capture views before saving." ) );

            try
            {
                rfidSimpleReport report = new rfidSimpleReport( context, HighResolutionTimer.Milliseconds );

                string tempDirectory = Directory.CreateDirectory( Path.Combine( Path.GetTempPath( ), Path.GetFileNameWithoutExtension( Path.GetRandomFileName( ) ) ) ).FullName;

                string[ ] fileNameArray =
                {
                    Path.Combine(tempDirectory, "PropertyBagData.df"),
                    Path.Combine(tempDirectory,	"AntennaCycleData.df"),
                    Path.Combine(tempDirectory, "InventoryRoundData.df"),
                    Path.Combine(tempDirectory,	"PacketStreamData.df"),
                    Path.Combine(tempDirectory, "ReaderCommandData.df"),
                    Path.Combine(tempDirectory,	"ReaderCycleData.df"),
                    Path.Combine(tempDirectory, "ReaderRequestData.df"),
                    Path.Combine(tempDirectory,	"TagInventoryData.df"),
                    Path.Combine(tempDirectory,	"TagReadData.df"),
                    Path.Combine(tempDirectory, "ReadRateData.df"),
                    Path.Combine(tempDirectory,	"BadPacketData.df"),
                    Path.Combine(tempDirectory, "InventoryCycleData.df"),
                };

                PropertyBagData.CommitPageAndCopyFile( fileNameArray[ 0 ] );

                AntennaCycleData.CommitPageAndCopyFile( fileNameArray[ 1 ] );
                worker.ReportProgress( 10, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );

                InventoryRoundData.CommitPageAndCopyFile( fileNameArray[ 2 ] );
                worker.ReportProgress( 15, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                PacketStreamData.CommitPageAndCopyFile( fileNameArray[ 3 ] );
                worker.ReportProgress( 20, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                ReaderCommandData.CommitPageAndCopyFile( fileNameArray[ 4 ] );
                worker.ReportProgress( 20, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                ReaderAntennaCycleData.CommitPageAndCopyFile( fileNameArray[ 5 ] );
                worker.ReportProgress( 30, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );

                ReaderRequestData.CommitPageAndCopyFile( fileNameArray[ 6 ] );
                worker.ReportProgress( 30, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                TagInventoryData.CommitPageAndCopyFile( fileNameArray[ 7 ] );
                worker.ReportProgress( 40, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                TagReadData.CommitPageAndCopyFile( fileNameArray[ 8 ] );
                worker.ReportProgress( 40, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                ReadRateData.CommitPageAndCopyFile( fileNameArray[ 9 ] );
                worker.ReportProgress( 40, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                BadPacketData.CommitPageAndCopyFile( fileNameArray[ 10 ] );
                worker.ReportProgress( 50, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );

                InventoryCycleData.CommitPageAndCopyFile( fileNameArray[ 11 ] );
                worker.ReportProgress( 60, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );
                Thread.Sleep( 20 );

                String zipFileName = Path.GetTempFileName( );
                File.Delete( zipFileName );
                zipFileName = Path.ChangeExtension( zipFileName, ".rfi" );

                FileCompressor.Compress( zipFileName, true, fileNameArray );

                worker.ReportProgress( 80, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );

                File.Copy( zipFileName, Filename, true );

                worker.ReportProgress( 90, report.GetProgressReport( HighResolutionTimer.Milliseconds ) );

                File.Delete( zipFileName );
                Directory.Delete( tempDirectory );

                report.OperationCompleted( OperationOutcome.Success,
                                           String.Format( "Successfuly opened {0}", Filename ),
                                           HighResolutionTimer.Milliseconds );
                return report;
            }
            catch ( Exception e )
            {
                return new rfidSimpleReport( context, OperationOutcome.FailByApplicationError, e );
            }
        }