Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/04/11 23:59:11 (13 years ago)
Author:
swagner
Message:

Worked on OKB (#1174)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs

    r5606 r5611  
    2222using System;
    2323using System.IO;
     24using System.Linq;
    2425using System.Threading;
    2526using System.Threading.Tasks;
     
    3334namespace HeuristicLab.Clients.OKB.Query {
    3435  [View("OKB Query")]
    35   [Content(typeof(OKBClient), false)]
    36   public sealed partial class QueryView : HeuristicLab.MainForm.WindowsForms.View {
     36  [Content(typeof(QueryClient), true)]
     37  public sealed partial class QueryView : AsynchronousContentView {
    3738    private CancellationTokenSource cancellationTokenSource;
    3839    private CombinedFilterView combinedFilterView;
    3940
     41    public new QueryClient Content {
     42      get { return (QueryClient)base.Content; }
     43      set { base.Content = value; }
     44    }
     45
    4046    public QueryView() {
    4147      InitializeComponent();
    4248    }
    4349
    44     protected override void OnInitialized(EventArgs e) {
    45       base.OnInitialized(e);
    46       LoadFiltersAsync();
    47     }
    48 
     50    protected override void DeregisterContentEvents() {
     51      Content.Refreshing -= new EventHandler(Content_Refreshing);
     52      Content.Refreshed -= new EventHandler(Content_Refreshed);
     53      base.DeregisterContentEvents();
     54    }
     55
     56    protected override void RegisterContentEvents() {
     57      base.RegisterContentEvents();
     58      Content.Refreshing += new EventHandler(Content_Refreshing);
     59      Content.Refreshed += new EventHandler(Content_Refreshed);
     60    }
     61
     62    protected override void OnContentChanged() {
     63      base.OnContentChanged();
     64      CreateFilterView();
     65      runCollectionView.Content = null;
     66    }
    4967
    5068    protected override void SetEnabledStateOfControls() {
     
    5371    }
    5472
    55     #region Load Filters
    56     private void LoadFiltersAsync() {
    57       Cursor = Cursors.AppStarting;
    58       filtersInfoPanel.Visible = true;
    59       splitContainer.Enabled = false;
    60 
    61       Task<CombinedFilter> task = Task.Factory.StartNew<CombinedFilter>(() => {
    62         return OKBClient.Instance.GetFilters().OfType<CombinedFilter>().Where(x => x.Operation == BooleanOperation.And).FirstOrDefault();
    63       });
    64       task.ContinueWith(t => {
    65         CombinedFilter filter = t.Result;
    66         Invoke(new Action(() => {
    67           if (filter != null) {
    68             combinedFilterView = (CombinedFilterView)MainFormManager.CreateView(typeof(CombinedFilterView));
    69             combinedFilterView.Content = (CombinedFilter)filter.Clone();
    70             Control control = (Control)combinedFilterView;
    71             control.Dock = DockStyle.Fill;
    72             filterPanel.Controls.Add(control);
    73           }
    74           filtersInfoPanel.Visible = false;
    75           splitContainer.Enabled = true;
    76           this.Cursor = Cursors.Default;
    77           SetEnabledStateOfControls();
    78         }));
    79       });
    80     }
    81     #endregion
     73    private void Content_Refreshing(object sender, EventArgs e) {
     74      if (InvokeRequired) {
     75        Invoke(new EventHandler(Content_Refreshing), sender, e);
     76      } else {
     77        Cursor = Cursors.AppStarting;
     78        filtersInfoPanel.Visible = true;
     79        splitContainer.Enabled = false;
     80      }
     81    }
     82    private void Content_Refreshed(object sender, EventArgs e) {
     83      if (InvokeRequired) {
     84        Invoke(new EventHandler(Content_Refreshed), sender, e);
     85      } else {
     86        CreateFilterView();
     87        filtersInfoPanel.Visible = false;
     88        splitContainer.Enabled = true;
     89        Cursor = Cursors.Default;
     90        SetEnabledStateOfControls();
     91      }
     92    }
    8293
    8394    #region Load Results
     
    96107
    97108      Task task = Task.Factory.StartNew(() => {
    98         var ids = OKBClient.Instance.GetQueryResultIds(combinedFilterView.Content);
     109        var ids = QueryClient.Instance.GetRunIds(combinedFilterView.Content);
    99110        int idsCount = ids.Count();
    100111
     
    109120        while (ids.Count() > 0) {
    110121          cancellationToken.ThrowIfCancellationRequested();
    111           runs.AddRange(OKBClient.Instance.GetQueryResults(ids.Take(batchSize)).Select(x => ConvertToOptimizationRun(x, deserialize)));
     122          runs.AddRange(QueryClient.Instance.GetRuns(ids.Take(batchSize), true).Select(x => ConvertToOptimizationRun(x, deserialize)));
    112123          ids = ids.Skip(batchSize);
    113124          Invoke(new Action(() => {
     
    142153    }
    143154
    144     private Optimization.IRun ConvertToOptimizationRun(QueryResult queryResult, bool deserialize) {
    145       Optimization.Run run = new Optimization.Run();
    146       foreach (QueryValue value in queryResult.AlgorithmParameters)
    147         run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
    148       foreach (QueryValue value in queryResult.ProblemParameters)
    149         run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
    150       foreach (QueryValue value in queryResult.Results)
    151         run.Results.Add(value.Name, ConvertToItem(value, deserialize));
    152       return run;
    153     }
    154 
    155     private IItem ConvertToItem(QueryValue value, bool deserialize) {
    156       if (value is QueryBlobValue) {
     155    private void CreateFilterView() {
     156      combinedFilterView = null;
     157      filterPanel.Controls.Clear();
     158      if ((Content != null) && (Content.Filters != null)) {
     159        CombinedFilter filter = Content.Filters.OfType<CombinedFilter>().Where(x => x.Operation == BooleanOperation.And).FirstOrDefault();
     160        if (filter != null) {
     161          combinedFilterView = (CombinedFilterView)MainFormManager.CreateView(typeof(CombinedFilterView));
     162          combinedFilterView.Content = (CombinedFilter)filter.Clone();
     163          Control control = (Control)combinedFilterView;
     164          control.Dock = DockStyle.Fill;
     165          filterPanel.Controls.Add(control);
     166        }
     167      }
     168    }
     169
     170    private Optimization.IRun ConvertToOptimizationRun(Run run, bool deserialize) {
     171      Optimization.Run optRun = new Optimization.Run();
     172      foreach (Value value in run.ParameterValues)
     173        optRun.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
     174      foreach (Value value in run.ResultValues)
     175        optRun.Results.Add(value.Name, ConvertToItem(value, deserialize));
     176      return optRun;
     177    }
     178
     179    private IItem ConvertToItem(Value value, bool deserialize) {
     180      if (value is BinaryValue) {
    157181        if (deserialize) {
    158182          IItem item = null;
    159           using (MemoryStream stream = new MemoryStream(((QueryBlobValue)value).Value)) {
     183          using (MemoryStream stream = new MemoryStream(((BinaryValue)value).Value)) {
    160184            try {
    161185              item = XmlParser.Deserialize<IItem>(stream);
     
    164188            stream.Close();
    165189          }
    166           return item != null ? item : new StringValue(((QueryBlobValue)value).DataTypeName);
     190          return item != null ? item : new Data.StringValue(value.DataType.Name);
    167191        } else {
    168           return new StringValue(((QueryBlobValue)value).DataTypeName);
     192          return new Data.StringValue(value.DataType.Name);
    169193        }
    170       } else if (value is QueryBoolValue) {
    171         return new BoolValue(((QueryBoolValue)value).Value);
    172       } else if (value is QueryFloatValue) {
    173         return new DoubleValue(((QueryFloatValue)value).Value);
    174       } else if (value is QueryIntValue) {
    175         return new IntValue((int)((QueryIntValue)value).Value);
    176       } else if (value is QueryStringValue) {
    177         return new StringValue(((QueryStringValue)value).Value);
     194      } else if (value is BoolValue) {
     195        return new Data.BoolValue(((BoolValue)value).Value);
     196      } else if (value is FloatValue) {
     197        return new Data.DoubleValue(((FloatValue)value).Value);
     198      } else if (value is DoubleValue) {
     199        return new Data.DoubleValue(((FloatValue)value).Value);
     200      } else if (value is IntValue) {
     201        return new Data.IntValue((int)((IntValue)value).Value);
     202      } else if (value is LongValue) {
     203        return new Data.IntValue((int)((IntValue)value).Value);
     204      } else if (value is StringValue) {
     205        return new Data.StringValue(((StringValue)value).Value);
    178206      }
    179207      return null;
Note: See TracChangeset for help on using the changeset viewer.