private void Window_Loaded(object sender, RoutedEventArgs e) { #region 判断依赖是否保存 // Nuget包的生成才需要 lbDependencies.Visibility = Visibility.Hidden; if (_genType == EnumGenType.AsyncClientNuget) { var type = "thrift_" + ThriftGlobal.GenAsyncVersion.ToString(); var dependencies = DependenceHelper.Get(type); if (dependencies == null || dependencies.Count <= 0) { ShowDependenceDialog(); return; } lbDependencies.Content = $"共有{dependencies.Count}个依赖"; lbDependencies.Visibility = Visibility.Visible; } #endregion #region 赋值 var serviceModel = LocalDataHelper.Get(_dte.ActiveDocument.FullName); var configServiceName = serviceModel.ConfigServiceName ?? ""; if (serviceModel.ServiceName == configServiceName) { configServiceName = ""; } tbServiceName.Text = serviceModel.ServiceName ?? ""; tbConfigServiceName.Text = configServiceName; tbPort.Text = serviceModel.Port <= 0 ? "" : serviceModel.Port.ToString(); tbNugetId.Text = serviceModel.NugetId ?? ""; #endregion }
private void Window_Loaded(object sender, RoutedEventArgs e) { #region 判断依赖是否保存 var dependencies = DependenceHelper.Get(type); if (dependencies == null || dependencies.Count <= 0) { // 弹出编辑依赖的窗口 ShowDependenceDialog(); return; } lbDependencies.Content = $"共有{dependencies.Count}个依赖"; #endregion #region 赋值 var serviceModel = LocalDataHelper.Get(_dte.ActiveDocument.FullName); var configServiceName = serviceModel.ConfigServiceName ?? ""; if (serviceModel.ServiceName == configServiceName) { configServiceName = ""; } tbServiceName.Text = serviceModel.ServiceName ?? ""; tbPort.Text = serviceModel.Port <= 0 ? "" : serviceModel.Port.ToString(); #endregion }
protected override async UniTask InitializeAsync() { LocalDataHelper.LoadAllGameData(); LocalDataManager.Instance.SetSaveAction(LocalDataHelper.SaveAllGameData); await NavigationHelper.OpenPage(NavigationViewType.TitlePage, NavigationTriggerState.First); await base.InitializeAsync(); }
public SpeedTestHttpClient() : base(new HttpClientHandler() { Proxy = new WebProxy() }) { Timeout = TimeSpan.FromSeconds(30); ServersConfig = new ServersList( JsonSerializer.Deserialize <List <Server> >( LocalDataHelper.ReadLocalFile("servers.json") ) ); }
private void btnSure_Click(object sender, RoutedEventArgs e) { var serviceName = tbServiceName.Text.Trim(); var configServcieName = tbConfigServiceName.Text.Trim(); int.TryParse(tbPort.Text.Trim(), out int port); var publish = cbPublish.IsChecked; var nugetId = tbNugetId.Text.Trim(); if (string.IsNullOrEmpty(serviceName)) { MessageBox.Show("请输入服务名称\r\n禁止除数字/大小写字母以外的字符", "VSMenu提示"); return; } if (!Regex.IsMatch(serviceName, "^[A-Za-z0-9]+$")) { MessageBox.Show("服务名称为静态类属性名称\r\n禁止除数字/大小写字母以外的字符\r\n\r\nThriftProxy.[服务名称]", "VSMenu提示"); return; } if (port <= 0) { MessageBox.Show("请输入合理的端口号", "VSMenu提示"); return; } if (!serviceName.EndsWith("Service")) { if (serviceName.EndsWith("service")) serviceName = serviceName.TrimEnd("service".ToArray()); serviceName += "Service"; } if (string.IsNullOrEmpty(configServcieName)) configServcieName = serviceName; var model = new ServiceModel() { ServiceName = serviceName, ConfigServiceName = configServcieName, Port = port, Publish = publish ?? false, NugetId = nugetId, }; #region 记录服务名称跟端口号 LocalDataHelper.Save(model, _dte.ActiveDocument.FullName); #endregion var errorMsg = string.Empty; var result = ThriftGenerator.Default.GenCsharp(_dte.ActiveDocument.FullName, _genType, out errorMsg, model); if (!result) MessageBox.Show(errorMsg, "VSMenu提示"); this.Close(); }
private void btnSure_Click(object sender, RoutedEventArgs e) { var serviceName = tbServiceName.Text.Trim(); int.TryParse(tbPort.Text.Trim(), out int port); var publish = cbPublish.IsChecked; if (string.IsNullOrEmpty(serviceName)) { MessageBox.Show("请输入服务名称\r\n禁止除数字/大小写字母以外的字符", "VSMenu提示"); return; } if (!Regex.IsMatch(serviceName, "^[A-Za-z0-9]+$")) { MessageBox.Show("服务名称为静态类属性名称\r\n禁止除数字/大小写字母以外的字符\r\n\r\n.[服务名称]", "VSMenu提示"); return; } if (port <= 0) { MessageBox.Show("请输入合理的端口号", "VSMenu提示"); return; } var model = new ServiceModel() { ServiceName = serviceName, Port = port, Publish = publish ?? false, }; #region 记录服务名称跟端口号 LocalDataHelper.Save(model, _dte.ActiveDocument.FullName); #endregion var errorMsg = string.Empty; var result = GrpcGenerator.Default.GenCsharp(_dte.ActiveDocument.FullName, EnumGrpcGenType.GenNuget_GrpcNet, out errorMsg, model); if (!result) { MessageBox.Show(errorMsg, "VSMenu提示"); } this.Close(); }
#pragma warning disable CA1801 // Remove unused parameter #pragma warning disable IDE0060 // Remove unused parameter /// <summary> /// Get data from DAWA DAGI WebApi and bootload database. /// </summary> /// <param name="transactionInfo">Dummy - not used.</param> /// <returns>Count of all rows.</returns> /// <typeparam name="T">Any DAGI entity class in the JOInformatik.DawaReplication.DataAccess namespace.</typeparam> public static int Dagi <T>(DawaProcessInfo transactionInfo, DateTime starttime) #pragma warning restore IDE0060 // Remove unused parameter #pragma warning restore CA1801 // Remove unused parameter where T : DAGIBase { var methodName = LoggingUtils.GetMethodName(); string entityName = typeof(T).Name; Logger?.Info($"{methodName}: Processing entity {entityName}"); var entityNameApi = entityName.Substring(6).ToLowerInvariant(); // Get rid of starting "DAGI__" int counter = 0; var itemList = new List <T>(); var syncDeletesTime = DateTime.Now; var stopwatch = System.Diagnostics.Stopwatch.StartNew(); using (var httpClient = new HttpClient()) { // Always use "&noformat" for increased performance: var stream = httpClient.GetStreamAsync($"{DawaApiUri}{entityNameApi}?format=geojson&srid={(int)KoordinatsystemSrid.ETRS89}&noformat").Result; stream.ReadTimeout = ReadTimeoutInSeconds * 1000; var fileStream = LocalDataHelper.CreateTempFile(entityName); try { // Remove geojson header and save to file. Read from same file and stop when reaching end of array(list of objects). for (int x = 0; x < DKStedDataStartPos; x++) { stream.ReadByte(); } stream.CopyTo(fileStream); stream.Close(); fileStream.Close(); } catch { // If something goes wrong, make sure to close filestream, so we can try to write to the file again. stream.Close(); fileStream.Close(); throw; } } var fileLocation = LocalDataHelper.RenameTempFile(entityName); Console.Write("Done saving to file."); using (var reader = new JsonTextReader(new StreamReader(fileLocation))) { DBContext.Database.BeginTransaction(); try { while (reader.Read()) { if (reader.TokenType == JsonToken.EndArray) { break; } if (reader.TokenType == JsonToken.StartObject) { var item = JObject.Load(reader); T rootItemAsObject = JsonConvert.DeserializeObject <T>(item.ToString(Formatting.None), UserJsonSerializerSettings); T itemAsObject = JsonConvert.DeserializeObject <T>(item["properties"].ToString(Formatting.None), UserJsonSerializerSettings); itemAsObject.SetEntityFields(item); itemAsObject.Geometry = rootItemAsObject.Geometry; itemList.Add(itemAsObject); counter += 1; if (itemList.Count % DKStedBulkSize == 0) { DBContext.BulkInsertOrUpdate(itemList); itemList.Clear(); } } } Logger?.Info($"{methodName}: Total fetched: {counter}"); DBContext.BulkInsertOrUpdate(itemList); DagiStedHelper.DeleteOldRows(DBContext, entityName, syncDeletesTime); var finishtime = EntityStateHelper.SetEntityStateDone(DBContext, entityName, true, -1, counter); EntityStateHelper.SetEntityStateHistoryDone(DBContext, entityName, true, starttime, finishtime, -1, itemList.Count, 0); if (UseMSApplicationInsights) { TelemetryHelper.AddTelemetryForEntity(EntityProcessMode.Dagi, entityName, stopwatch); } DBContext.Database.CommitTransaction(); } catch (Exception ex) { if (DBContext.Database.CurrentTransaction != null) { DBContext.Database.RollbackTransaction(); } var exception = ex.InnerException ?? ex; var finishtime = EntityStateHelper.SetEntityStateDone(DBContext, entityName, false, -1, counter, exception.Message); EntityStateHelper.SetEntityStateHistoryDone(DBContext, entityName, false, starttime, finishtime, -1, null, null, exception.Message); if (reader != null) { reader.Close(); } throw; } } // Delete temporary file. LocalDataHelper.RemoveTempFile(fileLocation); return(counter); }
/// <summary> /// Main program. /// </summary> /// <param name="args">String arguments for program initialization.</param> public static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; var settings = Properties.Settings.Default; if (settings.UseMSApplicationInsights) { try { ApplicationInsightInitializer.Initialize(); } catch (Exception ex) { var msg = $"ERROR! Failed to initialize MS Application Insights. Problem: {ex.Message}"; Console.WriteLine(msg); _logger.Error(msg, ex); Environment.Exit((int)ReturnCode.ApplicationInsightInitializeError); } } Helpers.InitializeHelpers.HaltIfNoDBConnection(); Helpers.InitializeHelpers.HaltIfAllreadyRunning(); try { #pragma warning disable CS0436 // Type conflicts with imported type SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); #pragma warning restore CS0436 // Type conflicts with imported type string programAssemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); string dataAccessAssemblyVersion = Assembly.GetAssembly(typeof(Adgangsadresse)).GetName().Version.ToString(); var methodName = LoggingUtils.GetMethodName(); Console.WriteLine($"Starting DawaReplication assembly ver. {programAssemblyVersion}; DataAccess ver. {dataAccessAssemblyVersion} ...."); _logger.Info($"{methodName}: Starting DawaReplication assembly ver. {programAssemblyVersion}; DataAccess ver. {dataAccessAssemblyVersion}"); _logger.Info($"{methodName}: Settings = {SettingsHelper.SettingsAsString()}"); _logger.Info($"{methodName}: Time of initialization: {DateTime.Now.ToShortTimeString()}"); var processMode = InitialArgumentHelper.InitializeProcess(args); Helpers.InitializeHelpers.HaltIfDBSchemeNotInitialized(); Console.WriteLine($"Time: {DateTime.Now.ToShortTimeString()}. ProcessMode: {processMode}\n"); var list = TableInfo.GetTableInfoList(AppDomain.CurrentDomain.BaseDirectory + settings.TableInfoFile, false); #pragma warning disable CA2000 // Dispose objects before losing scope var dbContext = new DawaReplicationDBContext(); #pragma warning restore CA2000 // Dispose objects before losing scope if (processMode == EntityProcessMode.Udtraek) { FixDBProblems.FixDbProblems(dbContext); } EntityManager.InitSettings(dbContext, list.Select(x => x.Name).ToList(), settings.DawaApiUri, settings.DawaApiReadTimeoutInSeconds, settings.UdtraekRowsMax, settings.UdtraekBulkSize, settings.DKStedDataStartPos, settings.DKStedBulkSize, settings.DBCommandTimeoutInSeconds, settings.TempDataFolderPath, settings.ActiveFixes, settings.ActiveFixesListFileLocation, settings.UseMSApplicationInsights, settings.JsonSerializerIgnoreNullValue); LocalDataHelper.MakeFolder(settings.TempDataFolderPath); var msg = LoggingUtils.MakeMessage(methodName, " TableInfoFile", list); _logger.Info(msg); var watch = Stopwatch.StartNew(); var dawaProcessInfo = Helpers.InitializeHelpers.MakeDawaProcessInfo(processMode, settings.DawaApiUri, settings.DawaApiReadTimeoutInSeconds, settings.TxidOverride); _logger.Info($"{methodName}: Got latest transaction ID = {dawaProcessInfo.Txid}"); EntityManager.ProcessTables(processMode, dawaProcessInfo); if (dawaProcessInfo.FailedTables.Any() && (processMode == EntityProcessMode.Dagi || processMode == EntityProcessMode.Udtraek)) { for (int i = 1; i <= settings.RetryCount; i++) { msg = $"{methodName}: Failed to process all tables. No of failed tables: {dawaProcessInfo.FailedTables.Count}. Retrying again in {settings.RetryTimerInMinutes * i} minutes."; Console.WriteLine($"\nWARNING. Time: {DateTime.Now.ToShortTimeString()}. {msg}"); _logger.Warn(msg); EntityManager.TableList = new List <string>(dawaProcessInfo.FailedTables); dawaProcessInfo.FailedTables.Clear(); Thread.Sleep(settings.RetryTimerInMinutes * 60 * 1000 * i); EntityManager.ProcessTables(processMode, dawaProcessInfo); if (dawaProcessInfo.FailedTables.Count == 0) { break; } } } if (processMode == EntityProcessMode.Udtraek) { if (settings.RebuildIndicesAfterReplication) { FixDBProblems.RebuildIndices(dbContext); } } if (processMode == EntityProcessMode.Dagi) { LocalDataHelper.CleanUpHelper(settings.EntitystateHistoryDeleteOldNumOfDays, settings.ArchiveLogsAfterDays, settings.DeleteOldArchivesAfterDays, settings.DeleteLogsAfterDays); } dbContext.Dispose(); _logger.Info($"{methodName}: Done. Execution time: {watch.Elapsed}"); _logger.Info($"{methodName}: Time of completion: {DateTime.Now.ToShortTimeString()}"); if (settings.UseMSApplicationInsights) { TelemetryHelper.AddTime(methodName, watch.Elapsed.TotalMinutes, "Minutes"); } if (settings.WaitForUserInput) { Console.WriteLine($"Done: {DateTime.Now.ToShortTimeString()}. Execution time: {watch.Elapsed}" + "\n"); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } catch (Exception ex) { var msg = $"ERROR! Unexpected exception. Problem: {ex.Message}"; Console.WriteLine(msg); Console.WriteLine($"Time at which error occured {DateTime.Now.ToShortTimeString()}"); _logger.Error(msg, ex); if (Properties.Settings.Default.WaitForUserInput) { Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } Environment.Exit((int)ReturnCode.UnknownError); } Environment.Exit((int)ReturnCode.Success); }
/// <summary> /// 로컬 데이터 로드. /// </summary> private void LocalDataLoad() { LocalDataManager.Instance.AddComponentBase(FindObjectOfType <LocalDataComponent>()); LocalDataHelper.LoadAllGameData(); }