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);
        }
示例#2
0
        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");
 }
示例#13
0
 protected override object GetObjectViaListValue(eSummaryResultDocSumItem item)
 {
     throw new NotImplementedException();
 }