コード例 #1
0
ファイル: MainForm.cs プロジェクト: Michaelll123/Code2Xml
        private void btnInfer_Click(object sender, EventArgs e)
        {
            NormalizeAllRange2Element(); // To infer good rules
            var learningRecrods = FreezedFiles
                                  .Concat(Enumerable.Repeat(_activeFile, 1))
                                  .Select(f => new LearningRecord(f.Ast, f.Range2Elements.Values))
                                  .ToList();
            var filters            = RuleLearner.Learn(learningRecrods).ToList();
            var newModifiableItems = new List <RuleListViewItem>();

            _eventEnabled = false;
            foreach (var filter in filters)
            {
                var freezedRuleItem = lvFreezedRule.Items.Cast <RuleListViewItem>()
                                      .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
                if (freezedRuleItem != null)
                {
                    freezedRuleItem.Update(Files);
                    continue;
                }

                var modifiableRuleItem = lvModifiableRule.Items.Cast <RuleListViewItem>()
                                         .FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
                if (modifiableRuleItem != null)
                {
                    modifiableRuleItem.Update(Files);
                    newModifiableItems.Add(modifiableRuleItem);
                    continue;
                }

                var item = new RuleListViewItem(filter, Files);
                if (filter is NopFilter)
                {
                    item.Checked = true; //TODO: should use "filter is NopFilter;" ?
                }
                newModifiableItems.Add(item);
            }
            lvModifiableRule.Items.Clear();
            var sortedModifiableItems = newModifiableItems
                                        .OrderByDescending(i => i.ExactMatch)
                                        .ThenByDescending(i => i.Filter.LivingTime);

            foreach (var item in sortedModifiableItems)
            {
                lvModifiableRule.Items.Add(item);
            }
            _eventEnabled = true;
            lvRule_ItemChecked(null, null);
        }
コード例 #2
0
		private void btnInfer_Click(object sender, EventArgs e) {
			NormalizeAllRange2Element(); // To infer good rules
			var learningRecrods = FreezedFiles
					.Concat(Enumerable.Repeat(_activeFile, 1))
					.Select(f => new LearningRecord(f.Ast, f.Range2Elements.Values))
					.ToList();
			var filters = RuleLearner.Learn(learningRecrods).ToList();
			var newModifiableItems = new List<RuleListViewItem>();
			_eventEnabled = false;
			foreach (var filter in filters) {
				var freezedRuleItem = lvFreezedRule.Items.Cast<RuleListViewItem>()
						.FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
				if (freezedRuleItem != null) {
					freezedRuleItem.Update(Files);
					continue;
				}

				var modifiableRuleItem = lvModifiableRule.Items.Cast<RuleListViewItem>()
						.FirstOrDefault(i => i.Filter.TryUpdateProperties(filter));
				if (modifiableRuleItem != null) {
					modifiableRuleItem.Update(Files);
					newModifiableItems.Add(modifiableRuleItem);
					continue;
				}

				var item = new RuleListViewItem(filter, Files);
				if (filter is NopFilter) {
					item.Checked = true; //TODO: should use "filter is NopFilter;" ?
				}
				newModifiableItems.Add(item);
			}
			lvModifiableRule.Items.Clear();
			var sortedModifiableItems = newModifiableItems
				.OrderByDescending(i => i.ExactMatch)
				.ThenByDescending(i => i.Filter.LivingTime);
			foreach (var item in sortedModifiableItems) {
				lvModifiableRule.Items.Add(item);
			}
			_eventEnabled = true;
			lvRule_ItemChecked(null, null);
		}