From 4fc1e642bd3a7065d1fcb745981636d47784231d Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 11 Oct 2018 16:43:26 +0200 Subject: [PATCH] jj: Add initial version of DigitalData.Modules.Filesystem --- Filesystem/File.vb | 88 +++++++++++++ Filesystem/Filesystem.vbproj | 119 ++++++++++++++++++ Filesystem/My Project/Application.Designer.vb | 13 ++ Filesystem/My Project/Application.myapp | 10 ++ Filesystem/My Project/AssemblyInfo.vb | 35 ++++++ Filesystem/My Project/Resources.Designer.vb | 63 ++++++++++ Filesystem/My Project/Resources.resx | 117 +++++++++++++++++ Filesystem/My Project/Settings.Designer.vb | 73 +++++++++++ Filesystem/My Project/Settings.settings | 7 ++ Filesystem/packages.config | 4 + 10 files changed, 529 insertions(+) create mode 100644 Filesystem/File.vb create mode 100644 Filesystem/Filesystem.vbproj create mode 100644 Filesystem/My Project/Application.Designer.vb create mode 100644 Filesystem/My Project/Application.myapp create mode 100644 Filesystem/My Project/AssemblyInfo.vb create mode 100644 Filesystem/My Project/Resources.Designer.vb create mode 100644 Filesystem/My Project/Resources.resx create mode 100644 Filesystem/My Project/Settings.Designer.vb create mode 100644 Filesystem/My Project/Settings.settings create mode 100644 Filesystem/packages.config diff --git a/Filesystem/File.vb b/Filesystem/File.vb new file mode 100644 index 00000000..45f25143 --- /dev/null +++ b/Filesystem/File.vb @@ -0,0 +1,88 @@ +Imports System.IO +Imports DigitalData.Modules.Logging + +''' File +''' 0.0.0.1 +''' 11.10.2018 +''' +''' Module that provides variouse File operations +''' +''' +''' NLog, >= 4.5.8 +''' +''' +''' LogConfig, DigitalData.Module.Logging.LogConfig +''' A LogConfig object +''' +''' +''' +''' +''' +''' +''' +Public Class File + Private ReadOnly _logger As Logger + Private ReadOnly _logConfig As LogConfig + + Public Sub New(LogConfig As LogConfig) + _logConfig = LogConfig + _logger = LogConfig.GetLogger() + End Sub + + ''' + ''' Removes files in a directory filtered by filename, extension and last write date + ''' + ''' The directory in which files will be deleted + ''' Only delete files which are older than x days. Must be between 0 and 1000 days. + ''' A filename filter which will be checked + ''' A file extension which will be checked + ''' Should the function continue with deleting when a file could not be deleted? + ''' True if all files were deleted or if no files were deleted, otherwise false + Public Function RemoveFiles(Path As String, FileKeepTime As Integer, FileBaseName As String, Optional FileExtension As String = "log", Optional ContinueOnError As Boolean = True) As Boolean + If Not Directory.Exists(Path) Then + _logger.Warn("Directory {0} does not exist") + Return False + End If + + If FileKeepTime < 0 Or FileKeepTime > 1000 Then + Throw New ArgumentOutOfRangeException("FileKeepTime must be an integer between 0 and 1000") + End If + + Dim oUnableToDeleteCounter = 0 + Dim oDirectory As New DirectoryInfo(Path) + Dim oDateLimit As DateTime = DateTime.Now.AddDays(FileKeepTime) + Dim oFiles As List(Of FileInfo) = oDirectory. + EnumerateFiles($"*{FileBaseName}*"). + Where(Function(oFileInfo As FileInfo) + Return oFileInfo.Extension = FileExtension And oFileInfo.LastWriteTime < oDateLimit + End Function) + + If oFiles.Count = 0 Then + _logger.Debug("No files found that match the criterias.") + Return True + End If + + _logger.Debug("Deleting old files (Found {0}).", oFiles.Count) + + For Each oFile As FileInfo In oFiles + Try + oFile.Delete() + Catch ex As Exception + If ContinueOnError = False Then + _logger.Warn("Deleting files was aborted at file {0}.", oFile.FullName) + Return False + End If + oUnableToDeleteCounter = oUnableToDeleteCounter + 1 + _logger.Warn("File {0} could not be deleted!") + End Try + Next + + If oUnableToDeleteCounter > 0 Then + _logger.Debug("Old files partially removed. {0} files could not be removed.", oUnableToDeleteCounter) + Else + _logger.Debug("Old files removed.") + End If + + Return True + End Function +End Class diff --git a/Filesystem/Filesystem.vbproj b/Filesystem/Filesystem.vbproj new file mode 100644 index 00000000..48eaf125 --- /dev/null +++ b/Filesystem/Filesystem.vbproj @@ -0,0 +1,119 @@ + + + + + Debug + AnyCPU + {991D0231-4623-496D-8BD0-9CA906029CBC} + Library + DigitalData.Modules.Filesystem + DigitalData.Modules.Filesystem + 512 + Windows + v4.6.1 + + + true + full + true + true + bin\Debug\ + DigitalData.Modules.Filesystem.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + pdbonly + false + true + true + bin\Release\ + DigitalData.Modules.Filesystem.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + ..\packages\NLog.4.5.10\lib\net45\NLog.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + {903b2d7d-3b80-4be9-8713-7447b704e1b0} + Logging + + + + \ No newline at end of file diff --git a/Filesystem/My Project/Application.Designer.vb b/Filesystem/My Project/Application.Designer.vb new file mode 100644 index 00000000..8ab460ba --- /dev/null +++ b/Filesystem/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/Filesystem/My Project/Application.myapp b/Filesystem/My Project/Application.myapp new file mode 100644 index 00000000..758895de --- /dev/null +++ b/Filesystem/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/Filesystem/My Project/AssemblyInfo.vb b/Filesystem/My Project/AssemblyInfo.vb new file mode 100644 index 00000000..d3b46582 --- /dev/null +++ b/Filesystem/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' übernehmen, indem Sie "*" eingeben: +' + + + diff --git a/Filesystem/My Project/Resources.Designer.vb b/Filesystem/My Project/Resources.Designer.vb new file mode 100644 index 00000000..97935ddf --- /dev/null +++ b/Filesystem/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + ''' + ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Modules.Filesystem.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/Filesystem/My Project/Resources.resx b/Filesystem/My Project/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Filesystem/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Filesystem/My Project/Settings.Designer.vb b/Filesystem/My Project/Settings.Designer.vb new file mode 100644 index 00000000..150844cf --- /dev/null +++ b/Filesystem/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Automatische My.Settings-Speicherfunktion" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.DigitalData.Modules.Filesystem.My.MySettings + Get + Return Global.DigitalData.Modules.Filesystem.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/Filesystem/My Project/Settings.settings b/Filesystem/My Project/Settings.settings new file mode 100644 index 00000000..85b890b3 --- /dev/null +++ b/Filesystem/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Filesystem/packages.config b/Filesystem/packages.config new file mode 100644 index 00000000..9764f16f --- /dev/null +++ b/Filesystem/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file