GetYears() public method

public GetYears ( ) : ITimePeriodCollection
return ITimePeriodCollection
Beispiel #1
0
        public void SingleYearsTest()
        {
            const int startYear = 2004;
            Years years = new Years( startYear, 1 );

            Assert.AreEqual( years.YearCount, 1 );
            Assert.AreEqual( years.StartYear, startYear );
            Assert.AreEqual( years.EndYear, startYear );
            Assert.AreEqual( years.GetYears().Count, 1 );
            Assert.IsTrue( years.GetYears()[ 0 ].IsSamePeriod( new Year( startYear ) ) );
        }
Beispiel #2
0
        // ----------------------------------------------------------------------
        public static void ShowAll( int periodCount, int startYear, TimeCalendarConfig calendarConfig )
        {
            WriteLine( "Input: count={0}, year={1}", periodCount, startYear );
            WriteLine( "Calendar: base-month={0}, week-type={1}, culture={2}", calendarConfig.YearBaseMonth,  calendarConfig.YearWeekType, calendarConfig.Culture.Name );

            WriteLine();

            YearTimeRange yearTimeRange;
            if ( periodCount == 1 )
            {
                Year year = new Year( startYear, new TimeCalendar( calendarConfig ) );
                yearTimeRange = year;

                Year previousYear = year.GetPreviousYear();
                Year nextYears = year.GetNextYear();

                ShowYear( year );
                ShowCompactYear( previousYear, "Previous Year" );
                ShowCompactYear( nextYears, "Next Year" );
                WriteLine();
            }
            else
            {
                Years years = new Years( startYear, periodCount, new TimeCalendar( calendarConfig ) );
                yearTimeRange = years;

                ShowYears( years );
                WriteLine();

                foreach ( Year year in years.GetYears() )
                {
                    ShowCompactYear( year );
                }
                WriteLine();
            }

            foreach ( Halfyear halfyear in yearTimeRange.GetHalfyears() )
            {
                HalfyearDemo.ShowCompactHalfyear( halfyear );
            }
            WriteLine();
            foreach ( Quarter quarter in yearTimeRange.GetQuarters() )
            {
                QuarterDemo.ShowCompactQuarter( quarter );
            }
            WriteLine();
            foreach ( Month month in yearTimeRange.GetMonths() )
            {
                MonthDemo.ShowCompactMonth( month );
            }
            WriteLine();
        }
        }         // EnterHours

        // ----------------------------------------------------------------------
        protected override bool OnVisitYears(Years years, CalendarPeriodCollectorContext context)
        {
            if (context.Scope != CalendarPeriodCollectorContext.CollectType.Year)
            {
                return(true);                // continue
            }

            foreach (Year year in years.GetYears())
            {
                if (IsMatchingYear(year, context) && CheckLimits(year))
                {
                    periods.Add(year);
                }
            }
            return(false); // abort
        }                  // OnVisitYears
Beispiel #4
0
        public void DefaultCalendarYearsTest()
        {
            const int startYear = 2004;
            const int yearCount = 3;
            Years years = new Years( startYear, yearCount );

            Assert.AreEqual( years.YearCount, yearCount );
            Assert.AreEqual( years.StartYear, startYear );
            Assert.AreEqual( years.EndYear, startYear + yearCount - 1 );

            int index = 0;
            foreach ( Year year in years.GetYears() )
            {
                Assert.IsTrue( year.IsSamePeriod( new Year( startYear + index ) ) );
                index++;
            }
        }
Beispiel #5
0
        public void CustomCalendarYearsTest()
        {
            const int startYear = 2004;
            const int yearCount = 3;
            const int startMonth = 4;
            Years years = new Years( startYear, yearCount, TimeCalendar.New( (YearMonth)startMonth ) );

            Assert.AreEqual( years.YearCount, yearCount );
            Assert.AreEqual( years.StartYear, startYear );
            Assert.AreEqual( years.EndYear, startYear + yearCount );

            int index = 0;
            foreach ( Year year in years.GetYears() )
            {
                Assert.AreEqual( year.Start, new DateTime( startYear + index, startMonth, 1 ) );
                index++;
            }
        }
