148 lines
5.5 KiB
VB.net
148 lines
5.5 KiB
VB.net
Imports System.Console
|
|
Imports System.IO
|
|
Imports System.Xml
|
|
Imports NLog
|
|
|
|
Module Main
|
|
Public LOGPATH As String
|
|
|
|
' Config Variablen
|
|
'Dim username As String '= "TestBrainpool"
|
|
'Dim password As String '= "09Test2015"
|
|
'Dim filename As String '= "BRAINPOOL_MARKEN.xml"
|
|
'Dim query As String '= "INH=""BRAINPOOL"""
|
|
'Dim connstring As String
|
|
'Dim database As String
|
|
|
|
Private logger As Logger = LogManager.GetLogger("Main")
|
|
|
|
Dim mainDoc As XmlDocument
|
|
Dim markDoc As XmlDocument
|
|
|
|
Dim MainFile As String = "Importer-SearchData.xml"
|
|
|
|
Dim p As New Parser()
|
|
Dim dpma As DPMAConnect
|
|
Dim db As DB
|
|
|
|
Dim config As ConfigValues
|
|
Dim marks As New List(Of Mark)
|
|
Dim props = New List(Of String) From {
|
|
"RegistrationOfficeCode",
|
|
"RegistrationDate",
|
|
"RegistrationNumber",
|
|
"MarkCurrentStatusCode",
|
|
"MarkVerbalElementText",
|
|
"MarkFeature",
|
|
"ApplicationDate",
|
|
"Applicant",
|
|
"Representative",
|
|
"PublicationDate",
|
|
"ExpiryDate",
|
|
"TerminationDate",
|
|
"OppositionPeriodStartDate",
|
|
"OppositionPeriodEndDate",
|
|
"Classification",
|
|
"ClassificationLong"
|
|
}
|
|
|
|
Sub Main()
|
|
Try
|
|
config = AppConfig.GetConfiguration()
|
|
|
|
logger.Info("{0} started", My.Application.Info.Title)
|
|
|
|
' Abfrage starten
|
|
logger.Info("Sending request with query: {0}", config.query)
|
|
dpma = New DPMAConnect(config.username, config.password)
|
|
mainDoc = dpma.Search(config.query)
|
|
mainDoc.Save(MainFile)
|
|
|
|
' Ergebnis auslesen und Marken-Klassen erstellen
|
|
marks = p.ReadMarkXMLFile(MainFile)
|
|
|
|
For Each mark As Mark In marks
|
|
Dim akz As String = mark.ApplicationNumber
|
|
Dim file As String = String.Format("Importer-RegisterData-{0}.xml", akz)
|
|
|
|
logger.Debug("Getting Register Info for {0}", akz)
|
|
|
|
markDoc = dpma.GetRegisterInfo(akz)
|
|
markDoc.Save(file)
|
|
|
|
p.ReadMarkRegisterInfoXMLFile(file, mark)
|
|
'p.ReadMarkRegisterInfoXML(markDoc, mark)
|
|
Next
|
|
|
|
logger.Info("{0} Marks imported", marks.Count)
|
|
logger.Debug("=================== DPMA END ===================")
|
|
|
|
' =========================================================================================
|
|
|
|
db = New DB(config.connstring, "DD_ECM")
|
|
Dim formId As Integer = db.GetFormId()
|
|
|
|
For Each m As Mark In marks
|
|
|
|
Dim mainControlId As Integer
|
|
|
|
' Das eindeutige Control suchen
|
|
mainControlId = db.GetControlId(formId)
|
|
|
|
' Über mainControlId überprüfen, ob marke vorhanden
|
|
Dim markExists As Integer = db.GetRecordId(mainControlId, m.ApplicationNumber)
|
|
logger.Debug("Mark {0} exists: {1}", markExists, CBool(markExists))
|
|
|
|
' Wenn noch nicht vorhanden
|
|
If (markExists = 0) Then
|
|
' Einen Record erstellen
|
|
Dim recordId = db.InsertRecord(formId)
|
|
logger.Info("New record created with GUID: " & recordId)
|
|
' Den Leit-Wert einfügen für mainControlId
|
|
Dim valueId = db.InsertValue(mainControlId, recordId, m.ApplicationNumber)
|
|
logger.Debug("Value inserted - Property: {0}, Value: {1}, ControlId: {2}", "ApplicationNumber", m.ApplicationNumber, mainControlId)
|
|
|
|
' alle anderen properties zu dieser marke einfügen einfügen
|
|
For Each prop As String In props
|
|
' ControlID für die aktuelle property holen
|
|
Dim controlId = db.GetControlId(formId, prop)
|
|
' Wert für die aktuelle property holen
|
|
Dim value = db.GetProperty(m, prop)
|
|
' Wert einfügen
|
|
db.InsertValue(controlId, recordId, value)
|
|
logger.Debug("Value inserted - Property: {0}, Value: {1}, ControlId: {2}", prop, value, controlId)
|
|
Next
|
|
Else
|
|
' Marke aktualisieren
|
|
Dim recordId As Integer = markExists
|
|
|
|
logger.Info("Existing Record updated with GUID: {0}", recordId)
|
|
|
|
For Each prop As String In props
|
|
' ControlID für die aktuelle property holen
|
|
Dim controlId = db.GetControlId(formId, prop)
|
|
' Wert für die aktuelle property holen
|
|
Dim value = db.GetProperty(m, prop)
|
|
' Wert aktualisieren
|
|
|
|
Dim hasChanged As Boolean = Not db.IsEqual(controlId, recordId, value)
|
|
logger.Debug("Value {0} for {1} has changed", value, recordId)
|
|
|
|
If hasChanged Then
|
|
db.UpdateValue(controlId, recordId, value)
|
|
logger.Debug("Value updated - Property: {0}, NewValue: {1}, ControlId: {2}", prop, value, controlId)
|
|
End If
|
|
Next
|
|
End If
|
|
logger.Debug("=================== DATABASE END ===================")
|
|
Next
|
|
|
|
|
|
Catch ex As Exception
|
|
logger.Error("An Error occurred: " & ex.Message)
|
|
Environment.Exit(1)
|
|
End Try
|
|
End Sub
|
|
|
|
End Module
|