예제 #1
0
        public TimeSpan CalculateTimeToLongerEvent()
        {
            ArffEvent previousWork = (ArffEvent)Previous;

            while (previousWork != null)
            {
                if (previousWork.Duration > Duration)
                {
                    break;
                }
                else
                {
                    previousWork = (ArffEvent)previousWork.Previous;
                }
            }

            ArffEvent nextWork = (ArffEvent)Next;

            while (nextWork != null)
            {
                if (nextWork.Duration > Duration)
                {
                    break;
                }
                else
                {
                    nextWork = (ArffEvent)nextWork.Next;
                }
            }

            if (previousWork == null && nextWork == null)
            {
                return(MaxDuration);
            }
            if (previousWork == null)
            {
                return(nextWork.StartTime.Subtract(StartTime));
            }
            if (nextWork == null)
            {
                return(StartTime.Subtract(previousWork.StartTime));
            }
            else
            {
                return((StartTime.Subtract(previousWork.StartTime) < nextWork.StartTime.Subtract(StartTime)) ?
                       StartTime.Subtract(previousWork.StartTime)
                    : nextWork.StartTime.Subtract(StartTime));
            }
        }
예제 #2
0
        public EventsArff Load(Events events)
        {
            EventsArff eventsArff = new EventsArff();

            IEnumerable <Event> eventsSortedChannel = Enumerable.OrderBy(events, n => n.Channel);
            IEnumerable <Event> eventsSorted        = Enumerable.OrderBy(eventsSortedChannel, n => n.StartTime);

            foreach (Event @event in eventsSorted)
            {
                ArffEvent eventArff = new ArffEvent(@event, events.Duration);
                eventsArff.Add(eventArff);
            }

            eventsArff.UpdateLinkedList();
            eventsArff.CalculateProperties();
            eventsArff.UpdateOriginalVolume();

            return(eventsArff);
        }