Exemplo n.º 1
0
        public void UniqueConstrainShouldKeepOutDuplicateRecordsTest()
        {
            MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = CreateTableObject(true);

            MOE.Common.Data.MOE.Controller_Event_LogRow eventrow1 = elTable.NewController_Event_LogRow();



            eventrow1.Timestamp  = DateTime.Now;
            eventrow1.SignalID   = "101";
            eventrow1.EventCode  = 1;
            eventrow1.EventParam = 1;


            MOE.Common.Data.MOE.Controller_Event_LogRow eventrow2 = elTable.NewController_Event_LogRow();



            eventrow2.Timestamp  = eventrow1.Timestamp;
            eventrow2.SignalID   = eventrow1.SignalID;
            eventrow2.EventCode  = eventrow1.EventCode;
            eventrow2.EventParam = eventrow1.EventParam;

            elTable.AddController_Event_LogRow(eventrow1);

            try
            {
                elTable.AddController_Event_LogRow(eventrow2);
            }
            catch
            {
            }

            Assert.IsTrue(elTable.Count == 1);
        }
Exemplo n.º 2
0
        private static void SaveToDB(XmlDocument xml, string SignalId)
        {
            System.Collections.Specialized.NameValueCollection appSettings = ConfigurationManager.AppSettings;
            string destTable = appSettings["DestinationTableName"];

            MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = new MOE.Common.Data.MOE.Controller_Event_LogDataTable();
            UniqueConstraint custUnique =
                new UniqueConstraint(new DataColumn[] { elTable.Columns["SignalID"],
                                                        elTable.Columns["Timestamp"],
                                                        elTable.Columns["EventCode"],
                                                        elTable.Columns["EventParam"] });

            elTable.Constraints.Add(custUnique);

            XmlNodeList list = xml.SelectNodes("/EventResponses/EventResponse/Event");

            foreach (XmlNode node in list)
            {
                XmlAttributeCollection attrColl = node.Attributes;

                DateTime EventTime  = new DateTime();
                int      EventCode  = 0;
                int      EventParam = 0;
                DateTime.TryParse(attrColl.GetNamedItem("TimeStamp").Value, out EventTime);
                int.TryParse(attrColl.GetNamedItem("EventTypeID").Value, out EventCode);
                int.TryParse(attrColl.GetNamedItem("Parameter").Value, out EventParam);

                try
                {
                    MOE.Common.Data.MOE.Controller_Event_LogRow eventrow = elTable.NewController_Event_LogRow();


                    eventrow.Timestamp  = EventTime;
                    eventrow.SignalID   = SignalId;
                    eventrow.EventCode  = EventCode;
                    eventrow.EventParam = EventParam;
                    if (eventrow.Timestamp > Properties.Settings.Default.EarliestAcceptableDate)
                    {
                        elTable.AddController_Event_LogRow(eventrow);
                    }
                }
                catch
                {
                }
            }
            MOE.Common.Business.BulkCopyOptions Options = new MOE.Common.Business.BulkCopyOptions(ConfigurationManager.ConnectionStrings["SPM"].ConnectionString, Properties.Settings.Default.DestinationTableName,
                                                                                                  Properties.Settings.Default.WriteToConsole, Properties.Settings.Default.forceNonParallel, Properties.Settings.Default.MaxThreads, false,
                                                                                                  Properties.Settings.Default.EarliestAcceptableDate, Properties.Settings.Default.BulkCopyBatchSize, Properties.Settings.Default.BulkCopyTimeOut);

            MOE.Common.Business.SignalFtp.BulktoDb(elTable, Options, destTable);
        }
