public DateFacetingResult ParseDateFacetingNode(XElement node) { var r = new DateFacetingResult(); var dateParser = new DateTimeFieldParser(); var intParser = new IntFieldParser(); foreach (var dateFacetingNode in node.Elements()) { var name = dateFacetingNode.Attribute("name").Value; switch (name) { case "gap": r.Gap = dateFacetingNode.Value; break; case "end": r.End = (DateTime)dateParser.Parse(dateFacetingNode, typeof(DateTime)); break; default: // Temp fix to support Solr 3.1, which has added a new element <date name="start">...</date> // not seen in Solr 1.4 to the facet date response – just ignore this element. if (dateFacetingNode.Name != "int") { break; } var count = (int)intParser.Parse(dateFacetingNode, typeof(int)); if (name == FacetDateOther.After.ToString()) { r.OtherResults[FacetDateOther.After] = count; } else if (name == FacetDateOther.Before.ToString()) { r.OtherResults[FacetDateOther.Before] = count; } else if (name == FacetDateOther.Between.ToString()) { r.OtherResults[FacetDateOther.Between] = count; } else { var d = dateParser.ParseDate(name); r.DateResults.Add(KV(d, count)); } break; } } return(r); }
public DateFacetingResult ParseDateFacetingNode(XElement node) { var r = new DateFacetingResult(); var dateParser = new DateTimeFieldParser(); var intParser = new IntFieldParser(); foreach (var dateFacetingNode in node.Elements()) { var name = dateFacetingNode.Attribute("name").Value; switch (name) { case "gap": r.Gap = dateFacetingNode.Value; break; case "end": r.End = (DateTime)dateParser.Parse(dateFacetingNode, typeof(DateTime)); break; default: var count = (int)intParser.Parse(dateFacetingNode, typeof(int)); if (name == FacetDateOther.After.ToString()) { r.OtherResults[FacetDateOther.After] = count; } else if (name == FacetDateOther.Before.ToString()) { r.OtherResults[FacetDateOther.Before] = count; } else if (name == FacetDateOther.Between.ToString()) { r.OtherResults[FacetDateOther.Between] = count; } else { var d = dateParser.ParseDate(name); r.DateResults.Add(KV(d, count)); } break; } } return(r); }