jj_13_01_16_update_1.1.0.0
This commit is contained in:
71
app/DpmaXmlParser/Querybuilder.vb
Normal file
71
app/DpmaXmlParser/Querybuilder.vb
Normal file
@@ -0,0 +1,71 @@
|
||||
Public Class Querybuilder
|
||||
|
||||
Public Shared Function Build(config As ConfigValues, db As DB)
|
||||
Dim mainQuery As String
|
||||
Dim companies As List(Of String)
|
||||
Dim stringsToIgnore As New List(Of String)
|
||||
|
||||
' searchvalues ist entweder eine SQL Abfrage oder eine Kommagetrennte Liste
|
||||
If config.query.ToUpper.StartsWith("SELECT") Then
|
||||
companies = GetLiveQueryResult(config.query, db)
|
||||
Else
|
||||
companies = New List(Of String)(config.query.Split(";"))
|
||||
End If
|
||||
|
||||
If config.queryIgnore.Count > 0 And config.queryIgnore.Contains(";") Then
|
||||
stringsToIgnore = New List(Of String)(config.queryIgnore.Split(";"))
|
||||
End If
|
||||
|
||||
mainQuery = BuildMainQuery(companies)
|
||||
mainQuery &= BuildIgnoreQuery(stringsToIgnore)
|
||||
|
||||
Return mainQuery
|
||||
End Function
|
||||
|
||||
Public Shared Function BuildMainQuery(companies As List(Of String)) As String
|
||||
Dim query As String = String.Empty
|
||||
|
||||
For Each company As String In companies
|
||||
Dim querypart As String = String.Format("(INH=""{0}"" OR ANM=""{0}"")", company.Trim())
|
||||
|
||||
query &= querypart
|
||||
|
||||
' Bei allen bis auf das letzte Unternehmen einen OR Operator einfügen
|
||||
If (companies.IndexOf(company) + 1) < companies.Count Then
|
||||
query &= " OR "
|
||||
End If
|
||||
Next
|
||||
|
||||
Return query
|
||||
End Function
|
||||
|
||||
Public Shared Function BuildIgnoreQuery(stringsToIgnore As List(Of String))
|
||||
Dim query As String = String.Empty
|
||||
|
||||
For Each stringToIgnore In stringsToIgnore
|
||||
Dim querypart As String = String.Format(" NOT (INH=""{0}"" OR ANM=""{0}"")", stringToIgnore)
|
||||
|
||||
query &= querypart
|
||||
Next
|
||||
|
||||
Return query
|
||||
End Function
|
||||
|
||||
Public Shared Function GetLiveQueryResult(query As String, db As DB) As List(Of String)
|
||||
Dim result As New List(Of String)
|
||||
Dim SQL As String = query
|
||||
Dim DT As DataTable = db.QueryTable(SQL)
|
||||
|
||||
If DT.Rows.Count = 0 Then
|
||||
Throw New Exception("SQL Abfrage lieferte ein leeres Ergebnis zurück: " & query)
|
||||
End If
|
||||
|
||||
For Each row As DataRow In DT.Rows
|
||||
Dim item As String = CStr(row.Item(0)).Trim()
|
||||
result.Add(row.Item(0))
|
||||
Next
|
||||
|
||||
Return result
|
||||
End Function
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user