public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval = null)
        {
            var maskIntervals    = mask.GetIntervals(interval);
            var contentIntervals = payload.GetIntervals(interval);

            return(TimeMathOld.Intersection(contentIntervals, maskIntervals).OrderBy(i => i.Start));
        }
Example #2
0
        protected override IEnumerable <LocalInterval> GetLocalIntervalsBase(LocalInterval interval = null)
        {
            if (interval == null)
            {
                interval = new LocalInterval(Start, End);
            }
            if (!interval.Start.HasValue || !interval.End.HasValue)
            {
                throw new ArgumentOutOfRangeException("interval", "Cannot request shift for an unbounded date range");
            }

            LocalDate currDate = (interval.Start.Value.Date < Start) ? Start : interval.Start.Value.Date;

            while (currDate <= interval.End.Value.Date)
            {
                foreach (LocalTimeInterval timeInterval in GetDayPattern(currDate).ToList())
                {
                    var start = currDate + timeInterval.Start;
                    var end   = currDate + timeInterval.End;

                    yield return(new LocalInterval(start, end, null, timeInterval.Name));
                }

                currDate = currDate.PlusDays(1);
            }
        }
Example #3
0
        private IEnumerable <LocalInterval> GetLocalIntervals(LocalInterval interval = null)
        {
            var ints = GetLocalIntervalsBase(interval);

            ints = isNot ? Not(ints) : ints;
            return(ints);
        }
        public virtual IEnumerable <LocalInterval> GetIntervals(LocalInterval interval, DateTimeZone destinationTimezone)
        {
            var maskIntervals    = mask.GetIntervals(interval, destinationTimezone);
            var contentIntervals = payload.GetIntervals(interval, destinationTimezone);

            return(TimeMathOld.Intersection(contentIntervals, maskIntervals).OrderBy(i => i.Start));
        }
Example #5
0
        protected virtual IEnumerable <LocalInterval> GetLocalIntervalsBase(LocalInterval interval = null)
        {
            if (interval == null)
            {
                return(mask.Select(i => i.Clone()));
            }
            if (!interval.Start.HasValue || !interval.End.HasValue)
            {
                throw new ArgumentOutOfRangeException("interval", "Cannot request holidays for an unbounded range");
            }

            return(TimeMathOld.Intersection(mask, interval));
        }
Example #6
0
        public void Add_Before()
        {
            // Arrange
            var timeline1 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 4, 0, 0), new LocalDateTime(2008, 1, 8, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m)));
            var timeline2 = new TimelinePayload <KeyCountPayload>(new LocalInterval(new LocalDateTime(2008, 1, 1, 0, 0), new LocalDateTime(2008, 1, 3, 0, 0)).AddPayload(new KeyCountPayload("Craft", 1.5m)));

            // Act
            var actual = (timeline1 + timeline2).GetIntervals();

            // Assert
            var expected = new LocalInterval[]
            {
                TimeBuilder.From(2008, 1, 1).To(2008, 1, 3).Payload("Craft", 1.5m).Interval,
                TimeBuilder.From(2008, 1, 4).To(2008, 1, 8).Payload("Craft", 1.5m).Interval,
            };

            Assert.That(TimeMath.Equals(expected, actual), Is.True);
        }
Example #7
0
        public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval = null)
        {
            if (layers.Count == 0)
            {
                return(GetLocalIntervals(interval));
            }

            List <LocalInterval> currIntervals = GetLocalIntervals(interval).ToList();
            var currTimeline = new TimelineMask(Timezone, currIntervals);

            foreach (var layer in layers)
            {
                var nextIntervals = layer.Value.GetIntervals(interval, Timezone).ToList();

                var flat = layer.Key(currIntervals, nextIntervals).ToList();
                currTimeline  = new TimelineMask(Timezone, flat);
                currIntervals = currTimeline.GetIntervals(interval, Timezone).ToList();
            }

            return(currTimeline.GetIntervals(interval));
        }
 public OverlappingIntervals(LocalInterval interval)
 {
     Add(interval);
 }
        private static void LogTimeline(string heading, ITimeline timeline, DateTimeZone timezone)
        {
            var queryInterval = new LocalInterval(new LocalDate(2014, 12, 22), new LocalDate(2014, 12, 28));

            LogTimeline(heading, timeline.GetIntervals(queryInterval, timezone));
        }
Example #10
0
        public IEnumerable <LocalInterval> GetIntervals(LocalInterval interval, DateTimeZone destinationTimezone)
        {
            var ints = GetIntervals(interval);

            return(ints.Select(i => i.Map(Timezone, destinationTimezone)));
        }
Example #11
0
 public TimelineMask(DateTimeZone timezone, LocalInterval interval) : this(timezone, new NonOverlappingIntervals(interval))
 {
 }