--- dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/16 21:10:02 2169 +++ dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/16 21:50:17 2171 @@ -133,26 +133,40 @@ queueIndbakke.Get(mqMsg, mqGetMsgOpts); if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0) { - string msgString = mqMsg.ReadString(mqMsg.MessageLength); + string saltiiString = 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 (msgString.StartsWith("?") || Salt2Helper.validateSalt2Header(msgString) == false) + if (saltiiString.StartsWith("?") || Salt2Helper.validateSalt2Header(saltiiString) == false) { string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, logDirectory, "filter"); using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) { - discardedlog.WriteLine(Logfile.getNowString() + " " + msgString); + discardedlog.WriteLine(Logfile.getNowString() + " " + saltiiString); } continue; //gå frem til at tage næste transaktion fra køen } + MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults, + // same as MQPMO_DEFAULT - - - + MQMessage msg = new MQMessage(); + msg.Format = MQC.MQFMT_STRING; + msg.CharacterSet = 1252; + msg.WriteString(saltiiString); + + Salt2Header header = Salt2Helper.parseHeader(saltiiString); + queueMysql.Put(msg, pmo); + if (saveForLater(header)) + { + queueStore.Put(msg, pmo); + } + else + { + queueDimaps.Put(msg, pmo); + } @@ -217,6 +231,42 @@ } } + 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 + { + return true; + } + else + { + return false; + } + } + else //normal operation - send straight trough + { + return false; + } + + } + + private bool contains(string needle, string[] haystack) // s + { + foreach(string hay in haystack) + { + if (needle.Equals(hay)) + { + return true; + } + } + + return false; + } + private void closeQueue(MQQueue queue) { if (queue != null && queue.IsOpen)