--- dao/DaoMqPump2/DaoMqPump2/Transport.cs 2014/05/16 19:03:46 2167 +++ dao/DaoMqPump2/DaoMqPump2/Transport.cs 2014/05/16 20:56:22 2168 @@ -16,12 +16,6 @@ public class Transport { - enum LogfileType { - LogTransactions, - LogEvents, - LogDiscarded - } - public static string SQL2MQ = "sql2mq"; public static string MQ2SQL = "mq2sql"; @@ -31,6 +25,8 @@ StatusData statusData = new StatusData(); + public Logfile logfile { get; private set; } + public string name { get; private set; } public string direction { get; private set; } public string queueName { get; private set; } @@ -66,17 +62,17 @@ statusData.transportEnabled = value; if (value == true) { - this.addLogEntry("Transport enabled"); + logfile.addSingleLogEntry("Transport enabled"); } else { - this.addLogEntry("Transport disabled"); + logfile.addSingleLogEntry("Transport disabled"); } } } - private LinkedList logEntries = new LinkedList(); + public Transport(TransportController controller, string name, string direction, string queueName, string mq2sqlInsertQuery, string sql2mqReadQuery, string sql2mqUpdateQuery, bool enabled) @@ -96,12 +92,13 @@ statusData.counter = 0; statusData.lastErrorMessage = statusData.lastOkTime = statusData.lastErrorTime = ""; - addLogEntry( "Starting ... " ); + logfile = new Logfile(name, controller.logDirectory); + logfile.addSingleLogEntry("Starting ... "); } ~Transport() { - addLogEntry("Stopping ... "); + logfile.addSingleLogEntry("Stopping ... "); } @@ -126,18 +123,18 @@ if (statusData.lastrunOk == true) { - statusData.lastOkTime = DaoUtil.getNowString(); + statusData.lastOkTime = Logfile.getNowString(); if (statusData.counter != startCounter) { //Vi har transporteret beskeder - så gemmer vi lige transfer tidspunktet - statusData.lastTransferTime = DaoUtil.getNowString(); + statusData.lastTransferTime = Logfile.getNowString(); } } else { - addLogEntry(statusData.lastErrorMessage); - statusData.lastErrorTime = DaoUtil.getNowString(); + logfile.addSingleLogEntry(statusData.lastErrorMessage); + statusData.lastErrorTime = Logfile.getNowString(); } } @@ -146,7 +143,7 @@ MQQueueManager mqMgr = null; MQQueue out_queue = null; - string filename = getLogFilename(LogfileType.LogTransactions); + string filename = Logfile.getLogFilename(LogfileType.LogTransactions, controller.logDirectory, name); using (StreamWriter translog = new StreamWriter(filename, true) ) try { @@ -191,7 +188,7 @@ MySqlCommand updateCmd = new MySqlCommand(updateSql, sqlWriteConnection); int numrows = updateCmd.ExecuteNonQuery(); - translog.WriteLine(DaoUtil.getNowString() + " " + msgString); + translog.WriteLine(Logfile.getNowString() + " " + msgString); if (numrows != 1) { @@ -245,8 +242,8 @@ int messageCount = 0; MQQueueManager mqMgr = null; - MQQueue in_queue = null; - string filename = getLogFilename(LogfileType.LogTransactions); + MQQueue in_queue = null; + string filename = Logfile.getLogFilename(LogfileType.LogTransactions, controller.logDirectory, name); using (StreamWriter translog = new StreamWriter(filename, true)) try { @@ -287,12 +284,12 @@ // Hvis transaktionen starter med et ? er det ikke en gyldig transaktion // validér ligeledes at headeren er gyldig - if ( msgString.StartsWith("?") || validateSalt2Header(msgString) == false ) + if ( msgString.StartsWith("?") || DaoUtil.validateSalt2Header(msgString) == false ) { - string discarded_filename = getLogFilename(LogfileType.LogDiscarded); + string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, controller.logDirectory, name); using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) { - discardedlog.WriteLine( DaoUtil.getNowString() + " " + msgString ); + discardedlog.WriteLine(Logfile.getNowString() + " " + msgString); } mqMgr.Commit();//fjern den afviste transaktion fra køen statusData.discardedCounter++; @@ -307,7 +304,7 @@ if (numrows == 1) { - translog.WriteLine( DaoUtil.getNowString() + " " + msgString ); + translog.WriteLine(Logfile.getNowString() + " " + msgString); mqMgr.Commit(); statusData.counter++; @@ -370,7 +367,7 @@ } catch (Exception e2) { - this.addLogEntry("Error backing out from MQ Transaction: " + e2.Message); + logfile.addSingleLogEntry("Error backing out from MQ Transaction: " + e2.Message); } statusData.lastrunOk = false; @@ -432,130 +429,5 @@ } - - private string getLogFilename(LogfileType type) - { - - DateTime now = DateTime.Now; - string filename = controller.logDirectory + "\\"; - - //Find uge nr - DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; - Calendar myCal = CultureInfo.InvariantCulture.Calendar;//System.Globalization - int week = myCal.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek); - - switch (type) - { - case LogfileType.LogEvents: - filename += "eventlog_"; - break; - - case LogfileType.LogTransactions: - filename += "transactionlog_"; - break; - case LogfileType.LogDiscarded: - filename += "discardedlog_"; - break; - } - - - filename += name + "_" + now.Year.ToString("D4") + "_W" + week.ToString("D2") + ".log"; - - return filename; - } - - private bool validateSalt2Header(string salt2String) - { - if (salt2String.Length < 66) - { - addLogEntry("Transaction too short - discarding"); - return false; - } - - - int result; - long result_long; - - string afsender = salt2String.Substring(0, 5); - string modtager = salt2String.Substring(5, 5); - string afsenderTegnSaet = salt2String.Substring(10, 6); - string standardNavn = salt2String.Substring(16, 6); - string standardVersion = salt2String.Substring(22, 3); - string afsenderSekvensnr = salt2String.Substring(25, 6); - string afsenderTidsstempel = salt2String.Substring(31, 14); - string afsenderBakkeIdent = salt2String.Substring(45, 5); - string modtagerBakkeIdent = salt2String.Substring(50, 5); - string transaktionForkortelse = salt2String.Substring(55, 4); - string transaktionsLaengde = salt2String.Substring(59, 5); - string prioritet = salt2String.Substring(64, 1); - - - - if (int.TryParse(standardVersion.Trim(), out result) == false) // standardVersion _skal_ være en int - { - addLogEntry("standardVersion not an integer, discarding"); - return false; - } - - if (int.TryParse(afsenderSekvensnr.Trim(), out result) == false) // afsenderSekvensnr _skal_ være en int - { - addLogEntry("afsenderSekvensnr not an integer, discarding"); - return false; - } - - if (long.TryParse(afsenderTidsstempel.Trim(), out result_long) == false) // afsenderTidsstempel _skal_ være en long - { - addLogEntry("afsenderTidsstempel not a long integer, discarding"); - return false; - } - - if (int.TryParse(transaktionsLaengde.Trim(), out result) == false) // transaktionsLaengde _skal_ være en int - { - addLogEntry("transaktionsLaengde not an integer, discarding"); - return false; - } - - if ( int.TryParse(prioritet.Trim(), out result) == false ) // prioritet _skal_ være en int - { - addLogEntry("prioritet not an integer, discarding"); - return false; - } - - return true; - } - - private void addLogEntry(string msg) - { - msg = DaoUtil.getNowString() + " " + msg; - lock (logEntries) - { - logEntries.AddFirst(msg); - - if (logEntries.Count > 20) - { - logEntries.RemoveLast(); - } - } - - string filename = getLogFilename(LogfileType.LogEvents); - using (StreamWriter eventlog = new StreamWriter(filename, true)) - { - eventlog.WriteLine(msg); - } - } - - public string[] getLog() - { - lock(logEntries) - { - List tmpEntries = new List(); - foreach (string s in logEntries) - { - tmpEntries.Add(s); - } - return tmpEntries.ToArray(); - } - } - } }