using System.Collections;
using System.Collections.Specialized;
using System.Text;

namespace TweetDuck.Core.Other.Analytics{
    sealed class AnalyticsReport : IEnumerable{
        private OrderedDictionary data = new OrderedDictionary(32);
        private int separators;

        public void Add(int ignored){ // adding separators to pretty print
            data.Add((++separators).ToString(), null);
        }

        public void Add(string key, string value){
            data.Add(key, value);
        }

        public AnalyticsReport FinalizeReport(){
            if (!data.IsReadOnly){
                data = data.AsReadOnly();
            }

            return this;
        }

        public IEnumerator GetEnumerator(){
            return data.GetEnumerator();
        }

        public NameValueCollection ToNameValueCollection(){
            NameValueCollection collection = new NameValueCollection();

            foreach(DictionaryEntry entry in data){
                if (entry.Value != null){
                    collection.Add(((string)entry.Key).ToLower().Replace(' ', '_'), (string)entry.Value);
                }
            }

            return collection;
        }

        public override string ToString(){
            StringBuilder build = new StringBuilder();

            foreach(DictionaryEntry entry in data){
                if (entry.Value == null){
                    build.AppendLine();
                }
                else{
                    build.AppendLine(entry.Key+": "+entry.Value);
                }
            }

            return build.ToString();
        }
    }
}