public DateInformation(DM.DateInformation dateInformation) { Initialize(); if (dateInformation != null) { switch (dateInformation.DateType) { case DE.DateType.Unknown: // Do Nothing break; case DE.DateType.ExactFull: List <string> dateFullParts = new List <string>(); if (dateInformation.DateExact.HasValue) { dateFullParts.Add(dateInformation.DateExact.Value.Year.ToString()); dateFullParts.Add(dateInformation.DateExact.Value.Month.ToString()); dateFullParts.Add(dateInformation.DateExact.Value.Day.ToString()); } DateParts.Add(dateFullParts); break; case DE.DateType.ExactPartial: List <string> datePartialParts = new List <string>(); if (dateInformation.Year.HasValue) { datePartialParts.Add(dateInformation.Year.Value.ToString()); } if (dateInformation.Month.HasValue) { datePartialParts.Add(dateInformation.Month.Value.ToString()); } if (dateInformation.Day.HasValue) { datePartialParts.Add(dateInformation.Day.Value.ToString()); } DateParts.Add(datePartialParts); if (!string.IsNullOrEmpty(dateInformation.Season)) { Season = dateInformation.Season; } if (dateInformation.IsApproximate) { Circa = "1"; } break; case DE.DateType.RangeFull: List <string> dateFullMinParts = new List <string>(); if (dateInformation.DateMin.HasValue) { dateFullMinParts.Add(dateInformation.DateMin.Value.Year.ToString()); dateFullMinParts.Add(dateInformation.DateMin.Value.Month.ToString()); dateFullMinParts.Add(dateInformation.DateMin.Value.Day.ToString()); } DateParts.Add(dateFullMinParts); List <string> dateFullMaxParts = new List <string>(); if (dateInformation.DateMax.HasValue) { dateFullMaxParts.Add(dateInformation.DateMax.Value.Year.ToString()); dateFullMaxParts.Add(dateInformation.DateMax.Value.Month.ToString()); dateFullMaxParts.Add(dateInformation.DateMax.Value.Day.ToString()); } DateParts.Add(dateFullMaxParts); break; case DE.DateType.RangePartial: List <string> datePartialMinParts = new List <string>(); if (dateInformation.YearMin.HasValue) { datePartialMinParts.Add(dateInformation.YearMin.Value.ToString()); } if (dateInformation.MonthMin.HasValue) { datePartialMinParts.Add(dateInformation.MonthMin.Value.ToString()); } if (dateInformation.DayMin.HasValue) { datePartialMinParts.Add(dateInformation.DayMin.Value.ToString()); } DateParts.Add(datePartialMinParts); List <string> datePartialMaxParts = new List <string>(); if (dateInformation.YearMax.HasValue) { datePartialMaxParts.Add(dateInformation.YearMax.Value.ToString()); } if (dateInformation.MonthMax.HasValue) { datePartialMaxParts.Add(dateInformation.MonthMax.Value.ToString()); } if (dateInformation.DayMax.HasValue) { datePartialMaxParts.Add(dateInformation.DayMax.Value.ToString()); } DateParts.Add(datePartialMaxParts); break; case DE.DateType.Literal: if (!string.IsNullOrEmpty(dateInformation.Literal)) { Literal = dateInformation.Literal; } break; default: throw new NotImplementedException(); } } }