protected void StartImport() { var dataSyncItem = GetDataSyncItem(); var dataSyncManager = new DataSyncManager(); LevelLogger logger = Manager.CreateLogger(dataSyncItem); OutputHandlerBase exporter = Manager.CreateOutputHandler(dataSyncItem, logger); logger.AddKey(Utility.Constants.DataSyncItemId, dataSyncItem.ID.ToString()); logger.AddData(Utility.Constants.DataSyncItem, dataSyncItem); var map = dataSyncManager.InstantiateDataMap(dataSyncItem, ref logger); if (map != null) { var options = new JobOptions("DataSyncWizard", "Job category name", Context.Site.Name, new DataSyncWizard(), "Run", new object[] {map, map.Logger, exporter}); var job = JobManager.Start(options); job.Options.CustomData = map.Logger; JobHandle = job.Handle.ToString(); SheerResponse.Timer("CheckStatus", 5); } else { Active = "LastPage"; BackButton.Disabled = true; if (logger.HasErrorsOrInfos()) { if (exporter != null) { ResultText.Value = exporter.Export(); } else { ResultText.Value = "The Exporter class was null. Therefor the log was not written out."; } } } }
public void RunJob(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem) { try { if (scheduledItem != null) { var itemIds = scheduledItem[ItemsFieldName]; if (!String.IsNullOrEmpty(itemIds)) { var dataSourceCache = new Dictionary<string, string>(); var idList = itemIds.Split('|'); if (idList.Any()) { foreach (var id in idList) { if (ID.IsID(id)) { var dataSyncItem = scheduledItem.Database.GetItem(new ID(id)); try { if (dataSyncItem != null) { var startedAt = DateTime.Now; LevelLogger logger = Manager.CreateLogger(dataSyncItem); logger.AddKey(Utility.Constants.DataSyncItemId, dataSyncItem.ID.ToString()); logger.AddData(Utility.Constants.DataSyncItem, dataSyncItem); logger.AddData(Logger.Log.Constants.Identifier, dataSyncItem.Name); var dataSyncManager = new DataSyncManager(); var dataSyncObject = dataSyncManager.InstantiateDataMap(dataSyncItem, ref logger) as XmlDataMap; if (dataSyncObject != null) { dataSyncObject.DataSourceCache = dataSourceCache; dataSyncObject.Process(); } var finishededAt = DateTime.Now; logger.AddData(Logger.Log.Constants.StartTime, startedAt); logger.AddData(Logger.Log.Constants.EndTime, finishededAt); var exporter = Manager.CreateOutputHandler(dataSyncItem, logger); var logText = exporter.Export(); if (exporter != null) { if (logger != null) { try { MailManager.SendLogReport(ref logger, exporter); } catch (Exception exception) { Diagnostics.Log.Error( "Failed in sending out the mail. Please see the exception message for more details. Exception:" + exception.Message + "\r\n\r\n" + logText, typeof(DataSyncTask)); } if (logger.HasErrors()) { Diagnostics.Log.Error(logText, typeof (DataSyncTask)); } else { Diagnostics.Log.Debug(logText, typeof(DataSyncTask)); } } else { Diagnostics.Log.Error("The Log object was null. This should not happen." + "\r\n\r\n" + logText, typeof(DataSyncTask)); } } else { Diagnostics.Log.Error("The Exporter class was null. Therefor the log was not written out.\r\n\r\n" + logText, typeof(DataSyncTask)); } } else { Diagnostics.Log.Error("The Task item had Items defined in Items[] that was null. This should not happen.", typeof (DataSyncTask)); } } catch (Exception exception) { var itemId = dataSyncItem != null ? dataSyncItem.ID.ToString() : string.Empty; Diagnostics.Log.Error( Identifier + String.Format( " - An exception occured in the execution of the task in the foreach (Item dataSyncItem in itemArray) of the DataSync item: {0}. This datasync job wasn't completed. Exception: {1}", itemId, exception.Message), typeof (DataSyncTask)); } } else { Diagnostics.Log.Error( Identifier + " - The provided value wasn't a correct Sitecore id. Please add at least one id to 'Items' field of the ScheduledItem. You can also use | to seperate ids. Therefor nothing was done.", typeof(DataSyncTask)); } } } else { Diagnostics.Log.Error( Identifier + " - There wasn't defined any DataSync items to run. Please add at least one id to 'Items' field of the ScheduledItem. You can also use | to seperate ids. Therefor nothing was done.", typeof (DataSyncTask)); } } else { Diagnostics.Log.Error( Identifier + " - There wasn't defined any DataSync items to run. Therefor nothing was done.", typeof (DataSyncTask)); } } else { Diagnostics.Log.Error( Identifier + " - The ScheduledItem was null. Therefor nothing was done.", typeof(DataSyncTask)); } } catch (Exception exception) { Diagnostics.Log.Error(Identifier + " - An exception occured in the execution of the task.", exception); } }