Feedback

Klasse für SimpleFileVerification (SFV)

Imports System.IO

''' <summary>
''' Diese Klasse verarbeitet SFV Dateien.
''' Dabei wird eine SFV Datei geöffnet und es werden von allen aufgelisteten Dateien
''' CRC32 Summen erstellt und diese werden dann mit den Summen aus der SFV Datei vergleichen.
''' Bei Fehlenden, Kaputten und Sauberen Dateien wird jeweils das dazugehörige Event aufgerufen.
''' SFV Dateien müssen das Standardformat besitzen: "Dateiname.dat ABCD1234" wobei der CRC32 Hash
''' in der SFV Datei immer 8 Zeichen lang sein muss. In einigen Fällen hat ein CRC32 Hash nur 7 Zeichen,
''' dann sollte am Anfang des Hashes eine 0 angehängt werden also "0ABC1234" statt "ABC1234".
''' </summary>
''' <remarks>Geschrieben von Tim Hartwig (Januar 08)</remarks>
Public Class SimpleFileVerification
    Private mSFVFile As String

    ''' <summary>
    ''' Tritt ein wenn eine Datei in der SFV Liste aufgeführt ist, aber nicht vorhanden ist.
    ''' </summary>
    Public Event FileIsMissing(ByVal sender As Object, ByVal e As SFVEventArgs)

    ''' <summary>
    ''' Tritt ein wenn die Datei nicht die vorgegebene Prüfsumme aus der SFV Datei hat.
    ''' </summary>
    Public Event FileIsCorrupted(ByVal sender As Object, ByVal e As SFVEventArgs)

    ''' <summary>
    ''' Tritt immer ein wenn eine Datei in Ordnung ist.
    ''' </summary>
    Public Event FileIsClean(ByVal sender As Object, ByVal e As SFVEventArgs)

    ''' <summary>
    ''' Tritt ein wenn die überprüfung der aktuellen SFV Datei fertiggestellt ist.
    ''' </summary>
    Public Event Finished(ByVal sender As Object)

    ''' <summary>
    ''' Die SFV Datei in der die Prüfdaten drin stehen.
    ''' </summary>
    Public Property SFVFile() As String
        Get
            Return mSFVFile
        End Get
        Set(ByVal value As String)
            mSFVFile = value
        End Set
    End Property

    Sub New()
        CreateCRC32Table()
    End Sub

    Sub New(ByVal nSFVFile As String)
        mSFVFile = nSFVFile
        CreateCRC32Table()
    End Sub

    ''' <summary>
    ''' Beginnt die prüfung der SFV Datei.
    ''' </summary>
    Public Sub Start()
        Dim Data() As String = File.ReadAllLines(mSFVFile)
        Dim CurrExpectedHash As String = ""
        Dim CurrCalculatedHash As String = ""
        Dim CurrFileNameToCheck As String = ""
        Dim SFVFilePath As String = Path.GetDirectoryName(mSFVFile) & ""