Changeset 5611 for branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs
- Timestamp:
- 03/04/11 23:59:11 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Query/Views/QueryView.cs
r5606 r5611 22 22 using System; 23 23 using System.IO; 24 using System.Linq; 24 25 using System.Threading; 25 26 using System.Threading.Tasks; … … 33 34 namespace HeuristicLab.Clients.OKB.Query { 34 35 [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 { 37 38 private CancellationTokenSource cancellationTokenSource; 38 39 private CombinedFilterView combinedFilterView; 39 40 41 public new QueryClient Content { 42 get { return (QueryClient)base.Content; } 43 set { base.Content = value; } 44 } 45 40 46 public QueryView() { 41 47 InitializeComponent(); 42 48 } 43 49 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 } 49 67 50 68 protected override void SetEnabledStateOfControls() { … … 53 71 } 54 72 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 } 82 93 83 94 #region Load Results … … 96 107 97 108 Task task = Task.Factory.StartNew(() => { 98 var ids = OKBClient.Instance.GetQueryResultIds(combinedFilterView.Content);109 var ids = QueryClient.Instance.GetRunIds(combinedFilterView.Content); 99 110 int idsCount = ids.Count(); 100 111 … … 109 120 while (ids.Count() > 0) { 110 121 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))); 112 123 ids = ids.Skip(batchSize); 113 124 Invoke(new Action(() => { … … 142 153 } 143 154 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) { 157 181 if (deserialize) { 158 182 IItem item = null; 159 using (MemoryStream stream = new MemoryStream((( QueryBlobValue)value).Value)) {183 using (MemoryStream stream = new MemoryStream(((BinaryValue)value).Value)) { 160 184 try { 161 185 item = XmlParser.Deserialize<IItem>(stream); … … 164 188 stream.Close(); 165 189 } 166 return item != null ? item : new StringValue(((QueryBlobValue)value).DataTypeName);190 return item != null ? item : new Data.StringValue(value.DataType.Name); 167 191 } else { 168 return new StringValue(((QueryBlobValue)value).DataTypeName);192 return new Data.StringValue(value.DataType.Name); 169 193 } 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); 178 206 } 179 207 return null;
Note: See TracChangeset
for help on using the changeset viewer.