/// <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); } }
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); } }
private void SynchronizeProperties() { DataSynchronizer propertySynchronizer = CreatePropertyMap(); Console.WriteLine("Synchronizing properties eManager->whiteboard"); try { propertySynchronizer.Synchronize(); } catch (WebException e) { Console.WriteLine(WebCommunication.ReadResponseToEnd(e.Response)); throw; } }
protected override void AwakeSingleton() { DataHandler dataHandler = new DataHandler(new DataModel(), new DataModel()); DataInteraction = dataHandler; StorageDataReaderWriter storageDataReaderWriter = new DataLoader (this, new LocalDataStorage(this), new CloudDataStorage(this)); DataSynchronizer dataSynchronizer = new DataSynchronizer(dataHandler, DataInteraction.Getter, storageDataReaderWriter); DataFromStorageToModelUpdater = dataSynchronizer; DataFromModelToStorageUpdater = dataSynchronizer; DataReseter = dataSynchronizer; SynchronizerNotifier = dataSynchronizer; }
protected override DataSynchronizer CreatePropertyMap() { var propertyMap = new SynchronizationMap(EManagerAgent, WhiskWorkAgent); propertyMap.AddReciprocalEntry("name", "name"); propertyMap.AddReciprocalEntry("unid", "unid"); propertyMap.AddReciprocalEntry("title", "title"); propertyMap.AddReciprocalEntry("team", "team"); propertyMap.AddReciprocalEntry("release", "release"); propertyMap.AddReciprocalEntry("project", "project"); propertyMap.AddReciprocalEntry("leanstatus", "leanstatus"); propertyMap.AddReciprocalEntry("priority", "priority"); var propertySynchronizer = new DataSynchronizer(propertyMap, EManagerAgent, WhiskWorkAgent); propertySynchronizer.SynchronizeOrdinal = true; return(propertySynchronizer); }
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 void SynchronizeResponsible() { var responsibleMap = new SynchronizationMap(_whiskWorkAgent, _eManagerAgent); responsibleMap.AddReciprocalEntry("unid", "unid"); responsibleMap.AddReciprocalEntry("responsible", "CurrentPerson"); var responsibleSynchronizer = new DataSynchronizer(responsibleMap, _whiskWorkAgent, _eManagerAgent); if (!_isSafeSynch) { Console.WriteLine("Synchronizing responsible whiteboard->eManager"); responsibleSynchronizer.Synchronize(); } else { Console.WriteLine("Synchronizing responsible whiteboard->eManager DISABLED!"); } }
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); }
/// <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); } }
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); } }
/// <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); } }
public void Restore() { DataSynchronizer.SynchronizeFromMod(); }
/// <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> /// 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); } }
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); } }