/
AstroJohn
/
MailRobot
Обзор
Документация
Войти
/
AstroJohn
/
MailRobot
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
VbCheckerObsolete/mdlLoadToDB.vb
201 строка
6 KB
AstroJohn
1st commit
11 сен 2024, 13:31
11 сен 2024, 13:31
0f57dc5
Код
Авторство
О чём код?
Imports System.Activities.Statements Imports System.Transactions Imports CsParser Public Class DBLoader Public Overloads Shared Sub LoadLog _ ( FileName As String, Log As clsParsedLog, connection As SqlClient.SqlConnection ) Dim fileInfo As New IO.FileInfo(FileName) LoadLog(fileInfo.Name, Convert.ToInt32(fileInfo.Length), fileInfo.LastAccessTime, Log, connection) End Sub Public Overloads Shared Sub LoadLog _ ( FileName As String, FileSize As Integer, FileLastWriteTime As Date, Log As clsParsedLog, connection As SqlClient.SqlConnection ) Dim SWL_Call As String = String.Empty If Log.Category = "SWL" Then SWL_Call = Log.Callsign End If Dim Tran_TimeSpan As New TimeSpan(0, 10, 0) Using Scope As New TransactionScope(TransactionScopeOption.RequiresNew, Tran_TimeSpan) Dim DS_Log As New DS_QSOsTableAdapters.LogFilesTableAdapter Dim DS_QSO As New DS_QSOsTableAdapters.QSOsTableAdapter DS_QSO.Connection = connection DS_Log.Connection = connection Dim ID As Integer? Dim OPERATORS As String = String.Empty Dim ADDRESS As String = String.Empty Dim NAME As String = String.Empty Dim SOAPBOX As String = String.Empty Dim Equipment As String = String.Empty Dim ContestDate As Date? = Nothing Dim ContestMonth As Integer = 0 If Log.Format = LOG_FORMAT.ERMAK Then OPERATORS = Log.GetHeaderValue_All("OPERATORS") ADDRESS = Log.GetHeaderValue_All("ADDRESS") NAME = Log.GetHeaderValue("NAME") SOAPBOX = Log.GetHeaderValue("SOAPBOX") ElseIf Log.Format = LOG_FORMAT.EDI Then OPERATORS = Log.GetHeaderValue_All("RCall") + ";" + Log.GetHeaderValue("RName") + vbNewLine + Log.GetHeaderValue_All("MOpe") ADDRESS = Log.GetHeaderValue_All("RAdr") + vbNewLine + Log.GetHeaderValue("RPoCo") + vbNewLine + Log.GetHeaderValue("RCity") + vbNewLine + Log.GetHeaderValue("RCoun") NAME = Log.GetHeaderValue("RName").Split(";"c)(0) ContestDate = Log.ContestDate If Not ContestDate Is Nothing Then ContestMonth = Month(ContestDate.Value) End If Equipment = GetEquipmenInfo(Log) End If DS_Log.Delete(Log.Callsign, Log.Category, Log.Band, ContestMonth) Dim IDPrimary As Integer? DS_Log.Insert _ ( FileName _ , FileLastWriteTime _ , FileSize _ , Log.Callsign _ , Log.Category _ , OPERATORS _ , NAME _ , ADDRESS _ , Log.GetHeaderValue("CREATED-BY") _ , SOAPBOX _ , Log.Band _ , ID _ , Log.Location _ , Equipment _ , ContestDate _ , Log.EMail _ , IDPrimary ) For Each QSO As clsParsedQSO In Log.QSOs Windows.Forms.Application.DoEvents() Dim ID_QSO As Integer? DS_QSO.Insert _ ( QSO.CallSign _ , QSO.Stn _ , QSO.Band _ , QSO.Mode _ , QSO.Time.ToString("HHmm") _ , QSO.SentNr _ , QSO.RcvdNr _ , QSO.Freq.ToString _ , SWL_Call _ , QSO.Time _ , ID_QSO ) Next Scope.Complete() End Using End Sub ''' <summary> ''' Формирование строки описания аппаратуры на диапазон ''' </summary> ''' <param name="Log"></param> ''' <returns></returns> ''' <remarks></remarks> Private Shared Function GetEquipmenInfo(Log As clsParsedLog) As String Dim Res As String = String.Empty Dim AntH As String() = Log.GetHeaderValue("SAntH").Split(";"c) Dim TX As String = Log.GetHeaderValue("STXEq").Trim Dim Pwr As String = Log.GetHeaderValue("SPowe").ToUpper.Trim If Not Pwr.Contains("KW") Then If IsNumeric(Pwr.Replace("W", "")) Then Pwr = Pwr.Replace("W", "") + " W" Else Pwr = String.Empty End If End If Dim RX As String = Log.GetHeaderValue("SRXEq").Trim If RX = TX Then RX = String.Empty ElseIf RX <> String.Empty Then RX = "RX: " + RX End If If TX <> String.Empty Then TX = "TX: " + TX End If Dim Ant As String = Log.GetHeaderValue("SAnte").Trim Dim ASL As String = String.Empty Dim AGL As String = String.Empty If AntH.Length = 2 Then ASL = AntH(1).Trim If ASL <> String.Empty Then ASL = ASL + " m ASL" End If AGL = AntH(0).Trim If AGL <> String.Empty Then AGL = AGL + " m AGL" End If End If If Ant <> String.Empty Then Ant = "ANT: " + Ant + " " + ASL + " " + AGL Ant = Ant.Trim End If If TX <> String.Empty Then Res = Res + TX If Pwr <> String.Empty Then Res = Res + " " + Pwr End If Res = Res + vbNewLine Else If Pwr <> String.Empty Then Res = Res + "PWR: " + Pwr + vbNewLine End If If RX <> String.Empty Then Res = Res + RX + vbNewLine End If If Ant <> String.Empty Then Res = Res + Ant End If Return Res.Trim End Function End Class