public TimeStampedIndexDescriptor(string indexPrefix, string indexTimePattern, string indexTimeStampField, IndexStep indexStep)
            : base(indexTimeStampField)
        {
            if (indexPrefix == null)
            {
                throw new ArgumentNullException("indexPrefix");
            }
            if (indexTimePattern == null)
            {
                throw new ArgumentNullException("indexTimePattern");
            }

            IndexPrefix      = indexPrefix;
            IndexTimePattern = indexTimePattern;
            IndexStep        = indexStep;
        }
        public static IEnumerable <DateTime> Generate(DateTime timeFrom, DateTime timeTo, IndexStep indexStep)
        {
            switch (indexStep)
            {
            case IndexStep.Day:
                return(DayPeriodGenerator.Generate(timeFrom, timeTo));

            case IndexStep.Hour:
                return(HourPeriodGenerator.Generate(timeFrom, timeTo));

            case IndexStep.Month:
                return(MonthPeriodGenerator.Generate(timeFrom, timeTo));

            default:
                throw new InvalidEnumArgumentException("Unsupported IndexStep provided");
            }
        }