Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/20/10 17:37:53 (14 years ago)
Author:
mkommend
Message:

added RowComparer for RunCollectionTabularView (ticket #970)

Location:
trunk/sources/HeuristicLab.Optimization.Views/3.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs

    r3441 r3447  
    3333using HeuristicLab.Common;
    3434using HeuristicLab.Core;
     35using HeuristicLab.Data;
    3536
    3637namespace HeuristicLab.Optimization.Views {
     
    8283    }
    8384
     85    public IStringConvertibleMatrix Matrix {
     86      get { return this.Content; }
     87    }
     88
    8489    protected override void RegisterContentEvents() {
    8590      base.RegisterContentEvents();
     
    146151      this.yAxisComboBox.Items.Clear();
    147152      this.sizeComboBox.Items.Clear();
    148       this.xAxisComboBox.Items.AddRange(Content.ColumnNames.ToArray());
    149       this.yAxisComboBox.Items.AddRange(Content.ColumnNames.ToArray());
     153      this.xAxisComboBox.Items.AddRange(Matrix.ColumnNames.ToArray());
     154      this.yAxisComboBox.Items.AddRange(Matrix.ColumnNames.ToArray());
    150155      this.sizeComboBox.Items.Add(constantLabel);
    151       this.sizeComboBox.Items.AddRange(Content.ColumnNames.ToArray());
     156      this.sizeComboBox.Items.AddRange(Matrix.ColumnNames.ToArray());
    152157    }
    153158
     
    194199        return null;
    195200
    196       string value = Content.GetValue(row, column);
    197       double d;
    198       double? ret = null;
    199       if (double.TryParse(value, out d))
    200         ret = d;
    201       else if (value != null)
    202         ret = GetCategoricalValue(column, value);
     201      IItem value = Content.GetValue(row, column);
     202      DoubleValue doubleValue = value as DoubleValue;
     203      IntValue intValue = value as IntValue;
     204      double ret;
     205
     206      if (doubleValue != null)
     207        ret = doubleValue.Value;
     208      else if (intValue != null)
     209        ret = intValue.Value;
     210      else
     211        ret = GetCategoricalValue(column, Matrix.GetValue(row, column));
     212
    203213      return ret;
    204214    }
     
    361371      builder.AppendLine(this.Content.ElementAt(runIndex).Name);
    362372      int columnIndex = 0;
    363       foreach (string columnName in this.Content.ColumnNames) {
     373      foreach (string columnName in Matrix.ColumnNames) {
    364374        builder.Append(columnName);
    365375        builder.Append(": ");
    366         builder.AppendLine(this.Content.GetValue(runIndex, columnIndex));
     376        builder.AppendLine(Matrix.GetValue(runIndex, columnIndex));
    367377        columnIndex++;
    368378      }
  • trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionTabularView.cs

    r3423 r3447  
    3131using HeuristicLab.Data.Views;
    3232using HeuristicLab.Collections;
     33using HeuristicLab.Core;
    3334
    3435namespace HeuristicLab.Optimization.Views {
     
    6869      }
    6970    }
     71
     72
     73    protected override int[] Sort(IEnumerable<KeyValuePair<int, SortOrder>> sortedColumns) {
     74      int[] newSortedIndex = Enumerable.Range(0, Content.Count).ToArray();
     75      RunCollectionRowComparer rowComparer = new RunCollectionRowComparer();
     76      if (sortedColumns.Count() != 0) {
     77        rowComparer.SortedIndizes = sortedColumns;
     78        rowComparer.Matrix = Content;
     79        Array.Sort(newSortedIndex, rowComparer);
     80      }
     81      return newSortedIndex;
     82    }
     83
     84    public class RunCollectionRowComparer : IComparer<int> {
     85      public RunCollectionRowComparer() {
     86      }
     87
     88      private List<KeyValuePair<int, SortOrder>> sortedIndizes;
     89      public IEnumerable<KeyValuePair<int, SortOrder>> SortedIndizes {
     90        get { return this.sortedIndizes; }
     91        set { sortedIndizes = new List<KeyValuePair<int, SortOrder>>(value); }
     92      }
     93      private RunCollection matrix;
     94      public RunCollection Matrix {
     95        get { return this.matrix; }
     96        set { this.matrix = value; }
     97      }
     98
     99      public int Compare(int x, int y) {
     100        int result = 0;
     101        IItem value1, value2;
     102        IComparable comparable1, comparable2;
     103
     104        if (matrix == null)
     105          throw new InvalidOperationException("Could not sort IStringConvertibleMatrix if the matrix member is null.");
     106        if (sortedIndizes == null)
     107          return 0;
     108
     109        foreach (KeyValuePair<int, SortOrder> pair in sortedIndizes.Where(p => p.Value != SortOrder.None)) {
     110          value1 = matrix.GetValue(x, pair.Key);
     111          value2 = matrix.GetValue(y, pair.Key);
     112          comparable1 = value1 as IComparable;
     113          comparable2 = value2 as IComparable;
     114          if (comparable1 != null)
     115            result = comparable1.CompareTo(comparable2);
     116          else {
     117            string string1 = value1 != null ? value1.ToString() : string.Empty;
     118            string string2 = value2 != null ? value2.ToString() : string.Empty;
     119            result = string1.CompareTo(string2);
     120          }
     121          if (pair.Value == SortOrder.Descending)
     122            result *= -1;
     123          if (result != 0)
     124            return result;
     125        }
     126        return result;
     127      }
     128    }
    70129  }
    71130}
Note: See TracChangeset for help on using the changeset viewer.