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 );
}
}