--- dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/16 21:50:17 2171 +++ dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/19 11:59:45 2175 @@ -45,21 +45,33 @@ //Læser globale MQ Parametre mqHost = (string)key.GetValue("MQHost"); if (mqHost == null || mqHost.Length == 0) + { + key.SetValue("MQHost", "", RegistryValueKind.String); throw new System.ArgumentException("MQHost cannot be null or empty"); + } mqChannel = (string)key.GetValue("MQChannel"); if (mqChannel == null || mqChannel.Length == 0) + { + key.SetValue("MQChannel", "", RegistryValueKind.String); throw new System.ArgumentException("MQChannel cannot be null or empty"); + } mqQueueManager = (string)key.GetValue("MQQueueManager"); if (mqQueueManager == null || mqQueueManager.Length == 0) + { + key.SetValue("MQQueueManager", "", RegistryValueKind.String); throw new System.ArgumentException("MQQueueManager cannot be null or empty"); + } //////////// logDirectory = (string)key.GetValue("LogDirectory"); if (logDirectory == null || logDirectory.Length == 0) + { + key.SetValue("LogDirectory", "", RegistryValueKind.String); throw new System.ArgumentException("LogDirectory cannot be null or empty"); + } if (Directory.Exists(logDirectory) == false) { @@ -70,12 +82,16 @@ String tmpFilterTransactions = (string)key.GetValue("FilterTransactions"); if (tmpFilterTransactions == null || tmpFilterTransactions.Length == 0) + { + key.SetValue("FilterTransactions", "", RegistryValueKind.String); throw new System.ArgumentException("FilterTransactions cannot be null or empty"); + } + tmpFilterTransactions = tmpFilterTransactions.Replace(';', ','); filterTranscations = Regex.Split(tmpFilterTransactions, ","); for (int i = 0; i < filterTranscations.Length; i++) { - filterTranscations[i] = filterTranscations[i].Trim(); + filterTranscations[i] = filterTranscations[i].Trim().ToUpper(); } //////////// @@ -83,14 +99,7 @@ } - private Hashtable getConnectionProperties() - { - Hashtable connProperties = new Hashtable(); - connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT); - connProperties.Add(MQC.HOST_NAME_PROPERTY, mqHost); - connProperties.Add(MQC.CHANNEL_PROPERTY, mqChannel); - return connProperties; - } + public void transportAllMessages() @@ -105,7 +114,7 @@ try { //MQ options - Hashtable connProps = getConnectionProperties(); + Hashtable connProps = MQHelper.getConnectionProperties(mqHost, mqChannel); int openInputOptions = MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING; int openOutputOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING; @@ -113,11 +122,12 @@ //MQ objects i v6 implementerer ikke IDisposable og kan derfor ikke bruges med "using" statement mqMgr = new MQQueueManager(mqQueueManager, connProps);//stage 1 connect to mq - queueIndbakke = mqMgr.AccessQueue(queueNameIndbakke, openInputOptions); - queueMysql = mqMgr.AccessQueue(queueNameMysql, openOutputOptions); - queueDimaps = mqMgr.AccessQueue(queueNameDimaps, openOutputOptions); - queueStore = mqMgr.AccessQueue(queueNameStore, openOutputOptions); + queueIndbakke = MQHelper.openQueueHelper(queueNameIndbakke, mqMgr, openInputOptions); + + queueMysql = MQHelper.openQueueHelper(queueNameMysql, mqMgr, openOutputOptions); + queueDimaps = MQHelper.openQueueHelper(queueNameDimaps, mqMgr, openOutputOptions); + queueStore = MQHelper.openQueueHelper(queueNameStore, mqMgr, openOutputOptions); bool isContinue = true; @@ -133,18 +143,17 @@ queueIndbakke.Get(mqMsg, mqGetMsgOpts); if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0) { - string saltiiString = mqMsg.ReadString(mqMsg.MessageLength); + string salt2String = mqMsg.ReadString(mqMsg.MessageLength); //System.Console.WriteLine(msgString); - // Hvis transaktionen starter med et ? er det ikke en gyldig transaktion - // validér ligeledes at headeren er gyldig - if (saltiiString.StartsWith("?") || Salt2Helper.validateSalt2Header(saltiiString) == false) + // validér at headeren er gyldig + if ( Salt2Helper.validateSalt2Header(salt2String) == false) { string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, logDirectory, "filter"); using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) { - discardedlog.WriteLine(Logfile.getNowString() + " " + saltiiString); + discardedlog.WriteLine(Logfile.getNowString() + " " + salt2String); } continue; //gå frem til at tage næste transaktion fra køen } @@ -155,9 +164,9 @@ MQMessage msg = new MQMessage(); msg.Format = MQC.MQFMT_STRING; msg.CharacterSet = 1252; - msg.WriteString(saltiiString); + msg.WriteString(salt2String); - Salt2Header header = Salt2Helper.parseHeader(saltiiString); + Salt2Header header = Salt2Helper.parseHeader(salt2String); queueMysql.Put(msg, pmo); if (saveForLater(header)) { @@ -211,34 +220,24 @@ } finally { - closeQueue(queueIndbakke); - closeQueue(queueMysql); - closeQueue(queueDimaps); - closeQueue(queueStore); + MQHelper.closeQueueSafe(queueIndbakke); + MQHelper.closeQueueSafe(queueMysql); + MQHelper.closeQueueSafe(queueDimaps); + MQHelper.closeQueueSafe(queueStore); - - if (mqMgr != null && mqMgr.IsOpen) - { - try - { - mqMgr.Close(); - } - catch (Exception e) - { - Console.WriteLine("Error cleaning up qmgr " + e.Message); - } - } + MQHelper.closeQueueManagerSafe(mqMgr); } } private Boolean saveForLater(Salt2Header header) { + DateTime now = DateTime.Now; int hour = now.Hour; if (hour >= 14 && hour < 18) { - if (contains(header.transaktionForkortelse, this.filterTranscations) ) //Så længe vi skal være net3.0 kompatible er LINQ problematisk + if (contains(header.transaktionForkortelse, this.filterTranscations) ) //Så længe vi skal være .net3.0 kompatible er LINQ problematisk (LINQ kræver 3.5) { return true; } @@ -267,21 +266,6 @@ return false; } - private void closeQueue(MQQueue queue) - { - if (queue != null && queue.IsOpen) - { - try - { - queue.Close(); - } - catch (Exception e) - { - Console.WriteLine("Error cleaning up queue " + e.Message); - } - } - - }