Initial
This commit is contained in:
275
Common/Action.vb
Normal file
275
Common/Action.vb
Normal file
@@ -0,0 +1,275 @@
|
||||
Imports System.IO
|
||||
Imports System.Xml
|
||||
Imports System.Xml.Schema
|
||||
|
||||
Imports System.Data
|
||||
Imports System.Data.SqlTypes
|
||||
Imports System.Data.SqlClient
|
||||
|
||||
Public Class Action
|
||||
|
||||
#Region "Members"
|
||||
|
||||
Private Shared _actionSingleton As Action
|
||||
|
||||
Private _actionType As ActionType
|
||||
Private _creatorTgNr As String
|
||||
Private _sourceApplication As String
|
||||
Private _parameters As Parameter()
|
||||
Private _validationSuccess As Boolean
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Public methods"
|
||||
|
||||
'''<summary>Lädt externes Xml file für automatisierte Aktionen</summary>
|
||||
'''<param name="xmlImportFile">Das Xml File mit den entsprechenden Parametern</param>
|
||||
Public Sub Load(ByVal xmlImportFile As FileInfo)
|
||||
Try
|
||||
'Validate source
|
||||
'If Not IsValid(xmlImportFile) Then
|
||||
' 'xml file is invalid
|
||||
' Throw New ActionException(1, "Specified file " & xmlImportFile.FullName & " hasn't got a valid strucure which is specified by his schema")
|
||||
'End If
|
||||
Dim doc As New XmlDocument()
|
||||
Try
|
||||
doc.Load(xmlImportFile.FullName)
|
||||
Catch ex As Exception
|
||||
'MsgBox(ex.Message)
|
||||
End Try
|
||||
|
||||
'read header elements
|
||||
_actionType = CType(doc.SelectSingleNode("action/actionId").InnerText, ActionType)
|
||||
_creatorTgNr = doc.SelectSingleNode("action/creatorTg").InnerText
|
||||
_sourceApplication = doc.SelectSingleNode("action/sourceApplication").InnerText
|
||||
|
||||
Dim RootNode As XmlElement = doc.DocumentElement
|
||||
Dim nodeList As XmlNodeList = RootNode.ChildNodes
|
||||
If nodeList.Count > 0 Then
|
||||
'set correct array size
|
||||
ReDim _parameters(nodeList.Count - 1)
|
||||
|
||||
Dim value As String
|
||||
Dim name As String
|
||||
Dim parameterCounter As Integer = 0
|
||||
|
||||
Dim i As Integer
|
||||
|
||||
For i = 0 To nodeList.Count - 1
|
||||
value = nodeList.Item(i).InnerText
|
||||
name = nodeList.Item(i).LocalName
|
||||
'append new parameter
|
||||
_parameters(parameterCounter) = New Parameter(name, value)
|
||||
|
||||
parameterCounter = parameterCounter + 1
|
||||
Next
|
||||
End If
|
||||
'Rel 4.02
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
TKBLib.Errorhandling.TraceHelper.Msg("EdokaLib.Common.Action.Load", ex.Message & ex.StackTrace, TraceLevel.Error)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'''<summary>Returns a parameter identified by his name</summary>
|
||||
'''<param name="paramName"></param>
|
||||
'''<returns></returns>
|
||||
Public Function GetParameterByName(ByVal paramName As String) As Parameter
|
||||
Try
|
||||
Dim param As Parameter
|
||||
For Each param In _parameters
|
||||
If param.Name = paramName Then
|
||||
Return param
|
||||
End If
|
||||
Next
|
||||
Catch ex As Exception
|
||||
TKBLib.Errorhandling.TraceHelper.Msg("EdokaLib.Common.Action.GetParameterByName", ex.Message & ex.StackTrace, TraceLevel.Error)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
'''<summary>Zerstört die statische Instanz</summary>
|
||||
Public Sub Destroy()
|
||||
Try
|
||||
_actionSingleton = Nothing
|
||||
Catch ex As Exception
|
||||
TKBLib.Errorhandling.TraceHelper.Msg("EdokaLib.Common.Action.Destroy", ex.Message & ex.StackTrace, TraceLevel.Error)
|
||||
Throw ex
|
||||
End Try
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "Private methods/subs"
|
||||
|
||||
'''<summary>Überprüft ob das Xml file dem angegebenen Schema entspricht</summary>
|
||||
'''<param name="xmlImportFile"></param>
|
||||
'''<returns></returns>
|
||||
Private Function IsValid(ByVal xmlImportFile As FileInfo) As Boolean
|
||||
Dim reader As New XmlTextReader(xmlImportFile.FullName)
|
||||
'We pass the xmltextreader into the xmlvalidatingreader
|
||||
'This will validate the xml doc with the schema file
|
||||
'NOTE the xml file it self points to the schema file
|
||||
|
||||
Dim validator As New XmlValidatingReader(reader)
|
||||
Try
|
||||
'First we create the xmltextreader
|
||||
|
||||
|
||||
' Set the validation event handler
|
||||
'AddHandler validator.ValidationEventHandler, _
|
||||
'AddressOf ValidationCallback
|
||||
_validationSuccess = True 'make sure to reset the success var
|
||||
|
||||
' Read XML data
|
||||
While (validator.Read)
|
||||
End While
|
||||
'Close the reader.
|
||||
validator.Close()
|
||||
|
||||
reader.Close()
|
||||
|
||||
'The validationeventhandler is the only thing that would
|
||||
'set m_Success to false
|
||||
Return _validationSuccess
|
||||
Catch ex As Exception
|
||||
validator.Close()
|
||||
reader.Close()
|
||||
|
||||
_validationSuccess = False
|
||||
TKBLib.Errorhandling.TraceHelper.Msg("EdokaLib.Common.Action.IsValid", ex.Message & ex.StackTrace, TraceLevel.Warning)
|
||||
_validationSuccess = False
|
||||
Return _validationSuccess
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub ValidationCallback(ByVal sender As Object, ByVal args As ValidationEventArgs)
|
||||
Try
|
||||
'Display the validation error. This is only called on error
|
||||
_validationSuccess = False 'Validation failed
|
||||
Debug.Write("Validation error: " + args.Message + Environment.NewLine)
|
||||
Throw New ActionException(1, "Fehler bei der Validierung")
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Properties"
|
||||
|
||||
Public Shared ReadOnly Property Action() As Action
|
||||
Get
|
||||
If IsNothing(_actionSingleton) Then
|
||||
_actionSingleton = New Action()
|
||||
End If
|
||||
|
||||
Return _actionSingleton
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property valtionOK() As Boolean
|
||||
Get
|
||||
Return _validationSuccess
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property ActionType() As ActionType
|
||||
Get
|
||||
Return _actionType
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property CreatorTgNr() As String
|
||||
Get
|
||||
Return _creatorTgNr
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property SourceApplication() As String
|
||||
Get
|
||||
Return _sourceApplication
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property Parameters() As Parameter()
|
||||
Get
|
||||
Return _parameters
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
|
||||
#Region "ActionException"
|
||||
|
||||
Public Class ActionException
|
||||
Inherits Exception
|
||||
|
||||
Private _number As Integer
|
||||
Private _description As String
|
||||
|
||||
Public Sub New(ByVal number As Integer, ByVal description As String)
|
||||
_number = number
|
||||
_description = description
|
||||
End Sub
|
||||
|
||||
Public Overrides ReadOnly Property Message() As String
|
||||
Get
|
||||
Return _description
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Number() As Integer
|
||||
Get
|
||||
Return _number
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Class
|
||||
|
||||
#End Region
|
||||
|
||||
'''<summary>Struct für einzelne Parameter</summary>
|
||||
Public Structure Parameter
|
||||
|
||||
|
||||
Private _value As String
|
||||
Private _name As String
|
||||
|
||||
|
||||
Public Sub New(ByVal name As String, ByVal value As String)
|
||||
Try
|
||||
_value = value
|
||||
_name = name
|
||||
|
||||
Catch ex As Exception
|
||||
TKBLib.Errorhandling.TraceHelper.Msg("EdokaLib.Common.Parameter.New", ex.Message & ex.StackTrace, TraceLevel.Error)
|
||||
Throw ex
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
Public ReadOnly Property Value() As String
|
||||
Get
|
||||
Return _value
|
||||
End Get
|
||||
End Property
|
||||
Public ReadOnly Property Name() As String
|
||||
Get
|
||||
Return _name
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Structure
|
||||
|
||||
Public Enum ActionType
|
||||
AnzeigePartnerdossier = 1
|
||||
DokumentAnzeige = 2
|
||||
DokumentErstellung = 3
|
||||
DokumentBearbeitung = 4
|
||||
Statusmutation = 5
|
||||
HostDokumentAnzeige = 6
|
||||
UVMDokumentanzeige = 7
|
||||
ZVDokumentanzeige = 8
|
||||
DokLoeschung = 9
|
||||
AusHyperlink = 10
|
||||
End Enum
|
||||
Reference in New Issue
Block a user