private object DoCustomList(eSummaryResultDocSumItem item) { IComplexListGenerator complexListGenerator = null; switch (item.Name.ToLower()) { case "authorlist": complexListGenerator = new AuthorsListGenerator(); break; case "articleids": complexListGenerator = new ArticleIDsListGenerator(); break; case "history": complexListGenerator = new HistoryListGenerator(); break; } if (complexListGenerator != null) { return(complexListGenerator.GenerateList(item)); } return(null); }
public ISummaryValueConverter GetAppropriateConverter(eSummaryResultDocSumItem item) { // Check if it can be converted based on type. switch (item.Type.ToLower()) { case "string": return(new StringSummaryValueConverter()); case "date": return(new DateSummaryValueConverter()); case "integer": return(new IntegerSummaryValueConverter()); case "list": return(new ListSummaryValueConverter()); } // Check for specific lists. if (item.Name == "AuthorList") { } return(null); }
public object GenerateList(eSummaryResultDocSumItem baseListItem) { var authors = from item in baseListItem.Item select new Author { Name = item.Value, Type = item.Name }; return(authors.ToList()); }
public object GenerateList(eSummaryResultDocSumItem baseListItem) { var histories = from eSummaryResultDocSumItemItem item in baseListItem.Item select new History { HistoryEntryType = item.Name, Date = ConvertTextToDateTime(item.Value) }; return(histories.ToList()); }
public object GenerateList(eSummaryResultDocSumItem baseListItem) { var articleIds = from eSummaryResultDocSumItemItem item in baseListItem.Item select new ArticleID { IDKey = item.Name, IDValue = item.Value }; return(articleIds.ToList()); }
public Type DetermineListType(eSummaryResultDocSumItem item) { switch (item.Item[0].Type.ToLower()) { case "string": return(typeof(string)); case "date": return(typeof(DateTime)); case "integer": return(typeof(int)); } return(null); }
private bool CustomListNeeded(eSummaryResultDocSumItem item) { switch (item.Name.ToLower()) { case "authorlist": return(true); case "articleids": return(true); case "history": return(true); } return(false); }
public void AddItemToSummary(eSummaryResultDocSumItem item, ref Summary summary) { // Check if there is actually text. if (!IsListRoot(item)) { if (item.Text == null) { return; } if (String.IsNullOrEmpty(item.Text[0])) { return; } } var properties = summary.GetType().GetRuntimeProperties(); var propertyInfos = properties as PropertyInfo[] ?? properties.ToArray(); if (propertyInfos.Any(Predicate(item))) { var propertyInfo = propertyInfos.Single(Predicate(item)); if (IsListRoot(item)) { if (propertyInfo != null) { propertyInfo.SetValue(summary, GetObjectViaListValue(item)); } } else { if (propertyInfo != null) { propertyInfo.SetValue(summary, GetObjectValue(item.Text[0])); } } } }
protected override object GetObjectViaListValue(eSummaryResultDocSumItem item) { // Determine if a custom list is needed. if (CustomListNeeded(item)) { return(DoCustomList(item)); } IListTypeDeterminer listTypeDeterminer = new BasicListTypeDeterminer(); Type listType = listTypeDeterminer.DetermineListType(item); // Generate a list of that type. var genericListType = typeof(List <>); var constructedListType = genericListType.MakeGenericType(listType); var instance = Activator.CreateInstance(constructedListType) as IList; // Add all the items of that type. foreach (var subItem in item.Item) { switch (listType.Name.ToLower()) { case "string": instance.Add(subItem.Value); break; case "date": instance.Add(ConvertTextToDateTime(subItem.Value)); break; case "integer": instance.Add(Convert.ToInt32(subItem.Value)); break; } } return(instance); }
private static Func <PropertyInfo, bool> Predicate(eSummaryResultDocSumItem item) { return(info => String.Equals(info.Name, item.Name, StringComparison.CurrentCultureIgnoreCase)); }
protected abstract object GetObjectViaListValue(eSummaryResultDocSumItem item);
private bool IsListRoot(eSummaryResultDocSumItem item) { return(item.Type.ToLower() == "list"); }
protected override object GetObjectViaListValue(eSummaryResultDocSumItem item) { throw new NotImplementedException(); }