Exemplo n.º 3
0
        public void CopyFromBlockingCollectionIntoConstrainedTableMustNotFailTest()
        {
            var mergedEventsTable = new BlockingCollection <MOE.Common.Data.MOE.Controller_Event_LogRow>();

            MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = CreateTableObject(true);

            MOE.Common.Data.MOE.Controller_Event_LogRow eventrow1 = elTable.NewController_Event_LogRow();
            eventrow1.Timestamp  = DateTime.Now;
            eventrow1.SignalID   = "101";
            eventrow1.EventCode  = 1;
            eventrow1.EventParam = 1;


            MOE.Common.Data.MOE.Controller_Event_LogRow eventrow2 = elTable.NewController_Event_LogRow();
            eventrow2.Timestamp  = eventrow1.Timestamp;
            eventrow2.SignalID   = eventrow1.SignalID;
            eventrow2.EventCode  = eventrow1.EventCode;
            eventrow2.EventParam = eventrow1.EventParam;

            MOE.Common.Data.MOE.Controller_Event_LogRow eventrow3 = elTable.NewController_Event_LogRow();
            eventrow3.Timestamp  = DateTime.Now;
            eventrow3.SignalID   = "103";
            eventrow3.EventCode  = 3;
            eventrow3.EventParam = 3;

            mergedEventsTable.Add(eventrow1);
            mergedEventsTable.Add(eventrow2);
            mergedEventsTable.Add(eventrow3);



            //mergedEventsTable.CopyToDataTable(elTable, LoadOption.PreserveChanges);

            foreach (var r in mergedEventsTable)
            {
                try
                {
                    elTable.AddController_Event_LogRow(r);
                }
                catch { }
            }

            Assert.IsTrue(elTable.Count == 2);
        }
Exemplo n.º 4
0
        private static void SaveToDB(XmlDocument xml, string SignalId)
        {
            MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = new MOE.Common.Data.MOE.Controller_Event_LogDataTable();
            UniqueConstraint custUnique =
                new UniqueConstraint(new DataColumn[] { elTable.Columns["SignalID"],
                                                        elTable.Columns["Timestamp"],
                                                        elTable.Columns["EventCode"],
                                                        elTable.Columns["EventParam"] });

            elTable.Constraints.Add(custUnique);

            XmlNodeList list = xml.SelectNodes("/EventResponses/EventResponse/Event");

            foreach (XmlNode node in list)
            {
                XmlAttributeCollection attrColl = node.Attributes;

                DateTime EventTime  = Convert.ToDateTime(attrColl.GetNamedItem("TimeStamp").Value);
                int      EventCode  = Convert.ToInt32(attrColl.GetNamedItem("EventTypeID").Value);
                int      EventParam = Convert.ToInt32(attrColl.GetNamedItem("Parameter").Value);

                try
                {
                    MOE.Common.Data.MOE.Controller_Event_LogRow eventrow = elTable.NewController_Event_LogRow();


                    eventrow.Timestamp  = EventTime;
                    eventrow.SignalID   = SignalId;
                    eventrow.EventCode  = EventCode;
                    eventrow.EventParam = EventParam;

                    elTable.AddController_Event_LogRow(eventrow);
                }
                catch
                {
                }
            }
            MOE.Common.Business.BulkCopyOptions Options = new MOE.Common.Business.BulkCopyOptions(Properties.Settings.Default.SPM, Properties.Settings.Default.DestinationTableName,
                                                                                                  Properties.Settings.Default.WriteToConsole, Properties.Settings.Default.forceNonParallel, Properties.Settings.Default.MaxThreads, false,
                                                                                                  Properties.Settings.Default.EarliestAcceptableDate, Properties.Settings.Default.BulkCopyBatchSize, Properties.Settings.Default.BulkCopyTimeOut);

            MOE.Common.Business.Signal.BulktoDB(elTable, Options);
        }
