public static bool ShowErrorWindowInNewProcess(Exception ex) { var assemblyHelper = new AssemblyHelper(); string errorReporterPath = assemblyHelper.GetCurrentAssemblyDirectory(); errorReporterPath = Path.Combine(errorReporterPath, "ErrorReport.exe"); if (!File.Exists(errorReporterPath)) { return(false); } try { string errorFile = Path.GetTempPath() + Guid.NewGuid() + ".err"; ReportSerializer.SaveReport(BuildReport(ex), errorFile); Process.Start(errorReporterPath, "\"" + errorFile + "\""); } catch { return(false); } return(true); }
public static void CLRDemo(SqlXml metadata) { // Deserialize the report ReportSerializer serializer = new ReportSerializer(); XmlReader reader = metadata.CreateReader(); RDL.Report report = (RDL.Report)serializer.Deserialize(reader); // Generate the table schema DataTable table = GenerateSchema(report); // Generate preview results GeneratePreviewData(table, report); if (!SqlContext.IsAvailable) { return; } SqlDataRecord record = TableRowToSqlDataRecord(table); SqlContext.Pipe.SendResultsStart(record); foreach (DataRow row in table.Rows) { record.SetValues(row.ItemArray); SqlContext.Pipe.SendResultsRow(record); } SqlContext.Pipe.SendResultsEnd(); return; }
public void SaveToFile(string fileName) { using (var writer = new XmlTextWriter(fileName, Encoding.UTF8)) { ReportSerializer.Save(writer, Report); ReportFileName = fileName; } }
public void LoadFromFile(string fileName) { var report = new Report(); using (var reader = new XmlTextReader(fileName)) { ReportSerializer.Load(reader, report); } SetReport(report); ReportFileName = fileName; }
private void ProcessReportReceived(Report report) { if (runTargetForm.OutputToFile) { using (var writer = new XmlTextWriter(dlgSave.FileName, Encoding.UTF8)) { writer.Formatting = Formatting.Indented; writer.Indentation = 1; writer.IndentChar = ' '; ReportSerializer.Save(writer, report); } } else { ServiceContainer.getService <IReportService>().Open(report); } }
private void ReportingGenerate_Executed(object sender, ExecutedRoutedEventArgs e) { CrawlingContext context = Model.SelectedFile.Model; string defaultFileName = context.FullPath != null?Path.GetFileNameWithoutExtension(context.FullPath.FullName) : "Report"; // Configure save file dialog box SaveFileDialog dlg = new SaveFileDialog(); dlg.FileName = defaultFileName; // Default file name dlg.DefaultExt = ".xlsx"; // Default file extension dlg.Filter = "Excel document (.xlsx)|*.xlsx"; // Filter files by extension // Process save file dialog box results if (dlg.ShowDialog() == true) { context.Status = CrawlingStatus.GeneratingReport; ThreadPool.QueueUserWorkItem(_ => { ExcelPackage pkg = new ExcelPackage(); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateRequestsReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateCachingReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateReferenceSummaryReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateReferencesReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateRedirectionReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateContentReport(context.Resources)); ReportSerializer.AddReport(pkg, ReportGenerator.GenerateErrorsReport(context.Resources)); //foreach (ReportConfig reportConfig in Model.ReportConfigs) // ReportSerializer.AddReport(pkg, ReportGenerator.GenerateReport(reportConfig, context.Resources)); pkg.SaveAs(new FileInfo(dlg.FileName)); context.Status = CrawlingStatus.Ready; RefreshActions(); }); } }
public string CreateReport(IReport report) { var response = ExecuteApiRequest("report/queue", HttpMethod.Post, "criteria", ReportSerializer.SerializeReport(report)); try { var result = JSON.DeserializeDynamic(response.Content.ReadAsStringAsync().Result); return(result.Id); } catch (Exception) { throw new AdzerkApiException("Report result does not contain report Id.", new { response.RequestMessage, response }); } }
private async Task ProcessFeed(bool useLongFeed, bool disableNotice) { using var request = new HttpRequestMessage(HttpMethod.Get, useLongFeed ? "http://www.data.jma.go.jp/developer/xml/feed/eqvol_l.xml" : "http://www.data.jma.go.jp/developer/xml/feed/eqvol.xml"); DateTimeOffset?lastModified; if (useLongFeed) { lastModified = LongFeedLastModified; } else { lastModified = ShortFeedLastModified; } // 初回取得じゃない場合チェックしてもらう if (lastModified != null) { request.Headers.IfModifiedSince = lastModified; } using var response = await Client.SendAsync(request); if (response.StatusCode == HttpStatusCode.NotModified) { Logger.Debug("JMAXMLフィード - NotModified"); return; } Logger.Debug($"JMAXMLフィード更新処理開始 Last:{lastModified:yyyy/MM/dd HH:mm:ss} Current:{response.Content.Headers.LastModified:yyyy/MM/dd HH:mm:ss}"); using var reader = XmlReader.Create(await response.Content.ReadAsStreamAsync()); var feed = SyndicationFeed.Load(reader); // 求めているものを新しい順で舐める var matchItems = feed.Items.Where(i => ParseTitles.Any(t => t == i.Title.Text)); if (useLongFeed) { matchItems = matchItems.OrderByDescending(i => i.LastUpdatedTime); } else { matchItems = matchItems.OrderBy(i => i.LastUpdatedTime); } // URLにないものを抽出 foreach (var item in matchItems) { if (ParsedMessages.Contains(item.Id)) { continue; } Logger.Trace($"処理 {item.LastUpdatedTime:yyyy/MM/dd HH:mm:ss} {item.Title.Text}"); if (!Directory.Exists(CacheFolderName)) { Directory.CreateDirectory(CacheFolderName); } int retry = 0; // リトライループ while (true) { var cresponse = await Client.SendAsync(new HttpRequestMessage(HttpMethod.Get, item.Links[0].Uri)); if (cresponse.StatusCode != HttpStatusCode.OK) { retry++; if (retry >= 10) { Logger.Warning($"XMLの取得に失敗しました! Status: {cresponse.StatusCode} Url: {item.Links[0].Uri}"); break; } continue; } // TODO: もう少し綺麗にしたい try { var cacheFilePath = Path.Join(CacheFolderName, Path.GetFileName(item.Links[0].Uri.ToString())); if (!File.Exists(cacheFilePath)) { using var wstr = File.OpenWrite(cacheFilePath); await(await cresponse.Content.ReadAsStreamAsync()).CopyToAsync(wstr); } using var rstr = File.OpenRead(cacheFilePath); var report = (Report)ReportSerializer.Deserialize(rstr); // TODO: EventIdの異なる電文に対応する var eq = Earthquakes.FirstOrDefault(e => e.Id == report.Head.EventID); if (!useLongFeed || eq == null) { if (eq == null) { eq = new Earthquake { Id = report.Head.EventID, IsSokuhou = true, Intensity = JmaIntensity.Unknown }; if (useLongFeed) { Earthquakes.Add(eq); } else { Earthquakes.Insert(0, eq); } } switch (report.Control.Title) { case "震度速報": { if (!eq.IsSokuhou) { break; } eq.IsSokuhou = true; eq.OccurrenceTime = report.Head.TargetDateTime; eq.IsReportTime = true; var infoItem = report.Head.Headline.Informations.First().Items.First(); eq.Intensity = infoItem.Kind.Name.Replace("震度", "").ToJmaIntensity(); eq.Place = infoItem.Areas.Area.First().Name; break; } case "震源に関する情報": { eq.IsSokuhou = false; eq.OccurrenceTime = report.Body.Earthquake.OriginTime; eq.IsReportTime = false; eq.Place = report.Body.Earthquake.Hypocenter.Area.Name; eq.Magnitude = report.Body.Earthquake.Magnitude.Value; eq.Depth = report.Body.Earthquake.Hypocenter.Area.Coordinate.GetDepth() ?? -1; break; } case "震源・震度に関する情報": { eq.IsSokuhou = false; eq.OccurrenceTime = report.Body.Earthquake.OriginTime; eq.IsReportTime = false; eq.Intensity = report.Body.Intensity?.Observation?.MaxInt?.ToJmaIntensity() ?? JmaIntensity.Unknown; eq.Place = report.Body.Earthquake.Hypocenter.Area.Name; eq.Magnitude = report.Body.Earthquake.Magnitude.Value; eq.Depth = report.Body.Earthquake.Hypocenter.Area.Coordinate.GetDepth() ?? -1; break; } default: Logger.Error("不明なTitleをパースしました。: " + report.Control.Title); break; } if (!disableNotice) { EarthquakeUpdatedEvent.Publish(eq); } } } catch (Exception ex) { Logger.Error("デシリアライズ時に例外が発生しました。 " + ex); } ParsedMessages.Add(item.Id); break; } if (useLongFeed && Earthquakes.Count > 10) { break; } } if (!useLongFeed && Earthquakes.Count > 20) { Earthquakes.RemoveRange(20, Earthquakes.Count - 20); } if (ParsedMessages.Count > 100) { ParsedMessages.RemoveRange(100, ParsedMessages.Count - 100); } if (useLongFeed) { LongFeedLastModified = response.Content.Headers?.LastModified?.UtcDateTime; } else { ShortFeedLastModified = response.Content.Headers?.LastModified?.UtcDateTime; } // キャッシュフォルダのクリーンアップ var cachedFiles = Directory.GetFiles(CacheFolderName, "*.xml"); if (cachedFiles.Length < 20) // 20件以内なら削除しない { return; } foreach (var file in cachedFiles) { if (DateTime.Now - File.GetCreationTime(file) > TimeSpan.FromDays(10)) { File.Delete(file); } } }
static int Main(string[] args) { try { var settings = new WorkSettings(); if (!settings.InitializeFromCommandLine(args)) { return(-1); } if (settings.ErrorsToStdout) { Console.SetError(Console.Out); } using (Registration.Create(settings.Register ? System.Reflection.Assembly.GetExecutingAssembly().Location : null)) { //Console.ReadLine(); var connector = new Connector(); connector.StatusMessageReceived += connector_StatusMessageReceived; connector.LogEntryReceived += connector_LogEntryReceived; connector.UseFileLogging(true); connector.UsePipeLogging(true); connector.SetLogging((Logging)settings.LogLevel); foreach (var item in settings.IncludeItems) { try { connector.IncludeItem(item); } catch (ArgumentException) { Console.Error.WriteLine("Item '" + item + "' have wrong format"); } } foreach (var item in settings.ExcludeItems) { try { connector.ExcludeItem(item); } catch (ArgumentException) { Console.Error.WriteLine("Item '" + item + "' have wrong format"); } } var options = new SessionRunOptions { TargetPath = settings.TargetPath, TargetDirectory = settings.TargetWorkingDir, TargetArguments = settings.TargetArgs, RedirectOutput = true, DelayClose = false, FlattenDomains = !settings.DisableFlattenDomains }; connector.Options = options; connector.StartTarget(); try { var writer = settings.OutputToFile ? new XmlTextWriter(File.CreateText(settings.FileNameForReport)) : new XmlTextWriter(Console.Out); using (writer) { writer.Formatting = Formatting.Indented; writer.Indentation = 1; writer.IndentChar = ' '; ReportSerializer.Save(writer, connector.Report); } } catch (Exception ex) { Console.Error.WriteLine("Can't save report (" + ex.Message + ")"); } #if DEBUG WriteListOfSkippedItems(connector.Report); #endif if (connector.TargetExitCode.HasValue) { return(connector.TargetExitCode.Value); } } // end using } catch (SettingsException ex) { Console.Error.WriteLine(ex.Message); return(-1); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); Console.Error.WriteLine(ex.StackTrace); return(-1); } return(0); }