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..")