Changeset 2671


Ignore:
Timestamp:
Feb 12, 2011, 1:42:53 PM (11 years ago)
Author:
Sven Rech
Message:

Fixed some stuff in KeySearcher statstics presentation which can lead to XAML crashes.
Also, inserted a lot of try-catch blocks, just to make sure.

Location:
trunk/CrypPlugins/KeySearcher
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r2612 r2671  
    14051405        internal void UpdateStatisticsPresentation()
    14061406        {
    1407             var calcChunks = calculatedChunks();
    1408             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
    1409             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.MachineHierarchy = maschinehierarchie;
    1410             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Days = DateTime.UtcNow.Subtract(startDate).Days + " Days";
    1411             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedBlocks = calcChunks;
    1412             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedKeys = calcChunks * (BigInteger)Math.Pow(2, settings.ChunkSize);
    1413             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Percent = (double)calcChunks;
    1414             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Users = statistic.Keys.Count;
    1415             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Machines = maschinehierarchie.Keys.Count;
    1416             if (statistic.Count > 0)
    1417             {
    1418                 ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.BeeUsers = statistic.Keys.First();
    1419                 ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.BeeMachines = maschinehierarchie[maschinehierarchie.Keys.First()].Hostname;
     1407            try
     1408            {
     1409                var calcChunks = calculatedChunks();
     1410                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
     1411                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.MachineHierarchy = maschinehierarchie;
     1412                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Days = DateTime.UtcNow.Subtract(startDate).Days + " Days";
     1413                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedBlocks = calcChunks;
     1414                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedKeys = calcChunks * (BigInteger)Math.Pow(2, settings.ChunkSize);
     1415                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Percent = (double)calcChunks;
     1416                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Users = statistic.Keys.Count;
     1417                ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Machines = maschinehierarchie.Keys.Count;
     1418                if (statistic.Count > 0)
     1419                {
     1420                    ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.BeeUsers = statistic.Keys.First();
     1421                    ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.BeeMachines = maschinehierarchie[maschinehierarchie.Keys.First()].Hostname;
     1422                }
     1423            }
     1424            catch (Exception ex)
     1425            {
     1426                GuiLogMessage(string.Format("Error when trying to update statistic: {0}", ex.Message), NotificationLevel.Error);
    14201427            }
    14211428        }
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml.cs

    r2624 r2671  
    3434            ((InformationToProgressConverter2)Resources["InformationToProgressConverter2"]).StatisticsPresentation = this;
    3535            ((ChunkSumConverter)Resources["ChunkSumConverter"]).StatisticsPresentation = this;
    36             ((StringLengthConverter)Resources["StringLengthConverter"]).StatisticsPresentation = this;
    3736            ((MachineSumToProgressConverter)Resources["MachineSumToProgressConverter"]).StatisticsPresentation = this;
    3837            ((MaxDateConverter)Resources["MaxDateConverter"]).StatisticsPresentation = this;
     
    5251                    Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    5352                                               {
    54                                                    if (statistics != null)
     53                                                   try
    5554                                                   {
    56                                                        statisticsTree.DataContext = statistics;
    57                                                        statisticsTree.Items.Refresh();
     55                                                       if (statistics != null)
     56                                                       {
     57                                                           statisticsTree.DataContext = statistics;
     58                                                           statisticsTree.Items.Refresh();
     59                                                       }
     60                                                   }
     61                                                   catch (Exception)
     62                                                   {
    5863                                                   }
    5964                                               }, null);
     
    7479                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    7580                                                {
    76                                                     if (machineHierarchy != null)
     81                                                    try
    7782                                                    {
    78                                                         machineTree.DataContext = machineHierarchy;
    79                                                         machineTree.Items.Refresh();
     83                                                        if (machineHierarchy != null)
     84                                                        {
     85                                                            machineTree.DataContext = machineHierarchy;
     86                                                            machineTree.Items.Refresh();
     87                                                        }
     88                                                    }
     89                                                    catch (Exception)
     90                                                    {
    8091                                                    }
    8192                                                }, null);
     
    98109                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    99110                {
    100                     WorkingDays.Content = days;
     111                    if (days != null)
     112                        WorkingDays.Content = days;
    101113                }, null);
    102114            }
     
    249261                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    250262                {
    251                     BestUser.Content = beeusers;
     263                    if (beeusers != null)
     264                        BestUser.Content = beeusers;
    252265                }, null);
    253266            }
     
    285298                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    286299                {
    287                     BestMachine.Content = beemachines;
     300                    if (beemachines != null)
     301                        BestMachine.Content = beemachines;
    288302                }, null);
    289303            }
     
    361375        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    362376        {
    363             if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
    364             {
    365                 lock (StatisticsPresentation)
    366                 {
    367                     double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
    368                     double vCount = ((Dictionary<long, Information>) value).Sum(i => i.Value.Count);
    369                     return vCount/allCount;
    370                 }
    371             }
    372             else
    373             {
    374                 return 0;
    375             }
     377            try
     378            {
     379                if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
     380                {
     381                    lock (StatisticsPresentation)
     382                    {
     383                        double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
     384                        double vCount = ((Dictionary<long, Information>)value).Sum(i => i.Value.Count);
     385                        return vCount / allCount;
     386                    }
     387                }
     388            }
     389            catch (Exception)
     390            {
     391            }
     392            return 0.0;
    376393        }
    377394
     
    389406        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    390407        {
    391             if (StatisticsPresentation != null && StatisticsPresentation.MachineHierarchy != null)
    392             {
    393                 lock (StatisticsPresentation)
    394                 {
    395                     double allCount = (StatisticsPresentation.MachineHierarchy).Sum(i => i.Value.Sum);
    396                     double vCount = (int) value;
    397                     return vCount/allCount;
    398                 }
    399             }
    400             else
    401             {
    402                 return 0;
    403             }
     408            try
     409            {
     410                if (StatisticsPresentation != null && StatisticsPresentation.MachineHierarchy != null)
     411                {
     412                    lock (StatisticsPresentation)
     413                    {
     414                        double allCount = (StatisticsPresentation.MachineHierarchy).Sum(i => i.Value.Sum);
     415                        double vCount = (int)value;
     416                        return vCount / allCount;
     417                    }
     418                }
     419            }
     420            catch (Exception)
     421            {
     422            }
     423            return 0.0;
    404424        }
    405425
     
    417437        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    418438        {
    419             if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
    420             {
    421                 lock (StatisticsPresentation)
    422                 {
    423                     string key = (string) value;
    424                     var data = (StatisticsPresentation.Statistics)[key];
    425                     return data.Sum(i => i.Value.Count);
    426                 }
    427             }
    428             else
    429             {
    430                 return 0;
    431             }
     439            try
     440            {
     441                if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
     442                {
     443                    lock (StatisticsPresentation)
     444                    {
     445                        string key = (string)value;
     446                        var data = (StatisticsPresentation.Statistics)[key];
     447                        return data.Sum(i => i.Value.Count);
     448                    }
     449                }
     450            }
     451            catch (Exception)
     452            {
     453            }
     454            return 0.0;
    432455        }
    433456
     
    441464    class StringLengthConverter : IValueConverter
    442465    {
    443         public StatisticsPresentation StatisticsPresentation { get; set; }
    444 
    445466        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    446467        {
    447             if (StatisticsPresentation != null)
     468            if (value != null && value is string)
    448469            {
    449470                string name = (string)value;
    450                
    451                 if(name.Length < 13)
     471                if (name.Length < 13)
    452472                {
    453473                    return name;
    454474                }
    455                 else
    456                 {
    457                     return string.Format("{0}...", name.Substring(0, 9));
    458                 }
    459             }
    460             else
    461             {
    462                 return "";
    463             }
     475                return string.Format("{0}...", name.Substring(0, 9));
     476            }
     477            return "";
    464478        }
    465479
     
    477491        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    478492        {
    479             if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
    480             {
    481                 lock (StatisticsPresentation)
    482                 {
    483                     double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
    484                     return (int) value/allCount;
    485                 }
    486             }
    487             else
    488             {
    489                 return 0;
    490             }
     493            try
     494            {
     495                if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
     496                {
     497                    lock (StatisticsPresentation)
     498                    {
     499                        double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
     500                        return (int)value / allCount;
     501                    }
     502                }
     503            }
     504            catch (Exception)
     505            {
     506            }
     507            return 0.0;
    491508        }
    492509
     
    504521        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    505522        {
    506             if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
    507             {
    508                 lock (StatisticsPresentation)
    509                 {
    510                     var max = DateTime.MinValue;
    511                     var machines = StatisticsPresentation.Statistics[(string) value];
    512                     foreach (var id in machines.Keys.Where(id => machines[id].Date > max))
    513                     {
    514                         max = machines[id].Date;
    515                     }
    516                     return max;
    517                 }
    518             }
    519             else
    520             {
    521                 return 0;
    522             }
     523            try
     524            {
     525                if (StatisticsPresentation != null && StatisticsPresentation.Statistics != null)
     526                {
     527                    lock (StatisticsPresentation)
     528                    {
     529                        var max = DateTime.MinValue;
     530                        var machines = StatisticsPresentation.Statistics[(string)value];
     531                        foreach (var id in machines.Keys.Where(id => machines[id].Date > max))
     532                        {
     533                            max = machines[id].Date;
     534                        }
     535                        return max;
     536                    }
     537                }
     538            }
     539            catch (Exception)
     540            {
     541            }
     542            return DateTime.UtcNow;
    523543        }
    524544
     
    535555        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    536556        {
    537             DateTime date = (DateTime) values[0];
    538             SolidColorBrush brush = ColorToDateConverter.AlternationColors[(int) values[1]].Clone();
    539             TimeSpan diff = DateTime.UtcNow.Subtract(date);
    540 
    541             Color color;
    542             if (diff >= TimeSpan.FromDays(4))
    543             {
    544                 color = Color.FromArgb(
    545                     (byte)50,
    546                     brush.Color.R,
    547                     brush.Color.G,
    548                     brush.Color.B);
    549 
    550                 brush.Color = color;
    551                 return brush;
    552             }
    553 
    554             if (diff >= TimeSpan.FromDays(3))
    555             {
    556                  color = Color.FromArgb(
    557                     (byte)100,
    558                     brush.Color.R,
    559                     brush.Color.G,
    560                     brush.Color.B);
    561 
    562                 brush.Color = color;
    563                 return brush;
    564             }
    565 
    566             if (diff >= TimeSpan.FromDays(2))
    567             {
    568                  color = Color.FromArgb(
    569                     (byte)150,
    570                     brush.Color.R,
    571                     brush.Color.G,
    572                     brush.Color.B);
    573 
    574                 brush.Color = color;
    575                 return brush;
    576             }
    577 
    578             if (diff >= TimeSpan.FromDays(1))
    579             {
    580                 color = Color.FromArgb(
    581                     (byte)200,
    582                     brush.Color.R,
    583                     brush.Color.G,
    584                     brush.Color.B);
    585 
    586                 brush.Color = color;
    587                 return brush;
    588             }
    589 
    590             if (diff >= TimeSpan.FromDays(0))
    591             {
    592 
    593                 color = Color.FromArgb(
    594                     (byte)255,
    595                     brush.Color.R,
    596                     brush.Color.G,
    597                     brush.Color.B);
    598 
    599                 brush.Color = color;
    600                 return brush;
    601             }
     557            try
     558            {
     559                DateTime date = (DateTime)values[0];
     560                SolidColorBrush brush = ColorToDateConverter.AlternationColors[(int)values[1]].Clone();
     561                TimeSpan diff = DateTime.UtcNow.Subtract(date);
     562
     563                Color color;
     564                if (diff >= TimeSpan.FromDays(4))
     565                {
     566                    color = Color.FromArgb(
     567                        (byte)50,
     568                        brush.Color.R,
     569                        brush.Color.G,
     570                        brush.Color.B);
     571
     572                    brush.Color = color;
     573                    return brush;
     574                }
     575
     576                if (diff >= TimeSpan.FromDays(3))
     577                {
     578                    color = Color.FromArgb(
     579                       (byte)100,
     580                       brush.Color.R,
     581                       brush.Color.G,
     582                       brush.Color.B);
     583
     584                    brush.Color = color;
     585                    return brush;
     586                }
     587
     588                if (diff >= TimeSpan.FromDays(2))
     589                {
     590                    color = Color.FromArgb(
     591                       (byte)150,
     592                       brush.Color.R,
     593                       brush.Color.G,
     594                       brush.Color.B);
     595
     596                    brush.Color = color;
     597                    return brush;
     598                }
     599
     600                if (diff >= TimeSpan.FromDays(1))
     601                {
     602                    color = Color.FromArgb(
     603                        (byte)200,
     604                        brush.Color.R,
     605                        brush.Color.G,
     606                        brush.Color.B);
     607
     608                    brush.Color = color;
     609                    return brush;
     610                }
     611
     612                if (diff >= TimeSpan.FromDays(0))
     613                {
     614
     615                    color = Color.FromArgb(
     616                        (byte)255,
     617                        brush.Color.R,
     618                        brush.Color.G,
     619                        brush.Color.B);
     620
     621                    brush.Color = color;
     622                    return brush;
     623                }
     624            }
     625            catch (Exception)
     626            {
     627            }
     628
    602629            return Brushes.AntiqueWhite;
    603630        }
Note: See TracChangeset for help on using the changeset viewer.