//protected void Timer1_Tick(object sender, EventArgs e)
        //{
        //    litStatus.Text = "Panel refreshed at: " + DateTime.Now.ToLongTimeString();
        //    if (dataSyncJob != null)
        //    {
        //        if (dataSyncJob.logBuilder != null)
        //        {
        //            var processedItems = dataSyncJob.logBuilder.ProcessedItems;
        //            litStatus.Text += processedItems + "";
        //        }
        //    }
        //}
        //public delegate void LongTimeTask_Delegate(string str);
        //public void LongTimeTask(string str)
        //{
        //    Item dataSyncItem = currentDB.Items[ddlImport.SelectedValue];
        //    if (dataSyncItem != null)
        //    {
        //        Logging logBuilder = new Logging();
        //        DataSyncManager.RunDataSyncJob(dataSyncItem, ref logBuilder);
        //        if (logBuilder != null)
        //        {
        //            txtMessage.Text = logBuilder.LogBuilder.Length < 1 ? "The import completed successfully. \r\nStatus: \r\n" + logBuilder.GetItemStatusText() : logBuilder.LogBuilder + "\r\nStatus: \r\n" + logBuilder.GetItemStatusText();
        //        }
        //        else
        //        {
        //            txtMessage.Text = "The log object was null.";
        //        }
        //    }
        //}
        //public void TaskCompleted(IAsyncResult r)
        //{
        //    litStatus.Text = "Job done: " + DateTime.Now.ToLongTimeString();
        //    this.updatePanelStatus.Update();
        //}
        //protected void btnImport_Click(object sender, EventArgs e)
        //{
        //    //LongTimeTask_Delegate d = new LongTimeTask_Delegate(LongTimeTask);
        //    //IAsyncResult r = d.BeginInvoke("String", new AsyncCallback(TaskCompleted), null);
        //    //d.EndInvoke(r);
        //}
        protected void btnImport_Click(object sender, EventArgs e)
        {
            Item dataSyncItem = currentDB.Items[ddlImport.SelectedValue];
            if (dataSyncItem != null)
            {
                LevelLogger logger = Manager.CreateLogger(dataSyncItem);
                var dataSyncManager = new DataSyncManager();
                dataSyncManager.RunDataSyncJob(dataSyncItem, ref logger);

                if (logger != null)
                {
                    var exporter = Manager.CreateOutputHandler(dataSyncItem, logger);
                    if (exporter != null)
                    {
                        txtMessage.Text = exporter.Export();
                    }
                    else
                    {
                        txtMessage.Text = "The Exporter class was null. Therefor the log was not written out.";
                    }
                }
                else
                {
                    txtMessage.Text = "The log object was null.";
                }
            }
        }
        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 Work()
        {
            Item dataSyncItem = currentDB.Items[dataSyncItemId];
            logger = Manager.CreateLogger(dataSyncItem);

            if (dataSyncItem != null)
            {
                var dataSyncManager = new DataSyncManager();
                dataSyncManager.RunDataSyncJob(dataSyncItem, ref logger);

                //if (logBuilder != null)
                //{
                //    txtMessage.Text = logBuilder.LogBuilder.Length < 1 ? "The import completed successfully. \r\nStatus: \r\n" + logBuilder.GetItemStatusText() : logBuilder.LogBuilder + "\r\nStatus: \r\n" + logBuilder.GetItemStatusText();
                //}
                //else
                //{
                //    txtMessage.Text = "The log object was null.";
                //}
            }
        }
 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);
     }
 }