diff --git a/GUIs.ZooFlow/frmtest.vb b/GUIs.ZooFlow/frmtest.vb index 2d3cc8dc..618e7d6e 100644 --- a/GUIs.ZooFlow/frmtest.vb +++ b/GUIs.ZooFlow/frmtest.vb @@ -96,20 +96,23 @@ Public Class frmtest End Sub Private Async Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click - Dim oResult As Long = Await My.Application.Service.Client.NewFileAsync( + Dim oObjectId As Long = Await My.Application.Service.Client.NewFileAsync( txtFile2Import.Text, "WORK", "DOC", "DEFAULT", New NewFileOptions With { - .KeepExtension = CheckBoxKeepExtension.Checked, .Username = Environment.UserName, .DateImported = DateTimePicker1.Value } ) - txtIDB_OBJ_ID.Text = oResult - MsgBox("File Imported!") + If oObjectId <> INVALID_OBEJCT_ID Then + MsgBox("File Imported!", MsgBoxStyle.Information, Text) + Else + MsgBox("File was not imported. Check the server logs!") + End If + txtIDB_OBJ_ID.Text = oObjectId End Sub Private Sub frmtest_Load(sender As Object, e As EventArgs) Handles MyBase.Load diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb index 2ebe819b..fa3dc210 100644 --- a/Modules.EDMIAPI/Client.vb +++ b/Modules.EDMIAPI/Client.vb @@ -627,10 +627,6 @@ Public Class Client ''' Import options for NewFileAsync. ''' Public Class NewFileOptions - ''' - ''' Option to keep the original extension when importing. Defaults to false. - ''' - Public Property KeepExtension As Boolean = False ''' ''' Windows username of the user responsible for the import. Defaults to the currently logged in user. ''' @@ -705,7 +701,7 @@ Public Class Client #End Region - Private Class ObjectAttribute + Public Class ObjectAttribute Public Property Id As Long Public Property Title As String Public Property Type As String diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.SetAttributeValueResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.SetAttributeValueResponse.datasource new file mode 100644 index 00000000..f00b50c6 --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.SetAttributeValueResponse.datasource @@ -0,0 +1,10 @@ + + + + DigitalData.Modules.EDMI.API.EDMIServiceReference.SetAttributeValueResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.NewFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.NewFile.xsd index 25e09256..63de4e06 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.NewFile.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.NewFile.xsd @@ -11,6 +11,7 @@ + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.SetAttributeValue.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.SetAttributeValue.xsd new file mode 100644 index 00000000..84b1eb72 --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.FileStorage.SetAttributeValue.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd index f4dfa1da..0acf5ce9 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd @@ -25,6 +25,7 @@ + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl index 5efb2b85..f228f2f8 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl @@ -9,6 +9,7 @@ + @@ -118,6 +119,12 @@ + + + + + + @@ -218,6 +225,10 @@ + + + + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd index 08e87d36..1f7d2fbf 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd @@ -2,6 +2,7 @@ + @@ -172,6 +173,20 @@ + + + + + + + + + + + + + + @@ -182,7 +197,7 @@ - + @@ -198,7 +213,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap index 24ee6ee1..dbd92a1b 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap @@ -31,6 +31,7 @@ + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb index ab76c8c5..69d93431 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb @@ -24,6 +24,7 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ScalarResult)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _ Partial Public Class BaseResponse Inherits Object @@ -32,6 +33,9 @@ Namespace EDMIServiceReference _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + _ + Private ErrorDetailsField As String + _ Private ErrorMessageField As String @@ -48,6 +52,19 @@ Namespace EDMIServiceReference End Set End Property + _ + Public Property ErrorDetails() As String + Get + Return Me.ErrorDetailsField + End Get + Set + If (Object.ReferenceEquals(Me.ErrorDetailsField, value) <> true) Then + Me.ErrorDetailsField = value + Me.RaisePropertyChanged("ErrorDetails") + End If + End Set + End Property + _ Public Property ErrorMessage() As String Get @@ -100,6 +117,8 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ObjectDoesNotExistFault)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class ScalarResult Inherits EDMIServiceReference.BaseResponse @@ -155,6 +174,31 @@ Namespace EDMIServiceReference End Property End Class + _ + Partial Public Class SetAttributeValueResponse + Inherits EDMIServiceReference.BaseResponse + + _ + Private ObjectIdField As Long + + _ + Public Property ObjectId() As Long + Get + Return Me.ObjectIdField + End Get + Set + If (Me.ObjectIdField.Equals(value) <> true) Then + Me.ObjectIdField = value + Me.RaisePropertyChanged("ObjectId") + End If + End Set + End Property + End Class + _ Private KindTypeField As String + _ + Private LanguageField As String + _ Private StoreNameField As String @@ -446,6 +493,19 @@ Namespace EDMIServiceReference End Set End Property + _ + Public Property Language() As String + Get + Return Me.LanguageField + End Get + Set + If (Object.ReferenceEquals(Me.LanguageField, value) <> true) Then + Me.LanguageField = value + Me.RaisePropertyChanged("Language") + End If + End Set + End Property + _ Public Property StoreName() As String Get @@ -482,6 +542,102 @@ Namespace EDMIServiceReference End Sub End Class + _ + Partial Public Class SetAttributeValueRequest + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged + + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + + _ + Private AttributeNameField As String + + _ + Private AttributeValueField As String + + _ + Private ObjectIdField As Long + + _ + Private WhoField As Long + + _ + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData + Get + Return Me.extensionDataField + End Get + Set + Me.extensionDataField = value + End Set + End Property + + _ + Public Property AttributeName() As String + Get + Return Me.AttributeNameField + End Get + Set + If (Object.ReferenceEquals(Me.AttributeNameField, value) <> true) Then + Me.AttributeNameField = value + Me.RaisePropertyChanged("AttributeName") + End If + End Set + End Property + + _ + Public Property AttributeValue() As String + Get + Return Me.AttributeValueField + End Get + Set + If (Object.ReferenceEquals(Me.AttributeValueField, value) <> true) Then + Me.AttributeValueField = value + Me.RaisePropertyChanged("AttributeValue") + End If + End Set + End Property + + _ + Public Property ObjectId() As Long + Get + Return Me.ObjectIdField + End Get + Set + If (Me.ObjectIdField.Equals(value) <> true) Then + Me.ObjectIdField = value + Me.RaisePropertyChanged("ObjectId") + End If + End Set + End Property + + _ + Public Property Who() As Long + Get + Return Me.WhoField + End Get + Set + If (Me.WhoField.Equals(value) <> true) Then + Me.WhoField = value + Me.RaisePropertyChanged("Who") + End If + End Set + End Property + + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged + + Protected Sub RaisePropertyChanged(ByVal propertyName As String) + Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent + If (Not (propertyChanged) Is Nothing) Then + propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) + End If + End Sub + End Class + _ Public Enum RightsAccessRight As Integer @@ -625,6 +781,12 @@ Namespace EDMIServiceReference _ Function NewFileAsync(ByVal Data As EDMIServiceReference.NewFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.NewFileResponse) + _ + Function SetAttributeValue(ByVal Data As EDMIServiceReference.SetAttributeValueRequest) As EDMIServiceReference.SetAttributeValueResponse + + _ + Function SetAttributeValueAsync(ByVal Data As EDMIServiceReference.SetAttributeValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.SetAttributeValueResponse) + 'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt. _ Function EDMIServiceReference_IEDMIService_GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse Implements EDMIServiceReference.IEDMIService.GetFileByObjectId Return MyBase.Channel.GetFileByObjectId(request) diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl index e4080760..1ea6a324 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl @@ -182,6 +182,15 @@ + + + + + + + + + diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj index bd268a61..3dd801ed 100644 --- a/Modules.EDMIAPI/EDMI.API.vbproj +++ b/Modules.EDMIAPI/EDMI.API.vbproj @@ -130,6 +130,9 @@ Reference.svcmap + + Reference.svcmap + Reference.svcmap @@ -145,6 +148,9 @@ Designer + + Designer + Designer diff --git a/Service.EDMIService/BaseMethod.vb b/Service.EDMIService/BaseMethod.vb index f54faa5f..41770d47 100644 --- a/Service.EDMIService/BaseMethod.vb +++ b/Service.EDMIService/BaseMethod.vb @@ -19,8 +19,8 @@ Public MustInherit Class BaseMethod Throw New ApplicationException(pMessage) End Function - Public Function LogAndThrow(pException As Exception) + Public Function LogAndThrow(pException As Exception, pMessage As String) Logger.Error(pException) - Throw pException + Throw New ApplicationException(pMessage, pException) End Function End Class diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 2526cd55..552abe87 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -131,6 +131,9 @@ + + + diff --git a/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueMethod.vb b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueMethod.vb new file mode 100644 index 00000000..7bdead0f --- /dev/null +++ b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueMethod.vb @@ -0,0 +1,29 @@ +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Logging + +Namespace FileStorage.GetAttributeValue + Public Class GetAttributeValueMethod + Inherits BaseMethod + + Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer) + MyBase.New(pLogConfig, pDatabase) + End Sub + + Public Function Run(pData As GetAttributeValueRequest) As GetAttributeValueResponse + Try + If Helpers.TestObjectIdExists(pData.ObjectId) = False Then + LogAndThrow("ObjectId does not exist!") + End If + + Dim oValue As Object + + + Return New GetAttributeValueResponse(pData.ObjectId, oValue) + Catch ex As Exception + Logger.Warn("Error occurred while getting attribute value!") + Return New GetAttributeValueResponse(ex) + End Try + End Function + End Class + +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueRequest.vb b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueRequest.vb new file mode 100644 index 00000000..702f74df --- /dev/null +++ b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueRequest.vb @@ -0,0 +1,5 @@ +Namespace FileStorage.GetAttributeValue + Public Class GetAttributeValueRequest + Public Property ObjectId As Long + End Class +End Namespace diff --git a/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueResponse.vb b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueResponse.vb new file mode 100644 index 00000000..7f08b663 --- /dev/null +++ b/Service.EDMIService/Filestorage/GetAttributeValue/GetAttributeValueResponse.vb @@ -0,0 +1,26 @@ +Imports System.Runtime.Serialization + +Namespace FileStorage.GetAttributeValue + + + + Public Class GetAttributeValueResponse + Inherits Messages.BaseResponse + + + Public Property ObjectId As Long + Public Property Value As Object + + Public Sub New(pObjectId As Long, pValue As Object) + MyBase.New() + ObjectId = pObjectId + Value = pValue + End Sub + + Public Sub New(pException As Exception, Optional pDetails As String = "") + MyBase.New(pException, pDetails) + End Sub + End Class + +End Namespace + diff --git a/Service.EDMIService/Filestorage/NewFile/NewFileMethod.vb b/Service.EDMIService/Filestorage/NewFile/NewFileMethod.vb index 925449c1..4268f33b 100644 --- a/Service.EDMIService/Filestorage/NewFile/NewFileMethod.vb +++ b/Service.EDMIService/Filestorage/NewFile/NewFileMethod.vb @@ -21,8 +21,6 @@ Public Class NewFileMethod End Sub Public Function Run(pData As NewFile.NewFileRequest) As NewFile.NewFileResponse - Dim oConnection As SqlConnection = Nothing - Dim oTransaction As SqlTransaction = Nothing Dim oFilePath As String = Nothing Dim oExistingObjectId = TestFileChecksumExists(pData.FileChecksum) @@ -68,7 +66,7 @@ Public Class NewFileMethod IO.Directory.CreateDirectory(oFinalPath) Logger.Debug("Created folder [{0}]", oFinalPath) Catch ex As Exception - LogAndThrow(ex) + LogAndThrow(ex, $"Store Directory [{oFinalPath}] could not be created!") End Try End If Logger.Debug("Final Directory is [{0}]", oFinalPath) @@ -103,8 +101,7 @@ Public Class NewFileMethod oStream.Close() End Using Catch ex As Exception - Logger.Error(ex) - LogAndThrow($"Could not write file [{oFilePath}] to disk!") + LogAndThrow(ex, $"Could not write file [{oFilePath}] to disk!") End Try '--------------------------------------------------------------------------- @@ -113,17 +110,44 @@ Public Class NewFileMethod ' Insert into DB Dim oSQL As String = $"EXEC PRIDB_NEW_IDBFO '{oFinalPath}', '{oFileObjectName}', '{oFileObjectExtension}',{oFileObjectSize},'{pData.FileChecksum}' ,'{pData.Who}','{oObjectId}',{oStore.Id}" - Dim oResult As Boolean = Database.ExecuteNonQueryWithConnectionObject(oSQL, - oConnection, - MSSQLServer.TransactionMode.ExternalTransaction, - oTransaction) + Dim oResult As Boolean = Database.ExecuteNonQueryWithConnectionObject(oSQL, Connection, ExternalTransaction, Transaction) If oResult = False Then LogAndThrow("IDB FileObject could not be created!") End If + '--------------------------------------------------------------------------- + + 'TODO: File dates in try catch + + Dim oDefaultAttributes As New Dictionary(Of String, Object) From { + {"OriginFileName", pData?.FileName}, + {"OriginCreationDatetime", pData?.FileCreatedAt}, + {"OriginChangedDatetime", pData?.FileChangedAt} + } + + For Each oAttribute As KeyValuePair(Of String, Object) In oDefaultAttributes + Try + ' Dont write empty attributes + If oAttribute.Value Is Nothing Then + Continue For + End If + + Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, "de-DE", pData.Who) + If oSuccess Then + Logger.Debug("Default Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value) + Else + Logger.Warn("Default attribute value could not be written") + End If + Catch ex As Exception + LogAndThrow(ex, $"System attribute [{oAttribute.Key}] could not be written!") + End Try + Next + + '--------------------------------------------------------------------------- + ' Finally, commit the transaction - oTransaction?.Commit() + Transaction?.Commit() Return New NewFile.NewFileResponse(oObjectId) Catch ex As Exception @@ -141,7 +165,7 @@ Public Class NewFileMethod End If Logger.Info("Rolling back transaction.") - oTransaction?.Rollback() + Transaction?.Rollback() Return New NewFile.NewFileResponse(ex) diff --git a/Service.EDMIService/Filestorage/NewFile/NewFileRequest.vb b/Service.EDMIService/Filestorage/NewFile/NewFileRequest.vb index 39002b47..93c408b4 100644 --- a/Service.EDMIService/Filestorage/NewFile/NewFileRequest.vb +++ b/Service.EDMIService/Filestorage/NewFile/NewFileRequest.vb @@ -63,6 +63,13 @@ Namespace FileStorage.NewFile ''' Public Property Who As String + + ''' + ''' The language of the user + ''' + ''' + + Public Property Language As String End Class End Namespace diff --git a/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueMethod.vb b/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueMethod.vb index 627c909f..c38d8ef0 100644 --- a/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueMethod.vb +++ b/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueMethod.vb @@ -1,13 +1,20 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Database Imports DigitalData.Services.EDMIService.IDB +Imports System.Data.SqlClient Namespace FileStorage.SetAttributeValue Public Class SetAttributeValueMethod Inherits BaseMethod + Private Connection As SqlConnection + Private Transaction As SqlTransaction + Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer) MyBase.New(pLogConfig, pDatabase) + + Connection = Database.GetConnection() + Transaction = Connection.BeginTransaction() End Sub Public Function Run(pData As SetAttributeValueRequest) As SetAttributeValueResponse @@ -16,13 +23,16 @@ Namespace FileStorage.SetAttributeValue LogAndThrow("ObjectId does not exist!") End If - 'TODO: Finish + Dim oResult = Helpers.SetAttributeValue(Connection, Transaction, + pData.ObjectId, pData.AttributeName, pData.AttributeValue, pData.Language, pData.Who) + If oResult = False Then + LogAndThrow("Attribute value could not be set!") + End If Return New SetAttributeValueResponse(pData.ObjectId) Catch ex As Exception Logger.Warn("Error occurred while setting attribute value!") - Return New SetAttributeValueResponse(ex) End Try End Function diff --git a/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueRequest.vb b/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueRequest.vb index 064562c9..353c8171 100644 --- a/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueRequest.vb +++ b/Service.EDMIService/Filestorage/SetAttributeValue/SetAttributeValueRequest.vb @@ -15,6 +15,8 @@ Namespace FileStorage.SetAttributeValue Public Property AttributeValue As String Public Property Who As Long + + Public Property Language As String End Class diff --git a/Service.EDMIService/IDB/Helpers.vb b/Service.EDMIService/IDB/Helpers.vb index 50d023d0..5186b2a9 100644 --- a/Service.EDMIService/IDB/Helpers.vb +++ b/Service.EDMIService/IDB/Helpers.vb @@ -1,23 +1,24 @@ Imports DigitalData.Modules.Database Imports DigitalData.Modules.Language Imports DigitalData.Modules.Logging -Imports DigitalData.Services.EDMIService.Messages +Imports DigitalData.Modules.EDMI.API.Client +Imports System.Data.SqlClient Namespace IDB Public Class Helpers Inherits BaseClass - Private MSSQLServer As MSSQLServer + Private Database As MSSQLServer Public Sub New(pLogConfig As LogConfig, pMSSQLServer As MSSQLServer) MyBase.New(pLogConfig) - MSSQLServer = pMSSQLServer + Database = pMSSQLServer End Sub Public Function TestObjectIdExists(pObjectId As Long, Optional ByRef IsDeleted As Boolean = False, Optional ByRef IsActive As Boolean = False) As Boolean Try Dim oSQL As String = $"SELECT IDB_OBJ_ID, ACTIVE, DELETED FROM TBIDB_OBJECT WHERE IDB_OBJ_ID = {pObjectId}" - Dim oTable As DataTable = MSSQLServer.GetDatatable(oSQL) + Dim oTable As DataTable = Database.GetDatatable(oSQL) If IsNothing(oTable) OrElse oTable.Rows.Count = 0 Then Logger.Warn("ObjectId {0} does not exist") @@ -39,6 +40,49 @@ Namespace IDB End Try End Function + + Public Function GetAttributesForObject(pObjectId As Long, pLanguage As String) As List(Of ObjectAttribute) + Dim oAttributes As New List(Of ObjectAttribute) + + Try + Dim oTable As DataTable = Database.GetDatatable($"EXEC [PRIDB_GET_VALUE_DT] {pObjectId}, '{pLanguage}'") + If oTable Is Nothing OrElse oTable.Rows.Count = 0 Then + Return Nothing + End If + + For Each oRow As DataRow In oTable.Rows + Dim oAttribute As New ObjectAttribute With { + .Id = oRow.Item("AttributeId"), + .Title = oRow.Item("AttributeTitle"), + .Type = oRow.Item("AttributeType"), + .ValueBigInt = Utils.NotNull(oRow.Item("ValueBigInt"), Nothing), + .ValueDate = Utils.NotNull(oRow.Item("ValueDate"), Nothing), + .ValueDecimal = Utils.NotNull(oRow.Item("ValueDecimal"), Nothing), + .ValueText = Utils.NotNull(oRow.Item("ValueText"), Nothing) + } + + oAttributes.Add(oAttribute) + Next + + Return oAttributes + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + + Public Function SetAttributeValue(pConnection As SqlConnection, pTransaction As SqlTransaction, pObjectId As Long, pAttributeName As String, pValue As String, pLanguage As String, pWho As String) As Boolean + Dim oSql = $" + DECLARE @NEW_OBJ_MD_ID BIGINT + EXEC PRIDB_NEW_OBJ_DATA {pObjectId}, '{pAttributeName}', '{pWho}', '{pValue}', '{pLanguage}', 0, @OMD_ID = @NEW_OBJ_MD_ID OUTPUT" + + If Database.ExecuteNonQueryWithConnectionObject(oSql, pConnection, MSSQLServer.TransactionMode.ExternalTransaction, pTransaction) = False Then + Logger.Warn("Error while setting attribute value.") + Return False + End If + + Return True + End Function End Class End Namespace \ No newline at end of file diff --git a/Service.EDMIService/WindowsService.vb b/Service.EDMIService/WindowsService.vb index d93a22b7..3ff995f8 100644 --- a/Service.EDMIService/WindowsService.vb +++ b/Service.EDMIService/WindowsService.vb @@ -49,8 +49,6 @@ Public Class WindowsService _Config = _ConfigManager.Config _LogConfig.Debug = _ConfigManager.Config.Debug - 'UpdateTraceLogging() - Dim oTimer As New Timers.Timer(60000) AddHandler oTimer.Elapsed, Sub() _Logger.Debug("Reloading config..")