public void FilterLogTabItems(FilterCommand filterIntent = FilterCommand.Filter) { try { List <FilterFileItem> filterFileItems = new List <FilterFileItem>(_filterViewModel.FilterList()); SetStatus(string.Format("filterLogTabItems:enter filterIntent: {0}", filterIntent)); LogFile logFile; // get current log file if (_logFileManager.FileManager.Count > 0) { logFile = (LogFile)CurrentFile(); } else { return; } LogTabViewModel logTab = (LogTabViewModel)TabItems[SelectedIndex]; // dont check filter need if intent is to reset list to current filter or to show all if (filterIntent == FilterCommand.Filter) { FilterNeed filterNeed = _filterViewModel.CompareFilterList(GetPreviousFilter()); SetStatus(string.Format("filterLogTabItems: filterNeed: {0}", filterNeed)); switch (filterNeed) { case FilterNeed.ApplyColor: { logTab.ContentList = _logFileManager.ApplyColor(logFile.ContentItems, filterFileItems); SaveCurrentFilter(filterFileItems); return; } case FilterNeed.Current: { if (PreviousIndex == SelectedIndex) { SetStatus("filterLogTabItems:no change"); return; } break; } case FilterNeed.ShowAll: { filterIntent = FilterCommand.ShowAll; break; } case FilterNeed.Filter: break; case FilterNeed.Unknown: default: SaveCurrentFilter(filterFileItems); return; } } SetCurrentStatus(CurrentStatusSetting.filtering); switch (filterIntent) { case FilterCommand.Filter: { SetStatus(string.Format("switch:Filter: filterIntent:{0}", filterIntent)); logTab.ContentList = _logFileManager.ApplyColor( _logFileManager.ApplyFilter( logTab, logFile, filterFileItems, filterIntent), filterFileItems); SetCurrentStatus(CurrentStatusSetting.filtered); break; } case FilterCommand.Hide: { SetStatus(string.Format("switch:Hide: filterIntent:{0}", filterIntent)); logTab.ContentList = new ObservableCollection <LogFileItem>(logFile.ContentItems.Where(x => x.FilterIndex > -2)); SetCurrentStatus(CurrentStatusSetting.filtered); break; } case FilterCommand.ShowAll: { SetStatus(string.Format("switch:ShowAll: filterIntent:{0}", filterIntent)); logTab.ContentList = logFile.ContentItems; break; } case FilterCommand.Unknown: default: { break; } } // update line total counts LineTotals = string.Format("{0}/{1}", logTab.ContentList.Count, logFile.ContentItems.Count); // set current status message if (logTab.ContentList.Count == logFile.ContentItems.Count) { SetCurrentStatus(CurrentStatusSetting.showing_all); } else if (_filterViewModel.QuickFindItem.Enabled) { SetCurrentStatus(CurrentStatusSetting.quick_filtered); } else { SetCurrentStatus(CurrentStatusSetting.filtered); } SaveCurrentFilter(filterFileItems); } catch (Exception e) { SetStatus("FilterLogTabItems:exception" + e.ToString()); } }
public FilterNeed CompareFilterList(List <FilterFileItem> previousFilterFileItems) { SetStatus("CompareFilterList: enter"); FilterNeed retval = FilterNeed.Unknown; List <FilterFileItem> currentItems = FilterList(); List <FilterFileItem> previousItems = previousFilterFileItems; if (previousItems == null && currentItems != null) { SetStatus("CompareFilterList: previous null, current not null"); retval = FilterNeed.Filter; } else if (currentItems == null) { SetStatus("CompareFilterList: current null"); retval = FilterNeed.ShowAll; } else if (currentItems.Count == 0) { SetStatus("CompareFilterList: current count = 0"); retval = FilterNeed.ShowAll; } else if (previousItems.Count == 0) { SetStatus("CompareFilterList: previous count = 0"); retval = FilterNeed.Filter; } else if (currentItems.Count > 0 && previousItems.Count > 0 && currentItems.Count == previousItems.Count) { SetStatus("CompareFilterList: previous not null, current not null, count is same"); int i = 0; foreach (FilterFileItem previousItem in previousItems) { FilterFileItem currentItem = currentItems[i++]; if (currentItem.Enabled != previousItem.Enabled | currentItem.Exclude != previousItem.Exclude | currentItem.Include != previousItem.Include | currentItem.Regex != previousItem.Regex | currentItem.Filterpattern != previousItem.Filterpattern | currentItem.CaseSensitive != previousItem.CaseSensitive | currentItem.Index != previousItem.Index) { retval = FilterNeed.Filter; SetStatus("CompareFilterList: there is a difference in filter items. setting to filter."); break; } else if (currentItem.BackgroundColor != previousItem.BackgroundColor || currentItem.ForegroundColor != previousItem.ForegroundColor) { retval = FilterNeed.ApplyColor; SetStatus("CompareFilterList: there is a difference in filter item color. setting to apply color."); break; } //SetStatus("CompareFilterList: there is no difference in each filter item. setting to current."); retval = FilterNeed.Current; } } else if (currentItems.Count > 0 && previousItems.Count > 0 && currentItems.Count < previousItems.Count) { SetStatus("CompareFilterList: current items count less than previous items count"); retval = FilterNeed.Filter; } else if (currentItems.Count > 0 && previousItems.Count > 0 && currentItems.Count > previousItems.Count) { SetStatus("CompareFilterList: current items count greater than previous items count"); retval = FilterNeed.Filter; } else { SetStatus("CompareFilterList: unknown"); retval = FilterNeed.Filter; } SetStatus(string.Format("CompareFilterList:returning:{0}, previous count:{1}, current count:{2}", retval, previousItems.Count, currentItems.Count)); // WriteFilterList(currentItems, "current items"); WriteFilterList(previousItems, // "previous Items"); return(retval); }
private WorkerItem ModifiedFilterFile() { SetStatus("Parser:ModifiedFilterFile:enter"); List <IFile <FilterFileItem> > currentFilterFiles = CurrentFilterFiles(); FilterFile currentFilterFile = CurrentFilterFile(); //LogFile currentLog = (LogFile)_logViewModel.CurrentFile(); if (currentFilterFiles == null) // || currentFilterFile == null) { // SyncFilterFiles(); return(new WorkerItem()); } if (currentFilterFiles.Count > 0 && _previousFilterFiles.Count == currentFilterFiles.Count) { SetStatus("Parser:ModifiedFilterFile:same count"); WorkerItem filterFileWorkerItem = new WorkerItem() { WorkerModification = WorkerItem.Modification.Unknown, FilterFile = currentFilterFile, LogFile = (LogFile)_logViewModel.CurrentFile() }; FilterNeed filterNeed = FilterNeed.Unknown; //if (_previousFilterFiles.Contains(currentFilterFile)) if (_previousFilterFiles.Exists(x => x.Tag == currentFilterFile.Tag)) { SetStatus("Parser:ModifiedFilterFile:have previous version"); FilterFile previousVersionFilterFile = _previousFilterFiles.First(x => x.Tag == currentFilterFile.Tag); filterNeed = _FilterViewModel.CompareFilterList(previousVersionFilterFile.ContentItems.ToList()); } else { filterNeed = FilterNeed.Filter; } if (currentFilterFile != _filterFilePrevious) { SetStatus("Parser:ModifiedFilterFile:current filter file changed"); filterFileWorkerItem.WorkerModification = WorkerItem.Modification.FilterIndex; filterNeed = FilterNeed.Filter; _filterFilePrevious = currentFilterFile; } switch (filterNeed) { case FilterNeed.Unknown: case FilterNeed.ShowAll: case FilterNeed.Filter: case FilterNeed.ApplyColor: filterFileWorkerItem.FilterNeed = filterNeed; filterFileWorkerItem.WorkerModification = WorkerItem.Modification.FilterModified; return(filterFileWorkerItem); case FilterNeed.Current: SetStatus("Parser:ModifiedFilterFile:current"); filterFileWorkerItem.FilterNeed = FilterNeed.Current; filterFileWorkerItem.WorkerModification = WorkerItem.Modification.Unknown; return(filterFileWorkerItem); default: break; } } else if (_previousFilterFiles.Count < currentFilterFiles.Count) { SetStatus("Parser:ModifiedFilterFile:filter file added"); SyncFilterFiles(); EnableFilterFileMonitoring(true); // todo : re parse current log with new filter return(new WorkerItem() { FilterFile = CurrentFilterFile(), FilterNeed = FilterNeed.Filter, WorkerModification = WorkerItem.Modification.FilterAdded }); } else { SetStatus("Parser:ModifiedFilterFile:filter file removed"); SyncFilterFiles(); EnableFilterFileMonitoring(false); // todo : re parse current log with new filter return(new WorkerItem() { FilterFile = CurrentFilterFile(), FilterNeed = FilterNeed.Filter, WorkerModification = WorkerItem.Modification.FilterRemoved }); } return(new WorkerItem() { FilterNeed = FilterNeed.Unknown, WorkerModification = WorkerItem.Modification.Unknown }); }