/// <summary> /// Sync data from GeniusDB and hosted in .144 which is the transfer DB /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\Sync-TROil.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var lastSyncTime = new DateTime(1900, 1, 1); var currentSyncTime = startTime.AddHours(8); //using (var vavEntities = new VAVEntities()) //{ // var date = // vavEntities.SCHEDULERLOGs.Where(x => x.STATUS == 0 && x.JOBTYPE == this.JobType).Select( // x => (DateTime?)x.STARTTIME).Max(); // if (date != null) // lastSyncTime = date.Value.AddHours(-0.5); //} try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); strInfo.Append(dataSync.SyncEachTableFromMaxMtime(sourceTable, "ChangeDate")); //strInfo.Append(dataSync.Sync(sourceTable)); } var endTime = DateTime.UtcNow; logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// 保存 /// </summary> /// <param name="library"></param> /// <param name="version"></param> /// <param name="manager"></param> public void Save(Library library, int version, XmlSettingManager <LibrarySettings> manager) { if (!library.IsLibrarySettingsLoaded) { return; } var defaultSort = library.Searcher.GetDefaultSort().ToList(); var defaultGroupSort = library.Searcher.GetDefaultGroupSort().ToList(); if (!this.IsChanged(library, defaultSort, defaultGroupSort)) { return; } this.SearchSettings = library.Searcher.SearchHistory.Select(x => x.Clone()).ToList(); this.FavoriteSearch = library.Searcher.FavoriteSearchList.Select(x => x.Clone()).ToList(); this.DefaultSort = defaultSort; this.DefaultGroupSort = defaultGroupSort; this.Version = version; manager.SaveXml(this); this.isChanged = false; }
private DateTime getMaxDateTime(XmlSettingManager setting) { var conn = new OracleConnection(setting.DestinationDb.Conn.Replace("Unicode=True;", "")); conn.Open(); var cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select max(" + setting.DateKeyColumn + ") from " + setting.DateKeyTable; cmd.CommandType = CommandType.Text; var dr = cmd.ExecuteReader(); dr.Read(); if ((dr[0] == null) || (dr[0] == DBNull.Value)) { var maxDate = Convert.ToDateTime("1999-1-1"); conn.Dispose(); return(maxDate); } else { var maxDate = dr.GetDateTime(0); conn.Dispose(); return(maxDate); } }
/// <summary> /// ファイルから読み込み /// </summary> /// <param name="manager"></param> /// <param name="OnErrorOccurred"></param> /// <returns></returns> public static LibrarySettings Load (XmlSettingManager <LibrarySettings> manager, Action <string> OnErrorOccurred) { LibrarySettings tmpLibSettings; var loadedLibSettings = manager.LoadXml (XmlLoadingOptions.UseBackup | XmlLoadingOptions.IgnoreNotFound | XmlLoadingOptions.ReturnNull); if (loadedLibSettings.Value != null) { tmpLibSettings = loadedLibSettings.Value; } else { //オプション初期値 tmpLibSettings = new LibrarySettings(); } if (loadedLibSettings.Message != null) { OnErrorOccurred(loadedLibSettings.Message.Message); } return(tmpLibSettings); }
protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\dsos-increment-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var lastSyncTime = new DateTime(2017, 2, 21); var currentSyncTime = DateTime.Now; try { var failedTableCount = 0; using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { //dataSync.TableSynched += // (sender, e) => // strInfo.AppendFormat // ("{0} rows have been synchronized from {1} \n", // e.NumOfRowsSynched, e.Source); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); strInfo.Append(dataSync.SyncEachTableFromMaxMtime(sourceTable, ref failedTableCount, "asset_last_chg_dt")); //dataSync.Sync(sourceTable); } var endTime = DateTime.UtcNow; logEntity.ENDTIME = endTime; logEntity.JobStatus = failedTableCount > 0 ? JobStatus.Fail : JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow.AddDays(-1); logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
protected override void ExecuteInternal(JobExecutionContext context) { if (DateTime.Now.Hour < 9 || DateTime.Now.Hour > 18) { //"Only this time(9:00Am-6:00Pm) point synchronous;"; return; } var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\EjvBond-data-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var lastSyncTime = new DateTime(2017, 02, 21); var currentSyncTime = DateTime.Now; try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); strInfo.Append(dataSync.SyncEachTableFromMaxMtime(sourceTable, "lastupdate")); //strInfo.Append(dataSync.Sync(sourceTable)); } var endTime = DateTime.UtcNow; logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow.AddDays(-1); logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// Sync data from OpenMarketDB and hosted in .144 which is the transfer DB /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\OpenMarket-data-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); if (DateTime.Now.Hour < 9 || DateTime.Now.Hour > 18) { return; } var lastSyncTime = new DateTime(1900, 1, 1); var currentSyncTime = startTime.AddHours(8); try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.TableMappings.Select(t => t.Source).ToList(); strInfo.Append(dataSync.SyncEachTableFromMaxMtime(sourceTable, "MODIFYDATE")); } var endTime = DateTime.UtcNow; logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
public ImageLibrary(SearchSortManager searcher, string directory) { this.searcher = searcher; this.directory = directory; libraryListXml = new XmlSettingManager <SavedLibraryList> (System.IO.Path.Combine(directory, libraryListFileName)); libraryDiffXml = new XmlSettingManager <List <KeyValuePair <string, FileInformation> > > ((System.IO.Path.Combine(directory, libraryDiffFileName))); }
private StringBuilder SyncZCXData(DateTime starTime) { var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\ZCX2SS.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("File data Sync begin at {0}\n", starTime); strInfo.AppendFormat("Source [Type: {0}, Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Source [Type: FTP, Address: {0}]\n", ConfigurationManager.AppSettings["zcxftpUrl"]); strInfo.AppendFormat("Destination [Type: Oracle DB, Address: {0}]\n", ConfigurationManager.AppSettings["reportConnstr"]); strInfo.AppendFormat("Destination [Type: WebService, Address: {0}]\n", ConfigHelper.GetEndpointClientAddress("StorageServiceImplPort")); var lastSyncTime = GetLastSyncTime(); //string sql = "SELECT MAX(CCXEID) FROM RATE_REP_DATA"; //var lastSyncTime = Convert.ToDateTime(DBHelper.ExecuteScaler(sql).ToString()); var currentSyncTime = starTime; strInfo.AppendFormat("Last successfully sync time : {0}(Eastern Standard Time).\n", lastSyncTime); using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} view in ZCX DB \n", e.NumOfRowsSynched, e.Source); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var ftpUrl = ConfigurationManager.AppSettings["zcxftpUrl"]; strInfo.Append(dataSync.FileSync(ftpUrl, Ftp2SS)); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); return(strInfo); }
private DateTime getMaxDateTime(XmlSettingManager setting) { var conn = new OracleConnection(setting.DestinationDb.Conn); conn.Open(); var cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select max(" + setting.DateKeyColumn + ") from " + setting.DateKeyTable; cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); dr.Read(); var maxDate = dr.GetDateTime(0); conn.Dispose(); return(maxDate); }
private StringBuilder SyncGeniusData(DateTime starTime) { var strInfo = new StringBuilder(); var settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\Genius2SS.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("File data Sync begin at {0}\n", starTime); strInfo.AppendFormat("Source [Type: {0}, Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Source [Type: FTP, Address: {0}\n", ConfigurationManager.AppSettings["geniusftpUrl"]); strInfo.AppendFormat("Destination [Type: Oracle DB, Address: {0}]\n", ConfigurationManager.AppSettings["reportConnstr"]); strInfo.AppendFormat("Destination [Type: WebService, Address: {0}]\n", ConfigHelper.GetEndpointClientAddress("StorageServiceImplPort")); var lastSyncTime = GetLastSyncTime().AddHours(8); var currentSyncTime = starTime.AddHours(8); strInfo.AppendFormat("Last successfully sync time : {0}.\n", lastSyncTime); using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} table in Genius DB\n", e.NumOfRowsSynched, e.Source); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var ftpUrl = ConfigurationManager.AppSettings["geniusftpUrl"]; strInfo.Append(dataSync.FileSync(ftpUrl, Ftp2SS)); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); strInfo.AppendFormat("Synchronization completed at {0}.\n", DateTime.UtcNow); return(strInfo); }
public ApplicationCoreData(string directory) { this.directory = directory; this.IsCoreSettingsLoaded = false; this.IsLibrarySettingsLoaded = false; settingXml = new XmlSettingManager <ApplicationSettings> (System.IO.Path.Combine(directory, settingFileName)); librarySettingXml = new XmlSettingManager <LibrarySettings> (System.IO.Path.Combine(directory, librarySettingFileName)); this.coreSettings = new ApplicationSettings(); this.Tags = new TagDictionary(); this.XmlLoadingMessages = new List <string>(); this.Searcher = new SearchSortManager(); //this.KnownFoldersManager = new KnownFoldersManager(); }
protected override void ExecuteInternal(JobExecutionContext context) { if (DateTime.Now.Hour < 9 || DateTime.Now.Hour > 18) { //"Only this time(9:00Am-6:00Pm) point synchronous;"; return; } var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime, JOBTYPE = JobType }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\MarketData-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("MarketData-sync.xml data Sync begin at {0}(System Time)\n", DateTime.Now); strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var mtime = OracleHelper.GetSingle("SELECT max(MODIFYDATE) FROM ejvasset"); var lastSyncTime = mtime == null?Convert.ToDateTime("1999-1-1") : Convert.ToDateTime(mtime); var currentSyncTime = DateTime.Now; try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} to {2}.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); dataSync.Sync(sourceTable); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); var endTime = DateTime.Now; strInfo.AppendFormat("Synchronization completed at {0}.\n", endTime); logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); } catch (Exception e) { logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + e; } finally { logEntity.ENDTIME = DateTime.UtcNow; WriteLogEntity(logEntity); } }
protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; string connStr = ConfigurationManager.AppSettings["mergeData"]; var conn = new OracleConnection(connStr); conn.Open(); var tran = conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\MySteel-data-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); DateTime lastSyncTime; var currentSyncTime = DateTime.Now; using (var cmd = new OracleCommand("SELECT max(dLastAccess) FROM RTMS_TABLEDATA ", conn)) { object obj = cmd.ExecuteScalar(); lastSyncTime = Convert.ToDateTime(obj.ToString()); strInfo.AppendFormat("Last successfully sync time : {0}.\n", obj); } try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} table in SYNC_REUTERS DB to {2} table in CnE DB.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); dataSync.Sync(sourceTable); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); var merge = new MergeData(); merge.ExecuteMetals(conn, tran); tran.Commit(); var endTime = DateTime.UtcNow; logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { tran.Rollback(); logEntity.ENDTIME = DateTime.UtcNow.AddDays(-1); logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// Sync data from GeniusDB and hosted in .144 which is the transfer DB /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\EJVMigration2.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var lastSyncTime = new DateTime(2017, 3, 17); var currentSyncTime = startTime.AddHours(8); try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); strInfo.Append(dataSync.SyncEachTableFromMaxMtime(sourceTable, "asset_last_chg_dt")); //strInfo.Append(dataSync.Sync(sourceTable)); } var endTime = DateTime.UtcNow; //Update Bond Info strInfo.AppendFormat("Update Bond Info en&cn start at {0}.\n", DateTime.UtcNow.ToGMT8String()); SyncUtil.UpdateBondInfo(lastSyncTime, currentSyncTime); strInfo.AppendFormat("Update Bond Info en&cn completed at {0}.\n ", DateTime.UtcNow.ToGMT8String()); //Rebuild Index strInfo.AppendFormat("Rebuild Index at {0}.\n", DateTime.UtcNow.ToGMT8String()); var result1 = SolrClient.RebuildIndex("full"); endTime = DateTime.UtcNow; strInfo.AppendFormat("Rebuild Index completed at {0}.\n Result: {1}\n", DateTime.UtcNow.ToGMT8String(), result1); logEntity.ENDTIME = endTime; logEntity.JobStatus = (result1 == "Success") ? JobStatus.Success : JobStatus.Fail; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// Sync data from GeniusDB and hosted in .144 which is the transfer DB /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigFilePath); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping //strInfo.AppendFormat("File data Sync begin at {0}\n", startTime.ToGMT8String()); strInfo.AppendFormat("<p>Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]</p>", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); strInfo.AppendFormat("<p>Source [Type: {0} Address: {1}]\n", "WebService", ConfigHelper.GetEndpointClientAddress("StorageServiceImplPort")); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]</p>", "WebService", ConfigHelper.GetEndpointClientAddress("StorageServiceImplPort1")); var lastSyncTime = getMaxDateTime(settingManager); // from last sync time var from = lastSyncTime; // to now - 1h var to = startTime.AddHours(8).AddHours(-settingManager.DeltaHours); strInfo.AppendFormat("<p>Max '{0}' of table '{1}' : {2}.</p>", settingManager.DateKeyColumn, settingManager.DateKeyTable, from); strInfo.AppendFormat("<p>Sync duration : {0} to : {1} .</p>", from, to); try { using (var dataSync = new DataSynchronizer(settingManager, from, to)) { dataSync.TableSynched += (sender, e) => LogFileSyncInfo(sender, e); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); strInfo.Append(dataSync.Sync(sourceTable)); } strInfo.AppendFormat("{0} table(s) synchronized.\n", settingManager.TableMappings.Count()); var endTime = DateTime.UtcNow; //strInfo.AppendFormat("Synchronization completed at {0}.\n", endTime.ToGMT8String()); logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n<b>Exception detail:</b>\n" + exception + "\n<p>No tables synchronized.</p>"; WriteLogEntity(logEntity); } }
protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); var lastSyncTime = new DateTime(2016, 8, 22); var currentSyncTime = DateTime.Now; using (var cneEntities = new CnEEntities()) { var date = cneEntities.SCHEDULERLOGs.Where(x => x.STATUS == 0 && x.JOBTYPE == JobType).Select( x => (DateTime?)x.STARTTIME).Max(); if (date != null) { lastSyncTime = date.Value.AddHours(8); strInfo.AppendFormat("Last successfully sync time : {0}.\n", lastSyncTime); //Add Buffer lastSyncTime = lastSyncTime.AddHours(-1); } } try { string settingFilePath2 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\CusteelTo144.xml"); var settingManager2 = new XmlSettingManager(File.ReadAllText(settingFilePath2)); var DestinationDbConn2 = string.Empty; settingManager2.Init(DestinationDbConn2);//初始化 mapping strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager2.SourceDb.Type, settingManager2.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager2.DestinationDb.Type, settingManager2.DestinationDb.Conn); using (var dataSync = new DataSynchronizer(settingManager2, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} view in Cne DB to {2} table in Cne DB.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager2.SourceTableName.Split(','); dataSync.Sync(sourceTable); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager2.TableMappings.Count()); /***********************/ var endTime = DateTime.UtcNow; strInfo.AppendFormat("Synchronization completed at {0}.\n", endTime.ToGmt8String()); logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// Execute the actual job. The job data map will already have been /// applied as object property values by execute. The contract is /// exactly the same as for the standard Quartz execute method. /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime, JOBTYPE = JobType }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\dsos-new-increment-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string //var entityConnectionString = // ConfigurationManager.ConnectionStrings["VAVEntities"].ConnectionString; //var connectionStringBuilder = new EntityConnectionStringBuilder(entityConnectionString); //var DestinationDbConn = connectionStringBuilder.ProviderConnectionString; settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("DSOS Sync begin at {0}\n", startTime); strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); // Get Last successfully date time. var lastSyncTime = new DateTime(2015, 3, 1); using (var vavEntities = new VAVEntities()) { var date = vavEntities.SCHEDULERLOGs.Where(x => x.STATUS == 0 && x.JOBTYPE == this.JobType).Select( x => (DateTime?)x.STARTTIME).Max(); if (date != null) { lastSyncTime = date.Value; //Add Buffer lastSyncTime = lastSyncTime.AddHours(-1.5); } } strInfo.AppendFormat("Last successfully sync time : {0}(Eastern Standard Time).\n", startTime); try { List <string> tables; //if (hour >= 12 && hour <= 14) //sync iss_def //{ // //Delete iss_def // strInfo.AppendFormat("Delete iss_def at {0}.\n", DateTime.UtcNow.ToGMT8String()); // var re = SyncUtil.Delete_Iss_Def(); // strInfo.AppendFormat("Delete iss_def at {0}.\n Result: {1}", DateTime.UtcNow.ToGMT8String(), re); // tables = GetDsosSrcTablesToSync().ToList(); //} //else //{ // tables = GetDsosSrcTablesToSync().ToList(); // var s = tables.Single(t => t == "govcorp..iss_def"); // tables.Remove(s); //} tables = settingManager.TableMappings.Select(t => t.Source).ToList(); using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, startTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} view in DSOS to {2} table in VAV DB.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); dataSync.Sync(tables); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); strInfo.AppendFormat("Synchronization completed at {0}.\n", DateTime.UtcNow.ToGMT8String()); //Update Bond Info strInfo.AppendFormat("Update Bond Info en&cn start at {0}.\n", DateTime.UtcNow.ToGMT8String()); //var result = SyncUtil.UpdateBondInfo(lastSyncTime, currentSyncTime); var endTime = DateTime.UtcNow; //strInfo.AppendFormat("Update Bond Info en&cn completed at {0}.\n Result: {1}", DateTime.UtcNow.ToGMT8String(), result); ////Rebuild Index //strInfo.AppendFormat("Rebuild Index at {0}.\n", DateTime.UtcNow.ToGMT8String()); //var result1 = SolrClient.RebuildIndex("full"); //strInfo.AppendFormat("Rebuild Index completed at {0}.\n Result: {1}", DateTime.UtcNow.ToGMT8String(), result1); logEntity.ENDTIME = endTime; //logEntity.JobStatus = (result == "Success" && result1 == "Success") ? JobStatus.Success : JobStatus.Fail; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
/// <summary> /// Execute the actual job. The job data map will already have been /// applied as object property values by execute. The contract is /// exactly the same as for the standard Quartz execute method. /// </summary> /// <seealso cref="M:Spring.Scheduling.Quartz.QuartzJobObject.Execute(Quartz.JobExecutionContext)"/> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.UtcNow; var logEntity = new SCHEDULERLOG { STARTTIME = startTime, JOBTYPE = JobType }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\File-To-IPP-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string var destinationDbConn = string.Empty; settingManager.Init(destinationDbConn);//初始化 mapping strInfo.AppendFormat("<p>Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]</p>\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var from = getMaxDateTime(settingManager); var to = startTime.AddHours(8).AddHours(-settingManager.DeltaHours); strInfo.AppendFormat("<p>Max '{0}' of table '{1}' : {2}.</p>", settingManager.DateKeyColumn, settingManager.DateKeyTable, from); strInfo.AppendFormat("<p>Sync duration : {0} to : {1} .</p>", from, to); try { using (var dataSync = new DataSynchronizer(settingManager, from, to)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} view in CMAFileDB to {2} table in IPP DB.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); strInfo.Append(dataSync.Sync(new[] { "GetNewInstitution", "GetNewFile" })); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); //Update File Topic strInfo.AppendFormat("<p>Update File Topic start at {0}.\n", DateTime.UtcNow.ToGMT8String()); var result = SyncUtil.UpdateFileTopic(from, to); strInfo.AppendFormat("Update File Topic completed at {0}.\n Result: {1}</p>", DateTime.UtcNow.ToGMT8String(), result); //Rebuild Index strInfo.AppendFormat("<p>Rebuild Index at {0}.\n", DateTime.UtcNow.ToGMT8String()); var result1 = SolrClient.RebuildIndex("full"); var endTime = DateTime.UtcNow; strInfo.AppendFormat("Rebuild Index completed at {0}.\n Result: {1}</p>", DateTime.UtcNow.ToGMT8String(), result); if (result1 != "Success") { strInfo.AppendFormat("<p style=\"color:red;\">Solr rebuild failed:<br />{0}</p>", result1); } logEntity.ENDTIME = endTime; logEntity.JobStatus = (result == "Success" && result1 == "Success") ? JobStatus.Success : JobStatus.Fail; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.UtcNow; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n<b>Exception detail:</b>\n" + exception + "\n<p>No tables synchronized.</p>"; WriteLogEntity(logEntity); } }
/// <summary> /// Sync china local data from sql server to oracle /// </summary> protected override void ExecuteInternal(JobExecutionContext context) { var startTime = DateTime.Now; var logEntity = new SCHEDULERLOG { STARTTIME = startTime }; var strInfo = new StringBuilder(); string settingFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"config\China-local-sync.xml"); var settingManager = new XmlSettingManager(File.ReadAllText(settingFilePath)); // Set Connection string settingManager.Init(string.Empty);//初始化 mapping strInfo.AppendFormat("Bond-misc-sync.xml data Sync begin at {0}(System Time)\n", DateTime.Now); strInfo.AppendFormat("Source [Type: {0} Address: {1}]\n", settingManager.SourceDb.Type, settingManager.SourceDb.Conn); strInfo.AppendFormat("Destination [Type: {0} Address: {1}]\n", settingManager.DestinationDb.Type, settingManager.DestinationDb.Conn); var lastSyncTime = new DateTime(1900, 1, 1); var currentSyncTime = DateTime.Now; using (var vavEntities = new VAVEntities()) { var date = vavEntities.SCHEDULERLOGs.Where(x => x.STATUS == 0 && x.JOBTYPE == this.JobType).Select( x => (DateTime?)x.STARTTIME).Max(); if (date != null) { lastSyncTime = date.Value.AddHours(-1.5); } } strInfo.AppendFormat("Last successfully sync time : {0}(System Time).\n", lastSyncTime); try { using (var dataSync = new DataSynchronizer(settingManager, lastSyncTime, currentSyncTime)) { dataSync.TableSynched += (sender, e) => strInfo.AppendFormat ("{0} rows have been synchronized from {1} to {2}.\n", e.NumOfRowsSynched, e.Source, e.Dest); dataSync.PostTaskExecuted += (sender, e) => strInfo.AppendFormat ("Post sync task {0} is executed.\n", e.TaskName); dataSync.Init(); var sourceTable = settingManager.SourceTableName.Split(','); dataSync.Sync(sourceTable); } strInfo.AppendFormat("{0} table(s) be synchronized.\n", settingManager.TableMappings.Count()); var endTime = DateTime.Now; strInfo.AppendFormat("Synchronization completed at {0}.\n", endTime); logEntity.ENDTIME = endTime; logEntity.JobStatus = JobStatus.Success; logEntity.RUNDETAIL = strInfo.ToString(); WriteLogEntity(logEntity); } catch (Exception exception) { logEntity.ENDTIME = DateTime.Now; logEntity.JobStatus = JobStatus.Fail; logEntity.RUNDETAIL = strInfo + "\n" + exception; WriteLogEntity(logEntity); } }
public Library(ILibraryConfiguration config) { this.config = config; this.librarySettingXml = new XmlSettingManager <LibrarySettings> (System.IO.Path.Combine(config.SaveDirectory, librarySettingFileName)); this.MessageSubject = new Subject <string>().AddTo(this.Disposables); this.IsCreatingSubject = new BehaviorSubject <bool>(false).AddTo(this.Disposables); this.DatabaseUpdatedSubject = new Subject <DatabaseUpdatedEventArgs>().AddTo(this.Disposables); this.Searcher = new SearchSortManager(); //Initialize Database this.Database = new DatabaseFront(System.IO.Path.Combine(config.SaveDirectory, databaseFileName)) { Version = databaseVersion, }; this.Records = new TypedTable <Record, string>(this.Database, nameof(Records)) { IsIdAuto = false, Version = databaseVersion, }; this.RecordTracker = new Tracker <Record, string>(this.Records).AddTo(this.Disposables); this.DefineMigration(); this.Tags = new TagDictionary().AddTo(this.Disposables); this.TagDatabase = new AutoTrackingTable <TagInformation, int> (this.Database, nameof(TagDatabase), trackIntervalTime, this.Tags.Added, databaseVersion) .AddTo(this.Disposables); this.Folders = new FolderDictionary().AddTo(this.Disposables); this.FolderDatabase = new AutoTrackingTable <FolderInformation, int> (this.Database, nameof(FolderDatabase), trackIntervalTime, this.Folders.Added, databaseVersion) .AddTo(this.Disposables); this.ExifManager = new ExifManager().AddTo(this.Disposables); this.ExifVisibilityDatabase = new AutoTrackingTable <ExifVisibilityItem, int> (this.Database, nameof(ExifVisibilityDatabase), trackIntervalTime, this.ExifManager.Added, databaseVersion) .AddTo(this.Disposables); this.Folders.FileTypeFilter = this.config.FileTypeFilter; this.Folders.FolderUpdated.Subscribe(x => this.CheckFolderUpdateAsync(x).FireAndForget()) .AddTo(this.Disposables); this.RecordTracker.Updated.Subscribe(this.DatabaseUpdatedSubject).AddTo(this.Disposables); this.RecordQuery = new RecordQuery(this.Records, this); this.GroupQuery = new GroupQuery(this.Records, this); this.Grouping = new Grouping(this.Records, this); this.QueryHelper = new LibraryQueryHelper(this.Records, this); this.QueryHelper.Updated.Subscribe(this.DatabaseUpdatedSubject).AddTo(this.Disposables); this.Creator = new LibraryCreator(this, this.config) { TagDictionary = this.Tags, Records = this.Records, CompletingTask = this.MakeDirectoryTree, } .AddTo(this.Disposables); this.Creator.Loaded.Select(_ => new DatabaseUpdatedEventArgs() { Action = DatabaseAction.Refresh, Sender = this.Creator, }) .Subscribe(this.DatabaseUpdatedSubject) .AddTo(this.Disposables); this.IsLibrarySettingsLoaded = false; }
//public const string settingsFileName = "appsettings.config"; //private const int settingVersion = 3; //private XmlSettingManager<ApplicationSettings> SettingsXml { get; set; } //private ApplicationSettings Settings { get; set; } //private string GetOldLibraryDirectory() //{ // var dir = System.Environment.GetFolderPath // (Environment.SpecialFolder.LocalApplicationData); // // var saveDirectory = // Path.Combine(dir, @"Packages\60037Boredbone.MikanViewer_8weh06aq8rfkj\LocalState"); // // return saveDirectory; //} public async Task ConvertOldLibraryAsync (string saveDirectory, string settingFileName, string oldLibraryDirectory, int settingVersion) { if (saveDirectory == null || settingFileName == null || oldLibraryDirectory == null) { return; } Console.WriteLine($"Loading..."); var config = new LibraryConfiguration(saveDirectory) { Concurrency = 512, FileTypeFilter = new HashSet <string>(), FileSystem = new FileSystem(), }; LibraryOwner.SetConfig(config); using (var library = LibraryOwner.GetCurrent()) { library.InitSettings(); await library.LoadAsync(); //ストレージに保存する設定 var settingsXml = new XmlSettingManager <ApplicationSettings> (Path.Combine(saveDirectory, settingFileName)); var settings = settingsXml .LoadXml(XmlLoadingOptions.IgnoreAllException | XmlLoadingOptions.UseBackup) .Value; using (var locking = await library.LockAsync()) { //var saveDirectory = this.GetOldLibraryDirectory(); var converter = new LibraryConverter.Compat.Converter(); await converter.Start1(oldLibraryDirectory, settings); var data = library.GetDataForConvert(); var count = 0; await converter.Start2(data.Item1, data.Item2, data.Item3, x => count = x, x => { Console.CursorLeft = 0; Console.Write($"Importing {x} / {count}"); }); Console.WriteLine(""); library.SaveSettings(); } try { settings.Version = settingVersion; settingsXml.SaveXml(settings); } catch { } } }