Exemplo n.º 5
0
        public void DoesCopyTakeLongerThanForEach()
        {
            var mergedEventsTable = new BlockingCollection <MOE.Common.Data.MOE.Controller_Event_LogRow>();

            MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = CreateTableObject(true);

            for (int i = 0; i < 100000; i++)
            {
                MOE.Common.Data.MOE.Controller_Event_LogRow eventrow1 = elTable.NewController_Event_LogRow();
                eventrow1.Timestamp  = DateTime.Now;
                eventrow1.SignalID   = "101";
                eventrow1.EventCode  = rnd.Next(1, 256);
                eventrow1.EventParam = rnd.Next(1, 256);


                mergedEventsTable.Add(eventrow1);
            }

            DateTime startCopy = DateTime.Now;

            try
            {
                mergedEventsTable.CopyToDataTable(elTable, LoadOption.PreserveChanges);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            if (elTable.Count != mergedEventsTable.Count)
            {
                Assert.Fail("The copy method didn't work");
            }

            elTable.Clear();

            DateTime endCopy = DateTime.Now;

            DateTime startForEach = DateTime.Now;

            foreach (var r in mergedEventsTable)
            {
                try
                {
                    elTable.AddController_Event_LogRow(r);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }


            if (elTable.Count != mergedEventsTable.Count)
            {
                Assert.Fail("The foreach method didn't work");
            }


            DateTime endForEach = DateTime.Now;

            var copyDiff    = (endCopy - startCopy);
            var forEachDiff = (endForEach - startForEach);

            Assert.IsTrue(forEachDiff < copyDiff);
        }
Exemplo n.º 6
0
        //static public MOE.Common.Data.MOE.Controller_Event_LogDataTable DecodeASC3File(string FileName, string SignalId)
        static public void DecodeASC3File(string FileName, string SignalId, BlockingCollection <MOE.Common.Data.MOE.Controller_Event_LogRow> RowBag)
        {
            DateTime EarliestAcceptableDate = Properties.Settings.Default.EarliestAcceptableDate;

            System.Text.Encoding encoding = System.Text.Encoding.ASCII;
            using (BinaryReader BR = new BinaryReader(File.Open(FileName, FileMode.Open), encoding))
            {
                MOE.Common.Data.MOE.Controller_Event_LogDataTable elTable = new MOE.Common.Data.MOE.Controller_Event_LogDataTable();
                UniqueConstraint custUnique =
                    new UniqueConstraint(new DataColumn[] { elTable.Columns["SignalID"],
                                                            elTable.Columns["Timestamp"],
                                                            elTable.Columns["EventCode"],
                                                            elTable.Columns["EventParam"] });

                elTable.Constraints.Add(custUnique);

                if (BR.BaseStream.Position + 21 < BR.BaseStream.Length)
                {
                    //Find the start Date
                    String dateString = "";
                    for (int i = 1; i < 21; i++)
                    {
                        Char c = BR.ReadChar();
                        dateString += c;
                    }

                    //Console.WriteLine(dateString);
                    DateTime StartTime = new DateTime();
                    if (DateTime.TryParse(dateString, out StartTime) && (BR.BaseStream.Position < BR.BaseStream.Length))
                    {
                        //find  line feed characters, that should take us to the end of the header.
                        // First line break is after Version
                        // Second LF is after FileName
                        // Third LF is after Interseciton number, which isn't used as far as I can tell
                        // Fourth LF is after IP address
                        // Fifth is after MAC Address
                        // Sixth is after "Controller data log beginning:," and then the date
                        // Seven is after "Phases in use:," and then the list of phases, seperated by commas

                        int i = 0;

                        while (i < 7 && (BR.BaseStream.Position < BR.BaseStream.Length))
                        {
                            Char c = BR.ReadChar();
                            //Console.WriteLine(c.ToString());
                            if (c == '\n')
                            {
                                i++;
                            }
                        }

                        //The first record alwasy seems to be missing a timestamp.  Econolite assumes the first even occures at the same time
                        // the second event occurs.  I am going to tag the first event with secondevet.timestamp - 1/10 second
                        int firstEventCode  = new Int32();
                        int firstEventParam = new Int32();


                        if (BR.BaseStream.Position + sizeof(char) < BR.BaseStream.Length)
                        {
                            firstEventCode = Convert.ToInt32(BR.ReadChar());
                        }

                        if (BR.BaseStream.Position + sizeof(char) < BR.BaseStream.Length)
                        {
                            firstEventParam = Convert.ToInt32(BR.ReadChar());
                        }

                        bool firstEventEntered = false;
                        //MOE.Common.Business.ControllerEvent firstEvent = new MOE.Common.Business.ControllerEvent(SignalID, StartTime, firstEventCode, firstEventParam);


                        //After that, we can probably start reading
                        while ((BR.BaseStream.Position + (sizeof(byte) * 4)) <= BR.BaseStream.Length)  //we need ot make sure we are more that 4 characters from the end
                        {
                            DateTime EventTime  = new DateTime();
                            int      EventCode  = new Int32();
                            int      EventParam = new Int32();

                            //MOE.Common.Business.ControllerEvent controllerEvent = null;
                            for (int EventPart = 1; EventPart < 4; EventPart++)
                            {
                                //getting the time offset
                                if (EventPart == 1)
                                {
                                    byte[] rawoffset = new byte[2];
                                    //char[] offset = new char[2];
                                    rawoffset = BR.ReadBytes(2);
                                    Array.Reverse(rawoffset);
                                    int offset = BitConverter.ToInt16(rawoffset, 0);

                                    double tenths = Convert.ToDouble(offset) / 10;

                                    EventTime = StartTime.AddSeconds(tenths);
                                }

                                //getting the EventCode
                                if (EventPart == 2)
                                {
                                    //Char EventCodeChar = BR.ReadChar();
                                    //EventCode = Convert.ToInt32(BR.ReadChar());
                                    EventCode = Convert.ToInt32(BR.ReadByte());
                                }

                                if (EventPart == 3)
                                {
                                    //Char EventParamChar = BR.ReadChar();
                                    //EventParam = Convert.ToInt32(BR.ReadChar());
                                    EventParam = Convert.ToInt32(BR.ReadByte());
                                }
                            }

                            //controllerEvent = new MOE.Common.Business.ControllerEvent(SignalID, EventTime, EventCode, EventParam);

                            if ((EventTime) <= DateTime.Now && (EventTime > EarliestAcceptableDate))
                            {
                                if (!firstEventEntered)
                                {
                                    try
                                    {
                                        MOE.Common.Data.MOE.Controller_Event_LogRow eventrow = elTable.NewController_Event_LogRow();
                                        eventrow.Timestamp  = EventTime.AddMilliseconds(-1);
                                        eventrow.SignalID   = SignalId;
                                        eventrow.EventCode  = firstEventCode;
                                        eventrow.EventParam = firstEventParam;
                                        if (!RowBag.Contains(eventrow))
                                        {
                                            RowBag.Add(eventrow);
                                        }
                                        //elTable.AddController_Event_LogRow(SignalID, EventTime.AddMilliseconds(-1), firstEventCode, firstEventParam);
                                    }
                                    catch
                                    {
                                    }

                                    firstEventEntered = true;
                                }
                                else
                                {
                                    try
                                    {
                                        MOE.Common.Data.MOE.Controller_Event_LogRow eventrow = elTable.NewController_Event_LogRow();
                                        eventrow.Timestamp  = EventTime;
                                        eventrow.SignalID   = SignalId;
                                        eventrow.EventCode  = EventCode;
                                        eventrow.EventParam = EventParam;

                                        if (!RowBag.Contains(eventrow))
                                        {
                                            RowBag.Add(eventrow);
                                        }
                                        //elTable.AddController_Event_LogRow(Convert.ToInt32(SignalID), EventTime, EventCode, EventParam);
                                    }
                                    catch
                                    {
                                    }
                                }
                            }
                        }
                    }
                    //this is what we do when the datestring doesn't parse
                    else
                    {
                        // return false;
                    }
                }

                //this is what we do when the datestring doesn't parse
                else
                {
                    //return false;
                }



                //return true;
            }
        }