Index: TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb =================================================================== diff -u -r1621 -r1622 --- TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb (.../LogBestandTextMapper.vb) (revision 1621) +++ TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb (.../LogBestandTextMapper.vb) (revision 1622) @@ -2,16 +2,9 @@ Imports System.Text.RegularExpressions Module LogBestandTextMapper - Const AantalLogs As Integer = 5 + Const MaximumAantalLogs As Integer = 5 Dim _busy As Boolean - Private _vorigeLogPad = String.Empty - Public ReadOnly Property VorigeLogPad() As String - Get - Return _vorigeLogPad - End Get - End Property - Private _huidigeLogPad = String.Empty Public ReadOnly Property HuidigeLogPad() As String Get @@ -65,12 +58,20 @@ End Try End Sub + 'Vorige pad maar eenmalig bepalen en dan bijhouden. + Private _vorigeLogPad = String.Empty + ''' ''' Naam van de vorige log. ''' Als het nieuwe log bestand nog niet is aangemaakt is dit het meest recente. Indien dit wel het geval is, wordt het tweede meest recente log bestand gekozen. ''' - ''' + ''' Pad Public Function GeefPadVorigeLog() As String + 'Als het vorige log pad al is bepaald retourneren we dit. + if Not String.IsNullOrEmpty(_vorigeLogPad) Then + Return _vorigeLogPad + End If + Try 'Nummers en paden opvragen. Dim nummersEnPadenDict = GeefLogNummersEnPaden() @@ -94,45 +95,58 @@ Dim nummerLog As Integer 'Kijken of het nieuwe log bestand al is aangemaakt. - If String.IsNullOrEmpty(_huidigeLogPad) Then + If Not String.IsNullOrEmpty(_huidigeLogPad) Then 'Zo ja, retourneer het voorlaatste pad. - nummerLog = nummers.Item(nummers.Count - 1) + nummerLog = nummers.Item(nummers.Count - 2) Else 'Zo neen, retourneer laatste pad. - nummerLog = nummers.Item(nummers.Count) + nummerLog = nummers.Item(nummers.Count -1) End If - 'Pad opvragen uit dictionary en retourneren. - Return nummersEnPadenDict.Item(nummerLog) + 'Pad opvragen uit dictionary en toewijzen aan variabele. + _vorigeLogPad = nummersEnPadenDict.Item(nummerLog) + 'Retourneren. + Return _vorigeLogPad Catch ex As Exception Throw New Exception($"Kon pad naar vorige log niet opvragen.{vbNewLine}{ex.Message}") End Try End Function Private Function MaakNieuweLogFile() As String - Dim logFolderPath As String = GetPathLogFolder() + Try + 'Opvragen map met logs. + Dim logFolderPath As String = GetPathLogFolder() - Dim vorigeLogFileAanwezig As Boolean - Dim volledigPadVorigeLogFile As String - For teller As Integer = 1 To AantalLogs - volledigPadVorigeLogFile = Path.Combine(logFolderPath, "log" & teller & teller & ".txt") - If System.IO.File.Exists(volledigPadVorigeLogFile) Then - vorigeLogFileAanwezig = True - 'als er al een log bestaat, hernoemen en een nieuwe aanmaken - My.Computer.FileSystem.RenameFile(volledigPadVorigeLogFile, "log" & teller & ".txt") - Dim logIndex As Integer = ((teller Mod 5) + 1) - Dim padNieuweLogFile As String = Path.Combine(logFolderPath, "log" & logIndex & ".txt") - 'kijken of de volgende log al bestaat, indien wel, verwijderen en nieuwe aanmaken - If System.IO.File.Exists(padNieuweLogFile) Then - My.Computer.FileSystem.DeleteFile(padNieuweLogFile) - End If - Return Path.Combine(logFolderPath, "log" & logIndex & logIndex & ".txt") + 'Nummers en paden opvragen. + Dim nummersEnPadenDict = GeefLogNummersEnPaden() + + 'Controleren of er nog geen logs aanwezig zijn, anders pad naar initiƫle log retourneren. + If nummersEnPadenDict.Count = 0 Then + Return Path.Combine(logFolderPath, "1.txt") End If - Next - If Not vorigeLogFileAanwezig Then - Return Path.Combine(logFolderPath, "log" & 1 & 1 & ".txt") - End If - Throw New Exception("Er is iets fout gelopen bij het opvragen van het Path voor de log bestanden") + + 'Nummers uit dictionary halen. + Dim nummers = nummersEnPadenDict.Keys.ToList() + + 'Log nummers sorteren oud -> nieuw. + nummers.Sort() + + 'Controleren of het aantal logs het maximum heeft overschreden. + If nummers.Count >= MaximumAantalLogs Then + 'Aan de hand van het nummer van de oudste log, het pad opvragen. + Dim pad = nummersEnPadenDict.Item(nummers.Item(0)) + 'De log verwijderen aan de hand van het pad. + My.Computer.FileSystem.DeleteFile(pad) + End If + + 'Nummer van de laatste log opvragen, verhogen en bijhouden. + Dim nieuweLogNummer = nummers.Item(nummers.Count -1) + 1 + + 'Nieuw log pad opbouwen en retourneren. + Return Path.Combine(logFolderPath, $"{nieuweLogNummer}.txt") + Catch ex As Exception + Throw New Exception($"Er is iets fout gelopen bij het maken van het nieuwe log bestand.{vbNewLine}{ex.Message}") + End Try End Function Private Function GeefLogNummersEnPaden() As Dictionary(Of Integer, String)