Beispiel #6
0
        public void YearStartSample()
        {
            TimeCalendar calendar = new TimeCalendar(
                new TimeCalendarConfig { YearBaseMonth = YearMonth.February } );

            Years years = new Years( 2012, 2, calendar ); // 2012-2013
            Console.WriteLine( "Quarters of Years (February): {0}", years );
            // > Quarters of Years (February): 2012 - 2014; 01.02.2012 - 31.01.2014 | 730.23:59

            foreach ( Year year in years.GetYears() )
            {
                foreach ( Quarter quarter in year.GetQuarters() )
                {
                    Console.WriteLine( "Quarter: {0}", quarter );
                }
            }
            // > Quarter: Q1 2012; 01.02.2012 - 30.04.2012 | 89.23:59
            // > Quarter: Q2 2012; 01.05.2012 - 31.07.2012 | 91.23:59
            // > Quarter: Q3 2012; 01.08.2012 - 31.10.2012 | 91.23:59
            // > Quarter: Q4 2012; 01.11.2012 - 31.01.2013 | 91.23:59
            // > Quarter: Q1 2013; 01.02.2013 - 30.04.2013 | 88.23:59
            // > Quarter: Q2 2013; 01.05.2013 - 31.07.2013 | 91.23:59
            // > Quarter: Q3 2013; 01.08.2013 - 31.10.2013 | 91.23:59
            // > Quarter: Q4 2013; 01.11.2013 - 31.01.2014 | 91.23:59
        }
        } // StartPeriodVisit

        // ----------------------------------------------------------------------
        protected void StartPeriodVisit(ITimePeriod period, TContext context = null)
        {
            if (period == null)
            {
                throw new ArgumentNullException("period");
            }
            if (period.IsMoment)
            {
                return;
            }

            OnVisitStart();

            Years years = calendar != null ?
                          new Years(period.Start.Year, period.End.Year - period.Start.Year + 1, calendar) :
                          new Years(period.Start.Year, period.End.Year - period.Start.Year + 1);

            if (OnVisitYears(years, context) && EnterYears(years, context))
            {
                ITimePeriodCollection yearsToVisit = years.GetYears();
                if (seekDirection == SeekDirection.Backward)
                {
                    yearsToVisit.SortByEnd();
                }
                foreach (Year year in yearsToVisit)
                {
                    if (!year.OverlapsWith(period) || OnVisitYear(year, context) == false)
                    {
                        continue;
                    }

                    // months
                    if (EnterMonths(year, context) == false)
                    {
                        continue;
                    }
                    ITimePeriodCollection monthsToVisit = year.GetMonths();
                    if (seekDirection == SeekDirection.Backward)
                    {
                        monthsToVisit.SortByEnd();
                    }
                    foreach (Month month in monthsToVisit)
                    {
                        if (!month.OverlapsWith(period) || OnVisitMonth(month, context) == false)
                        {
                            continue;
                        }

                        // days
                        if (EnterDays(month, context) == false)
                        {
                            continue;
                        }
                        ITimePeriodCollection daysToVisit = month.GetDays();
                        if (seekDirection == SeekDirection.Backward)
                        {
                            daysToVisit.SortByEnd();
                        }
                        foreach (Day day in daysToVisit)
                        {
                            if (!day.OverlapsWith(period) || OnVisitDay(day, context) == false)
                            {
                                continue;
                            }

                            // hours
                            if (EnterHours(day, context) == false)
                            {
                                continue;
                            }
                            ITimePeriodCollection hoursToVisit = day.GetHours();
                            if (seekDirection == SeekDirection.Backward)
                            {
                                hoursToVisit.SortByEnd();
                            }
                            foreach (Hour hour in hoursToVisit)
                            {
                                if (!hour.OverlapsWith(period) || OnVisitHour(hour, context) == false)
                                {
                                    // ReSharper disable RedundantJumpStatement
                                    continue;
                                    // ReSharper restore RedundantJumpStatement
                                }
                            }
                        }
                    }
                }
            }

            OnVisitEnd();
        } // StartPeriodVisit