diff --git a/Modules.Base/Base/Base.vbproj b/Modules.Base/Base/Base.vbproj index 891fb7be..3272f3ad 100644 --- a/Modules.Base/Base/Base.vbproj +++ b/Modules.Base/Base/Base.vbproj @@ -65,7 +65,8 @@ - + + True diff --git a/Modules.Base/Base/Database/Enums.vb b/Modules.Base/Base/Database/Enums.vb new file mode 100644 index 00000000..3e0cbe6b --- /dev/null +++ b/Modules.Base/Base/Database/Enums.vb @@ -0,0 +1,8 @@ +Namespace Database + Module Enums + Public Enum NamedDatabase + ECM + IDB + End Enum + End Module +End Namespace diff --git a/Modules.Base/Base/IDB/Database.vb b/Modules.Base/Base/IDB/Database.vb new file mode 100644 index 00000000..f86b7186 --- /dev/null +++ b/Modules.Base/Base/IDB/Database.vb @@ -0,0 +1,15 @@ + +Namespace IDB + ''' + ''' This module is intended for often used constants and datastructures + ''' Therefor it is important that this module does not have any dependencies on other modules!! + ''' + Module Constants + Public Const OBJECT_STATE_FILE_ADDED = "File added" + Public Const OBJECT_STATE_FILE_VERSIONED = "File versioned" + Public Const OBJECT_STATE_FILE_CHANGED = "File changed" + Public Const OBJECT_STATE_FILE_DELETED = "File deleted" + Public Const OBJECT_STATE_METADATA_CHANGED = "Metadata changed" + Public Const OBJECT_STATE_ATTRIBUTEVALUE_DELETED = "Attributevalue deleted" + End Module +End Namespace diff --git a/Modules.Base/Base/NamedDatabase.vb b/Modules.Base/Base/NamedDatabase.vb deleted file mode 100644 index 011c88c7..00000000 --- a/Modules.Base/Base/NamedDatabase.vb +++ /dev/null @@ -1,10 +0,0 @@ -''' -''' This module is intended for often used constants and datastructures -''' Therefor it is important that this module does not have any dependencies on other modules!! -''' -Namespace Constants - Public Enum NamedDatabase - ECM - IDB - End Enum -End Namespace diff --git a/Modules.Database/Adapters/MSSQLServer.vb b/Modules.Database/Adapters/MSSQLServer.vb index 4beb217c..e8bd14d5 100644 --- a/Modules.Database/Adapters/MSSQLServer.vb +++ b/Modules.Database/Adapters/MSSQLServer.vb @@ -278,7 +278,7 @@ Public Class MSSQLServer End Try End Function - + ' Public Function GetDatatable(SqlCommand As String) As DataTable Implements IDatabase.GetDatatable Return GetDatatable(SqlCommand, _Timeout) End Function @@ -294,19 +294,19 @@ Public Class MSSQLServer End Using End Function - + ' Public Function GetDatatable(SqlCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = 120) As DataTable Using oSqlConnection = GetSQLConnection() Return GetDatatableWithConnectionObject(SqlCommand, oSqlConnection, TransactionMode.ExternalTransaction, Transaction, Timeout) End Using End Function - + ' Public Async Function GetDatatableAsync(SqlCommand As String, Optional Timeout As Integer = 120) As Task(Of DataTable) Return Await Task.Run(Function() GetDatatable(SqlCommand, Timeout)) End Function - + ' Public Function GetDatatableWithConnection(SqlCommand As String, ConnectionString As String, Optional Timeout As Integer = 120) As DataTable Using oConnection = GetConnection(ConnectionString) Return GetDatatableWithConnectionObject(SqlCommand, oConnection, Timeout:=Timeout) @@ -342,33 +342,33 @@ Public Class MSSQLServer Return oTable End Function - + ' Public Function ExecuteNonQuery(SQLCommand As String) As Boolean Implements IDatabase.ExecuteNonQuery Using oConnection = GetSQLConnection() Return ExecuteNonQueryWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, _Timeout) End Using End Function - + ' Public Function ExecuteNonQuery(SQLCommand As String, Timeout As Integer) As Boolean Implements IDatabase.ExecuteNonQuery Using oConnection = GetSQLConnection() Return ExecuteNonQueryWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) End Using End Function - + ' Public Function ExecuteNonQuery(SQLCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = 120) As Boolean Using oConnection = GetSQLConnection() Return ExecuteNonQueryWithConnectionObject(SQLCommand, Transaction.Connection, TransactionMode.ExternalTransaction, Transaction, Timeout) End Using End Function - + ' Public Async Function ExecuteNonQueryAsync(SQLCommand As String, Optional Timeout As Integer = 120) As Task(Of Boolean) Return Await Task.Run(Function() ExecuteNonQuery(SQLCommand, Timeout)) End Function - + ' Public Function ExecuteNonQueryWithConnection(pSQLCommand As String, ConnString As String, Optional Timeout As Integer = 120) As Boolean Using oConnection = GetConnection(ConnString) Return ExecuteNonQueryWithConnectionObject(pSQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) @@ -399,33 +399,33 @@ Public Class MSSQLServer End Try End Function - + ' Public Function GetScalarValue(SQLQuery As String) As Object Implements IDatabase.GetScalarValue Using oConnection As SqlConnection = GetSQLConnection() Return GetScalarValueWithConnectionObject(SQLQuery, oConnection) End Using End Function - + ' Public Function GetScalarValue(SQLCommand As String, Timeout As Integer) As Object Implements IDatabase.GetScalarValue Using oConnection = GetSQLConnection() Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) End Using End Function - + ' Public Function GetScalarValue(SQLCommand As String, Transaction As SqlTransaction, Optional Timeout As Integer = 120) As Object Using oConnection = GetSQLConnection() Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.ExternalTransaction, Transaction, Timeout) End Using End Function - + ' Public Async Function GetScalarValueAsync(SQLQuery As String, Optional Timeout As Integer = 120) As Task(Of Object) Return Await Task.Run(Function() GetScalarValue(SQLQuery, Timeout)) End Function - + ' Public Function GetScalarValueWithConnection(SQLCommand As String, ConnectionString As String, Optional Timeout As Integer = 120) As Object Using oConnection = GetConnection(ConnectionString) Return GetScalarValueWithConnectionObject(SQLCommand, oConnection, TransactionMode.WithTransaction, Nothing, Timeout) @@ -490,7 +490,7 @@ Public Class MSSQLServer End Try End Function - + ' Public Function GetScalarValue(SQLCommand As SqlCommand, OutputParameter As String) As Object Return GetScalarValue(SQLCommand, OutputParameter, _Timeout) End Function @@ -521,7 +521,7 @@ Public Class MSSQLServer End Try End Sub - + ' Private Sub NewExecuteNonQueryAsync_Callback(ByVal result As IAsyncResult) Dim command As SqlCommand = CType(result.AsyncState, SqlCommand) Dim res = command.EndExecuteNonQuery(result) diff --git a/Modules.Filesystem/File.vb b/Modules.Filesystem/File.vb index 7425e2d3..1c109f8f 100644 --- a/Modules.Filesystem/File.vb +++ b/Modules.Filesystem/File.vb @@ -75,6 +75,11 @@ Public Class File Return oCleanName End Function + ''' + ''' Reads the file at `FilePath` and computes a SHA256 Hash from its contents + ''' + ''' + ''' Public Function GetChecksum(FilePath As String) As String Try Using oFileStream = IO.File.OpenRead(FilePath) @@ -339,6 +344,24 @@ Public Class File End Try End Function + ''' + ''' Checks if a file is locked, ie. in use by another process. + ''' + ''' + ''' https://docs.microsoft.com/en-us/dotnet/standard/io/handling-io-errors + ''' + Public Function TestFileIsLocked(pFilePath As String) As Boolean + Try + Using stream As FileStream = IO.File.Open(FileMode.Open, FileAccess.Read, FileShare.None) + stream.Close() + End Using + Catch ex As Exception When ((ex.HResult And &HFFFF) = 32) + Return True + End Try + + Return False + End Function + Public Function TestPathIsDirectory(Path As String) As Boolean If Not Directory.Exists(Path) Then Return False