Exemple #1
0
        public TimeLine(ITimePeriodContainer periods, ITimePeriod limits, ITimePeriodMapper periodMapper)
        {
            periods.ShouldNotBeNull("periods");

            Periods      = periods;
            Limits       = (limits != null) ? new TimeRange(limits) : new TimeRange(periods);
            PeriodMapper = periodMapper;
        }
        /// <summary>
        /// <paramref name="limits"/> 기간내에서 <paramref name="excludedPeriods"/> 컬렉션의 기간들을 제외한 기간(Gap)을 계산해 낸다.
        /// </summary>
        /// <param name="excludedPeriods">제외할 기간들을 나타냅니다.</param>
        /// <param name="limits">전체 범위를 나타냅니다 (null이면 무한대의 범위를 나타냅니다)</param>
        /// <returns></returns>
        public virtual ITimePeriodCollection GetGaps(ITimePeriodContainer excludedPeriods, ITimePeriod limits = null)
        {
            excludedPeriods.ShouldNotBeNull("periods");

            if (IsDebugEnabled)
            {
                log.Debug("Period들의 Gap들을 계산합니다... excludedPeriods=[{0}], limits=[{1}]", excludedPeriods, limits);
            }

            var timeLine = new TimeLine <T>(excludedPeriods, limits, PeriodMapper);

            return(timeLine.CalcuateGaps());
        }
        /// <summary>
        /// <paramref name="periods"/>의 기간들을 결합하여, <see cref="ITimePeriodCollection"/>을 생성합니다.
        /// </summary>
        /// <param name="periods"></param>
        /// <returns></returns>
        public virtual ITimePeriodCollection CombinePeriods(ITimePeriodContainer periods)
        {
            periods.ShouldNotBeNull("periods");

            return(new TimeLine <T>(periods, PeriodMapper).CombinePeriods());
        }