public void HandleNewColumns(ShowColumnsPayload s)
 {
     foreach (
         var c in
             s.Columns.Where(c => c.ContainerType == "StreamView").Distinct(new ColumnConfigurationComparer()).
                 OrderBy(c => c.Position))
     {
         if (c.Mapping.Keys.Contains("Filter"))
         {
             var f = c.Mapping["Filter"];
             var g = FilterGroups.First(z => z.Uuid == f);
             if (g != null)
             {
                 CreateStream(g, c.Title, c.Width);
                 continue;
             }
         }
         var h = FilterGroups.First(z => z.GroupName.ToLower() == c.Title.ToLower());
             // fall through to mapping the name of the column to the name on the filter TODO remove later as this is transitionary
         {
             CreateStream(h, c.Title, c.Width);
         }
     }
 }
        public void LoadStreams()
        {
            foreach (var filterGroup in _columnsSettings.Filters)
            {
                foreach (var f in filterGroup.Filters.OfType<UpdateTypeFilter>().Select(filter => filter))
                    // rehydrate the source "update types" for this filtermodel
                {
                    f.SetMicroblog(_pluginRepository.GetMicroblogByAccount(f.MicroblogName, f.MicroblogAccountName));

                    // REQUIRE at least type name and namespace
                    var typeParameters = f.UpdateTypeName.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);

                    if (typeParameters.Length < 2) continue;

                    var typeName = typeParameters[0].Trim();
                    var namespaceName = typeParameters[1].Trim();

                    // check for type and namespace against contents of MEF

                    var t = CompositionManager.ResolveType<UpdateType>(typeName, namespaceName, _accounts.GetType(),
                                                                        _applicationSettings.GetType());
                    if (t == null) continue;

                    if (string.IsNullOrEmpty(f.UpdateTypeParameter))
                    {
                        var type = Activator.CreateInstance(t) as UpdateType;
                        if (type == null) break;
                        f.SetUpdateType(type);
                    }
                    else
                    {
                        try
                        {
                            var type = Activator.CreateInstance(t, f.UpdateTypeParameter) as UpdateType;
                            if (type == null) break;
                            f.SetUpdateType(type);
                        }
                        catch (Exception ex)
                        {
                            CompositionManager.Get<IExceptionReporter>().ReportHandledException(ex);
                            try
                            {
                                var type = Activator.CreateInstance(t) as UpdateType;
                                if (type == null) break;
                                f.SetUpdateType(type);
                            }
                            catch (Exception ex2)
                            {
                                CompositionManager.Get<IExceptionReporter>().ReportHandledException(ex2);
                            }
                        }
                    }
                }
            }
            var columns = new ShowColumnsPayload(_columnsSettings.Columns.ToList());
            EventAggregator.GetEvent<ShowColumns>().Publish(columns);
        }