/**************************************************************************/ private void BuildWorksheetCustomFilter( MacroscopeJobMaster JobMaster, XLWorkbook wb, string WorksheetLabel ) { var ws = wb.Worksheets.Add(WorksheetLabel); int iRow = 1; int iCol = 1; int iColMax = 1; MacroscopeDocumentCollection DocCollection = JobMaster.GetDocCollection(); MacroscopeAllowedHosts AllowedHosts = JobMaster.GetAllowedHosts(); Dictionary <string, int> FilterColsTable = new Dictionary <string, int> (CustomFilter.GetSize()); const int FilterColOffset = 4; { ws.Cell(iRow, iCol).Value = MacroscopeConstants.Url; iCol++; ws.Cell(iRow, iCol).Value = MacroscopeConstants.StatusCode; iCol++; ws.Cell(iRow, iCol).Value = MacroscopeConstants.Status; iCol++; ws.Cell(iRow, iCol).Value = MacroscopeConstants.ContentType; for (int Slot = 0; Slot < CustomFilter.GetSize(); Slot++) { string FilterPattern = CustomFilter.GetPattern(Slot).Key; iCol++; if (FilterColsTable.ContainsKey(FilterPattern) || string.IsNullOrEmpty(FilterPattern)) { FilterColsTable.Add(string.Format("EMPTY{0}", Slot + 1), Slot + FilterColOffset); ws.Cell(iRow, iCol).Value = string.Format("EMPTY{0}", Slot + 1); } else { FilterColsTable.Add(FilterPattern, Slot + FilterColOffset); ws.Cell(iRow, iCol).Value = FilterPattern; } } } iColMax = iCol; iRow++; foreach (string Url in DocCollection.DocumentKeys()) { MacroscopeDocument msDoc = DocCollection.GetDocument(Url); string DocUrl = msDoc.GetUrl(); string StatusCode = (( int )msDoc.GetStatusCode()).ToString(); string Status = msDoc.GetStatusCode().ToString(); string MimeType = msDoc.GetMimeType(); if (!CustomFilter.CanApplyCustomFiltersToDocument(msDoc: msDoc)) { continue; } iCol = 1; this.InsertAndFormatUrlCell(ws, iRow, iCol, msDoc); if (msDoc.GetIsInternal()) { ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Green); } else { ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Gray); } iCol++; this.InsertAndFormatStatusCodeCell(ws, iRow, iCol, msDoc); iCol++; this.InsertAndFormatContentCell(ws, iRow, iCol, this.FormatIfMissing(msDoc.GetStatusCode().ToString())); iCol++; this.InsertAndFormatContentCell(ws, iRow, iCol, this.FormatIfMissing(MimeType)); iCol++; for (int Slot = 0; Slot < this.CustomFilter.GetSize(); Slot++) { string FilterPattern = this.CustomFilter.GetPattern(Slot: Slot).Key; KeyValuePair <string, MacroscopeConstants.TextPresence> Pair = msDoc.GetCustomFilteredItem(Text: FilterPattern); if ((Pair.Key != null) && (Pair.Value != MacroscopeConstants.TextPresence.UNDEFINED)) { string CustomFilterItemValue = MacroscopeConstants.TextPresenceLabels[Pair.Value]; this.InsertAndFormatContentCell(ws, iRow, iCol, CustomFilterItemValue); switch (Pair.Value) { case MacroscopeConstants.TextPresence.CONTAINS: ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Green); break; case MacroscopeConstants.TextPresence.NOTCONTAINS: ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Green); break; case MacroscopeConstants.TextPresence.MUSTCONTAIN: ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Red); break; case MacroscopeConstants.TextPresence.SHOULDNOTCONTAIN: ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Red); break; default: ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Gray); break; } } else { this.InsertAndFormatContentCell(ws, iRow, iCol, ""); ws.Cell(iRow, iCol).Style.Font.SetFontColor(XLColor.Gray); } iCol++; } iRow++; } { var rangeData = ws.Range(1, 1, iRow - 1, iColMax); var excelTable = rangeData.CreateTable(); } }
/**************************************************************************/ private void RenderListView( MacroscopeDocumentCollection DocCollection, List <string> UrlList, MacroscopeCustomFilters CustomFilter ) { if (this.FilterColOffset == -1) { throw (new Exception("this.FilterColOffset invalid")); } if (DocCollection.CountDocuments() == 0) { return; } MacroscopeAllowedHosts AllowedHosts = this.MainForm.GetJobMaster().GetAllowedHosts(); Dictionary <string, int> FilterColsTable = new Dictionary <string, int>(CustomFilter.GetSize()); List <ListViewItem> ListViewItems = new List <ListViewItem>(); MacroscopeSinglePercentageProgressForm ProgressForm = new MacroscopeSinglePercentageProgressForm(this.MainForm); decimal Count = 0; decimal TotalDocs = (decimal)DocCollection.CountDocuments(); decimal MajorPercentage = ((decimal)100 / TotalDocs) * Count; if (MacroscopePreferencesManager.GetShowProgressDialogues()) { ProgressForm.UpdatePercentages( Title: "Preparing Display", Message: "Processing document collection for display:", MajorPercentage: MajorPercentage, ProgressLabelMajor: string.Format("Document {0} / {1}", Count, TotalDocs) ); } for (int Slot = 0; Slot < CustomFilter.GetSize(); Slot++) { string FilterPattern = CustomFilter.GetPattern(Slot).Key; if (FilterColsTable.ContainsKey(FilterPattern)) { FilterColsTable.Add(string.Format("EMPTY{0}", Slot + 1), Slot + 1); } else { FilterColsTable.Add(FilterPattern, Slot + 1); } } foreach (string Url in UrlList) { MacroscopeDocument msDoc = DocCollection.GetDocumentByUrl(Url: Url); ListViewItem lvItem = null; string DocUrl; string PairKey; string StatusCode; string Status; string MimeType; if (msDoc == null) { continue; } else { DocUrl = msDoc.GetUrl(); PairKey = DocUrl; StatusCode = ((int)msDoc.GetStatusCode()).ToString(); Status = msDoc.GetStatusCode().ToString(); MimeType = msDoc.GetMimeType(); } if (!CustomFilter.CanApplyCustomFiltersToDocument(msDoc: msDoc)) { continue; } if (this.DisplayListView.Items.ContainsKey(PairKey)) { lvItem = this.DisplayListView.Items[PairKey]; } else { lvItem = new ListViewItem(PairKey); lvItem.UseItemStyleForSubItems = false; lvItem.Name = PairKey; lvItem.SubItems.Add(""); lvItem.SubItems.Add(""); lvItem.SubItems.Add(""); lvItem.SubItems.Add(""); for (int Slot = 0; Slot < CustomFilter.GetSize(); Slot++) { lvItem.SubItems.Add(""); } ListViewItems.Add(lvItem); } if (lvItem != null) { try { lvItem.SubItems[ColUrl].Text = DocUrl; lvItem.SubItems[ColStatusCode].Text = StatusCode; lvItem.SubItems[ColStatus].Text = Status; lvItem.SubItems[ColMimeType].Text = MimeType; for (int Slot = 0; Slot < CustomFilter.GetSize(); Slot++) { string FilterPattern = CustomFilter.GetPattern(Slot: Slot).Key; KeyValuePair <string, MacroscopeConstants.TextPresence> Pair = msDoc.GetCustomFilteredItem(Text: FilterPattern); int ColOffset = this.FilterColOffset + FilterColsTable[FilterPattern]; if ((Pair.Key != null) && (Pair.Value != MacroscopeConstants.TextPresence.UNDEFINED)) { lvItem.SubItems[ColOffset].Text = MacroscopeConstants.TextPresenceLabels[Pair.Value]; switch (Pair.Value) { case MacroscopeConstants.TextPresence.CONTAINS_STRING: lvItem.SubItems[ColOffset].ForeColor = Color.Green; break; case MacroscopeConstants.TextPresence.NOT_CONTAINS_STRING: lvItem.SubItems[ColOffset].ForeColor = Color.Green; break; case MacroscopeConstants.TextPresence.MUST_CONTAIN_STRING: lvItem.SubItems[ColOffset].ForeColor = Color.Red; break; case MacroscopeConstants.TextPresence.SHOULD_NOT_CONTAIN_STRING: lvItem.SubItems[ColOffset].ForeColor = Color.Red; break; case MacroscopeConstants.TextPresence.CONTAINS_REGEX: lvItem.SubItems[ColOffset].ForeColor = Color.Green; break; case MacroscopeConstants.TextPresence.NOT_CONTAINS_REGEX: lvItem.SubItems[ColOffset].ForeColor = Color.Green; break; case MacroscopeConstants.TextPresence.MUST_CONTAIN_REGEX: lvItem.SubItems[ColOffset].ForeColor = Color.Red; break; case MacroscopeConstants.TextPresence.SHOULD_NOT_CONTAIN_REGEX: lvItem.SubItems[ColOffset].ForeColor = Color.Red; break; default: lvItem.SubItems[ColOffset].ForeColor = Color.Gray; break; } } } } catch (Exception ex) { DebugMsg(string.Format("MacroscopeDisplayCustomFilters: {0}", ex.Message)); DebugMsg(string.Format("MacroscopeDisplayCustomFilters: {0}", ex.StackTrace)); } } else { DebugMsg(string.Format("MacroscopeDisplayCustomFilters MISSING: {0}", PairKey)); } if (msDoc.GetIsInternal()) { lvItem.SubItems[ColUrl].ForeColor = Color.Green; } else { lvItem.SubItems[ColUrl].ForeColor = Color.Gray; } if (Regex.IsMatch(StatusCode, "^[2]")) { lvItem.SubItems[ColStatusCode].ForeColor = Color.Green; lvItem.SubItems[ColStatus].ForeColor = Color.Green; } else if (Regex.IsMatch(StatusCode, "^[3]")) { lvItem.SubItems[ColStatusCode].ForeColor = Color.Goldenrod; lvItem.SubItems[ColStatus].ForeColor = Color.Goldenrod; } else if (Regex.IsMatch(StatusCode, "^[45]")) { lvItem.SubItems[ColStatusCode].ForeColor = Color.Red; lvItem.SubItems[ColStatus].ForeColor = Color.Red; } else { lvItem.SubItems[ColStatusCode].ForeColor = Color.Blue; lvItem.SubItems[ColStatus].ForeColor = Color.Blue; } if (MacroscopePreferencesManager.GetShowProgressDialogues()) { Count++; MajorPercentage = ((decimal)100 / TotalDocs) * Count; ProgressForm.UpdatePercentages( Title: null, Message: null, MajorPercentage: MajorPercentage, ProgressLabelMajor: string.Format("Document {0} / {1}", Count, TotalDocs) ); } } this.DisplayListView.Items.AddRange(ListViewItems.ToArray()); this.DisplayListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); this.DisplayListView.Columns[ColUrl].Width = 300; this.DisplayListView.Columns[ColStatusCode].Width = 100; this.DisplayListView.Columns[ColStatus].Width = 100; this.DisplayListView.Columns[ColMimeType].Width = 100; if (MacroscopePreferencesManager.GetShowProgressDialogues()) { ProgressForm.DoClose(); } if (ProgressForm != null) { ProgressForm.Dispose(); } }
/**************************************************************************/ private void BuildWorksheetCustomFilter( MacroscopeJobMaster JobMaster, CsvWriter ws ) { MacroscopeDocumentCollection DocCollection = JobMaster.GetDocCollection(); MacroscopeAllowedHosts AllowedHosts = JobMaster.GetAllowedHosts(); Dictionary <string, int> FilterColsTable = new Dictionary <string, int> (CustomFilter.GetSize()); const int FilterColOffset = 3; { ws.WriteField(MacroscopeConstants.Url); ws.WriteField(MacroscopeConstants.StatusCode); ws.WriteField(MacroscopeConstants.Status); ws.WriteField(MacroscopeConstants.ContentType); for (int Slot = 0; Slot < CustomFilter.GetSize(); Slot++) { string FilterPattern = CustomFilter.GetPattern(Slot).Key; if (FilterColsTable.ContainsKey(FilterPattern) || string.IsNullOrEmpty(FilterPattern)) { FilterColsTable.Add(string.Format("EMPTY{0}", Slot + 1), Slot + FilterColOffset); ws.WriteField(string.Format("EMPTY{0}", Slot + 1)); } else { FilterColsTable.Add(FilterPattern, Slot + FilterColOffset); ws.WriteField(FilterPattern); } } ws.NextRecord(); } foreach (string Url in DocCollection.DocumentKeys()) { MacroscopeDocument msDoc = DocCollection.GetDocument(Url); string DocUrl = msDoc.GetUrl(); string StatusCode = (( int )msDoc.GetStatusCode()).ToString(); string Status = msDoc.GetStatusCode().ToString(); string MimeType = msDoc.GetMimeType(); if (!this.CustomFilter.CanApplyCustomFiltersToDocument(msDoc: msDoc)) { continue; } this.InsertAndFormatUrlCell(ws, msDoc); this.InsertAndFormatStatusCodeCell(ws, msDoc); this.InsertAndFormatContentCell(ws, this.FormatIfMissing(msDoc.GetStatusCode().ToString())); this.InsertAndFormatContentCell(ws, this.FormatIfMissing(MimeType)); for (int Slot = 0; Slot < this.CustomFilter.GetSize(); Slot++) { string FilterPattern = this.CustomFilter.GetPattern(Slot: Slot).Key; KeyValuePair <string, MacroscopeConstants.TextPresence> Pair = msDoc.GetCustomFilteredItem(Text: FilterPattern); if ((Pair.Key != null) && (Pair.Value != MacroscopeConstants.TextPresence.UNDEFINED)) { string CustomFilterItemValue = MacroscopeConstants.TextPresenceLabels[Pair.Value]; this.InsertAndFormatContentCell(ws, CustomFilterItemValue); } else { this.InsertAndFormatContentCell(ws, ""); } ws.NextRecord(); } } }