Was.OrcSearch – Rev 1

Subversion Repositories:
Rev:
using System.Collections.Generic;
using Was.OrcSearch.Models.Interfaces;

namespace Was.OrcSearch.Models.Extensions
{
    public static class IObjectWithMetadataExtensions
    {
        public static Dictionary<string, IMetadataValue> ToStaticMetadataDictionary(
            this IObjectWithMetadata objectWithMetadata)
        {
            var dictionary = new Dictionary<string, IMetadataValue>();

            foreach (var metadata in objectWithMetadata.MetadataCollection)
            {
                var value = objectWithMetadata.GetMetadataValue(metadata.Name);

                var metadataValue = new MetadataValue(metadata);

                var subObjectWithMetadata = value as IObjectWithMetadata;
                if (subObjectWithMetadata != null)
                    metadataValue.Value = subObjectWithMetadata.ToStaticMetadataDictionary();
                else
                    metadataValue.Value = value;

                dictionary.Add(metadata.Name, metadataValue);
            }

            return dictionary;
        }

        public static List<IMetadataValue> ToStaticMetadataList(this IObjectWithMetadata objectWithMetadata)
        {
            var metadataDictionary = objectWithMetadata.ToStaticMetadataDictionary();
            return metadataDictionary.ToStaticMetadataList();
        }

        public static List<IMetadataValue> ToStaticMetadataList(
            this Dictionary<string, IMetadataValue> metadataDictionary)
        {
            var list = new List<IMetadataValue>();

            foreach (var metadataKeyValuePair in metadataDictionary)
            {
                var value = metadataKeyValuePair.Value;

                var dictionary = value.Value as Dictionary<string, IMetadataValue>;
                if (dictionary != null) value.Value = dictionary.ToStaticMetadataList();

                list.Add(value);
            }

            return list;
        }
    }
}

Generated by GNU Enscript 1.6.5.90.