コード例 #1
0
        protected virtual void ProcessLevelLoggerAndChildren(LevelLogger levelLogger, LogLine.LogType[] logTypes, ref StringBuilder sb, int level)
        {
            var children = levelLogger.GetChildren();

            if (children != null)
            {
                var prefix = GetPrefixIndent(level);
                foreach (var child in children)
                {
                    var logLine = child as LogLine;
                    if (logLine != null)
                    {
                        if (logTypes == null || logTypes.Contains(logLine.Type))
                        {
                            sb.AppendLine(String.Format("{0} {1}", prefix, OutputLogLine(logLine)));
                            continue;
                        }
                    }
                    var childLevelLogger = child as LevelLogger;
                    if (childLevelLogger != null)
                    {
                        if (childLevelLogger.HasErrorsOrInfos())
                        {
                            var keys = childLevelLogger.HasKeys() ? GetKeys(childLevelLogger) : "";
                            var name = GetCategoryName(childLevelLogger);
                            if (!String.IsNullOrEmpty(name))
                            {
                                sb.AppendLine(String.Format("{0} {1} {2}", prefix, name, keys));
                            }
                            ProcessLevelLoggerAndChildren(childLevelLogger, logTypes, ref sb, level + 1);
                        }
                    }
                }
            }
        }
コード例 #2
0
        protected void Run(BaseDataMap map, LevelLogger logger, OutputHandlerBase exporter)
        {
            Context.Job.Status.State = JobState.Running;
            logger.AddKey(Utility.Constants.DataSyncItemId, map.ImportItem.ID.ToString());
            logger.AddData(Utility.Constants.DataSyncItem, map.ImportItem);
            logger.AddData(Logger.Log.Constants.Identifier, map.ImportItem.Name);
            var startedAt = DateTime.Now;

            logger = map.Process();
            var finishededAt = DateTime.Now;

            logger.AddData(Logger.Log.Constants.StartTime, startedAt);
            logger.AddData(Logger.Log.Constants.EndTime, finishededAt);
            try
            {
                MailManager.SendLogReport(ref logger, exporter);
            }
            catch (Exception exception)
            {
                Diagnostics.Log.Error(exporter.GetIdentifier() + " failed in sending out the mail. Please see the exception message for more details. Exception:" + exception.Message + ". Status:\r\n" +
                                      exporter.Export(), typeof(DataSyncWizard));
            }
            if (logger.HasErrors())
            {
                Context.Job.Status.Failed = true;
            }
            else
            {
                Context.Job.Status.State = JobState.Finished;
            }
        }
コード例 #3
0
        //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.";
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// gets custom data from a DataRow
        /// </summary>
        /// <param name="importRow"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public override string GetFieldValue(object importRow, string fieldName, ref LevelLogger logger)
        {
            var getFieldLogger = logger.CreateLevelLogger();

            try
            {
                DataRow dataRow = importRow as DataRow;
                if (dataRow != null)
                {
                    if (!String.IsNullOrEmpty(fieldName))
                    {
                        object fieldValue = dataRow[fieldName];
                        return((fieldValue != null) ? fieldValue.ToString() : String.Empty);
                    }
                    else
                    {
                        getFieldLogger.AddError(CategoryConstants.TheFieldnameArgumentWasNullOrEmpty, String.Format("The GetFieldValue method failed because the the 'fieldName' was null or empty. ImportRow: {0}.", GetImportRowDebugInfo(importRow)));
                    }
                }
                else
                {
                    getFieldLogger.AddError(CategoryConstants.TheImportRowWasNull, String.Format("The GetFieldValue method failed because the Import Row was null. FieldName: {0}.", fieldName));
                }
            }
            catch (Exception ex)
            {
                getFieldLogger.AddError(CategoryConstants.GetFieldValueFailed, String.Format("The GetFieldValue method failed with an exception. ImportRow: {0}. FieldName: {1}. Exception: {2}.", GetImportRowDebugInfo(importRow), fieldName, ex));
            }
            return(String.Empty);
        }
コード例 #5
0
        public static OutputHandlerBase CreateOutputHandler(Item dataSyncItem, LevelLogger logger)
        {
            string outHandlerAssembly = dataSyncItem[FieldNameOutputHandlerAssembly];
            string outputHandlerClass = dataSyncItem[FieldNameOutputHandlerClass];

            if (!String.IsNullOrEmpty(outHandlerAssembly))
            {
                if (!String.IsNullOrEmpty(outputHandlerClass))
                {
                    OutputHandlerBase outputHandler = null;
                    try
                    {
                        outputHandler = (OutputHandlerBase)Reflection.ReflectionUtil.CreateObject(outHandlerAssembly, outputHandlerClass, new object[] { logger });
                    }
                    catch (FileNotFoundException fnfe)
                    {
                        throw new Exception("The binary specified could not be found" + fnfe.Message, fnfe);
                    }
                    if (outputHandler != null)
                    {
                        return(outputHandler);
                    }
                    throw new Exception(String.Format("The OutputHandler provided could not be instantiated. Assembly:'{0}' Class:'{1}'", outHandlerAssembly, outputHandlerClass));
                }
                else
                {
                    throw new Exception(String.Format("OutputHandler class is not defined"));
                }
            }
            else
            {
                throw new Exception("OutputHandler assembly is not defined");
            }
            return(null);
        }
コード例 #6
0
        public static LevelLogger CreateLogger(Item dataSyncItem)
        {
            string logAssembly = dataSyncItem[FieldNameLogAssembly];
            string logClass    = dataSyncItem[FieldNameLogClass];

            if (!String.IsNullOrEmpty(logAssembly))
            {
                if (!String.IsNullOrEmpty(logClass))
                {
                    LevelLogger logger = null;
                    try
                    {
                        logger = (LevelLogger)Reflection.ReflectionUtil.CreateObject(logAssembly, logClass, new object[] { });
                    }
                    catch (FileNotFoundException fnfe)
                    {
                        throw new Exception("The binary specified could not be found" + fnfe.Message, fnfe);
                    }
                    if (logger != null)
                    {
                        return(logger);
                    }
                    throw new Exception(String.Format("The Log provided could not be instantiated. Assembly:'{0}' Class:'{1}'", logAssembly, logClass));
                }
                else
                {
                    throw new Exception(String.Format("Log class is not defined"));
                }
            }
            else
            {
                throw new Exception("Log assembly is not defined");
            }
            return(null);
        }
コード例 #7
0
        public override string GetFieldValue(object importRow, string fieldName, ref LevelLogger logger)
        {
            var levelLogger = logger.CreateLevelLogger();

            try
            {
                var row = importRow as Dictionary <string, string>;
                if (row != null)
                {
                    if (row.ContainsKey(fieldName))
                    {
                        return(row[fieldName]);
                    }
                    Logger.AddError("Error", string.Format("The fieldName {0} didn't exist in the import row.", fieldName));
                }
            }
            catch (Exception ex)
            {
                levelLogger.AddError("GetFieldValue failed",
                                     string.Format(
                                         "The GetFieldValue method failed with an exception. ImportRow: {0}. FieldName: {1}. Exception: {2}.",
                                         GetImportRowDebugInfo(importRow), fieldName, ex));
            }
            return(string.Empty);
        }
コード例 #8
0
        public static void SendLogReport(ref LevelLogger logger, OutputHandlerBase exporter)
        {
            var dataSyncItem = logger.GetData(Utility.Constants.DataSyncItem) as Item;

            if (dataSyncItem == null)
            {
                logger.AddError("Error", "The DataSyncItem was null. Therefor we couldn't retrieve any mail recipients.");
                return;
            }
            if (exporter == null)
            {
                logger.AddError("Error", "The ExporterBase was null. This class is used to output the logger.");
                return;
            }
            var recipient = dataSyncItem[FieldNameMailRecipients];

            if (String.IsNullOrEmpty(recipient))
            {
                logger.AddInfo("Add Mail Recipients to receive email reports", "If you want to receive email, then fill out the field 'Mail Recipients'.");
            }
            else
            {
                var replyTo = dataSyncItem[FieldNameMailReplyTo];
                if (String.IsNullOrEmpty(replyTo))
                {
                    replyTo = DefaultReplyTo;
                    logger.AddError("Error", "The 'Mail Reply To' field must be defined. Please provide a replyTo address for the mail.");
                }
                var subject = dataSyncItem[FieldNameMailSubject];
                if (String.IsNullOrEmpty(subject))
                {
                    subject = DefaultSubject;
                }

                var result = !logger.HasFatalsOrErrors() ? Success : Failure;
                try
                {
                    subject = String.Format(subject, exporter.GetIdentifier(), result);
                }
                catch (Exception exception)
                {
                    logger.AddError("Error", "SendLogReport had an exception trying to format the subject of the mail." + exception.Message);
                }
                var doNotSendMailOnSuccess = dataSyncItem[FieldNameDoNotSendMailOnSuccess] == SitecoreBooleanTrue;
                if ((doNotSendMailOnSuccess && result == Failure) || !doNotSendMailOnSuccess)
                {
                    try{
                        if (SendMail.SendMailWithoutAttachment(recipient, replyTo, subject, exporter.Export()) == Failure)
                        {
                            logger.AddError("Error", "The SendMailWithoutAttachment failed.");
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.AddError("Error", "The SendMailWithoutAttachment failed with an exception: " + ex.Message);
                    }
                }
            }
        }
コード例 #9
0
 public SqlDataMap(Database db, Item importItem, LevelLogger logger)
     : base(db, importItem, logger)
 {
     if (string.IsNullOrEmpty(Query))
     {
         Logger.AddError("Error", "the 'Query' field was not set");
     }
 }
コード例 #10
0
 public CSVDataMap(Database db, Item importItem, LevelLogger logger, string data)
     : base(db, importItem, logger)
 {
     Data          = data;
     HeaderColumns = new Dictionary <string, int>();
     ImportData    = new List <object>();
     InitializeColumnDelimiterCharacter(importItem);
 }
コード例 #11
0
        public void CheckStatus()
        {
            var job = JobManager.GetJob(Handle.Parse(JobHandle));

            if (job != null)
            {
                var         status       = job.Status;
                var         state        = status.State;
                LevelLogger logger       = (LevelLogger)job.Options.CustomData;
                var         dataSyncItem = logger.GetData(Utility.Constants.DataSyncItem) as Item;

                if (status == null)
                {
                    throw new Exception("The sync process was unexpectedly interrupted.");
                }
                if (state == JobState.Running)
                {
                    NextButton.Disabled   = true;
                    BackButton.Disabled   = false;
                    CancelButton.Disabled = false;
                    if (logger.GetCounter(IncrementConstants.TotalNumberOfItems) > 0)
                    {
                        ImportStatusText.Text = logger.GetCounter(IncrementConstants.ProcessedItems) + " of " + logger.GetCounter(IncrementConstants.TotalNumberOfItems) + " items processed.";
                    }
                    else
                    {
                        ImportStatusText.Text = "Retrieving import data...";
                    }
                    if (logger.GetCounter(IncrementConstants.ProcessedItems) == logger.GetCounter(IncrementConstants.TotalNumberOfItems) && logger.GetCounter(IncrementConstants.ProcessedItems) != 0)
                    {
                        NotPresentStatusText.Text = "Processing items not present in import...";

                        //if (logger.TotalNumberOfNotPresentInImportItems > 0)
                        //{
                        //    NotPresentStatusText.Text = logger.GetCounter(IncrementConstants.DisabledItems) + " of " +
                        //                                logger.TotalNumberOfNotPresentInImportItems +
                        //                                " items not present in import processed.";
                        //}
                    }
                    FailedText.Visible    = logger.GetCounter(IncrementConstants.FailureItems) > 0;
                    FailedStatusText.Text = logger.GetCounter(IncrementConstants.FailureItems) + " items failed.";
                }
                else if (state == JobState.Finished)
                {
                    Status.Text         = String.Format("Items processed: {0}.", logger.GetCounter(IncrementConstants.ProcessedItems).ToString(CultureInfo.CurrentCulture));
                    Active              = "LastPage";
                    BackButton.Disabled = true;
                    var    exporter = Manager.CreateOutputHandler(dataSyncItem, logger);
                    string str2     = exporter.Export();
                    if (!string.IsNullOrEmpty(str2))
                    {
                        ResultText.Value = str2;
                    }
                    return;
                }
                SheerResponse.Timer("CheckStatus", 5);
            }
        }
コード例 #12
0
 protected virtual string GetBaseCacheKey(Item parent, ref LevelLogger logger)
 {
     if (parent == null)
     {
         logger.AddError("The parent item was null in the GetBaseCacheKey method.", "The parent item was null in the GetBaseCacheKey method.");
         return(null);
     }
     return(parent.ID + "");
 }
コード例 #13
0
        /// <summary>
        /// Initializes the object.
        /// </summary>
        private void Start()
        {
            logger        = LevelLogger.instance;
            pathContainer = ObjectUtil.CreateNewObject("Paths");
            pathMaterial  = new Material(Shader.Find("Particles/Additive"));

            if (logFile != null)
            {
                visible = true;
            }
        }
コード例 #14
0
        public void GetAllowedLevels_EmptyMessageTypesAllowed_ReturnNullException()
        {
            // Arrange
            _levelLoggerSettingsMock.Setup(x => x.IsErrorTypeAllowed).Returns(false);
            _levelLoggerSettingsMock.Setup(x => x.IsMessageTypeAllowed).Returns(false);
            _levelLoggerSettingsMock.Setup(x => x.IsWarningTypeAllowed).Returns(false);

            // Act & Assert
            var levelLogger = new LevelLogger(_levelLoggerSettingsMock.Object);

            levelLogger.GetAllowedLevels();
        }
コード例 #15
0
        public SitecoreDataMap(Database db, Item importItem, LevelLogger logger)
            : base(db, importItem, logger)
        {
            //deal with sitecore properties if any
            Item Props = GetItemByTemplate(importItem, Utility.Constants.PropertiesFolderID);

            if (Props.IsNotNull())
            {
                ChildList c = Props.GetChildren();
                if (c.Any())
                {
                    foreach (Item child in c)
                    {
                        //create an item to get the class / assembly name from
                        BaseMapping bm = new BaseMapping(child);
                        if (!string.IsNullOrEmpty(bm.HandlerAssembly))
                        {
                            if (!string.IsNullOrEmpty(bm.HandlerClass))
                            {
                                //create the object from the class and cast as base field to add it to field definitions
                                IBaseProperty bp = null;
                                try {
                                    bp = (IBaseProperty)Sitecore.Reflection.ReflectionUtil.CreateObject(bm.HandlerAssembly, bm.HandlerClass, new object[] { child });
                                } catch (FileNotFoundException fnfe) {
                                    Logger.AddError("Error", string.Format("the property:{0} binary {1} specified could not be found", child.Name, bm.HandlerAssembly));
                                }
                                if (bp != null)
                                {
                                    PropertyDefinitions.Add(bp);
                                }
                                else
                                {
                                    Logger.AddError("Error", string.Format("the property: '{0}' class type {1} could not be instantiated", child.Name, bm.HandlerClass));
                                }
                            }
                            else
                            {
                                Logger.AddError("Error", string.Format("the property: '{0}' Handler Class {1} is not defined", child.Name, bm.HandlerClass));
                            }
                        }
                        else
                        {
                            Logger.AddError("Error", string.Format("the property: '{0}' Handler Assembly {1} is not defined", child.Name, bm.HandlerAssembly));
                        }
                    }
                }
                else
                {
                    Logger.AddError("Warn", "there are no properties to import");
                }
            }
        }
コード例 #16
0
        /// <summary>
        /// gets a field value from an item
        /// </summary>
        /// <param name="importRow"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public override string GetFieldValue(object importRow, string fieldName, ref LevelLogger logger)
        {
            var getFieldValueLogger = logger.CreateLevelLogger();
            var importRowItem       = importRow as Item;

            if (importRowItem != null)
            {
                if (!String.IsNullOrEmpty(fieldName))
                {
                    switch (fieldName.ToLower())
                    {
                    case ("@key"):
                        return(importRowItem.Key);

                    case ("@name"):
                        return(importRowItem.Name);

                    case ("@displayname"):
                        return(importRowItem.DisplayName);

                    case ("@id"):
                        return(importRowItem.ID.ToShortID().ToString());

                    case ("@parentid"):
                        return(importRowItem.Parent != null
                                       ? importRowItem.ParentID.ToShortID().ToString()
                                       : string.Empty);
                    }
                    var field = importRowItem.Fields[fieldName];
                    if (field != null)
                    {
                        return(importRowItem[fieldName]);
                    }
                    getFieldValueLogger.AddError("The 'fieldName' didn't result in any field on the item", String.Format("The GetFieldValue method failed because the the 'fieldName' didn't result in any field on the item. ImportRow: {0}.", GetImportRowDebugInfo(importRow)));
                }
                else
                {
                    getFieldValueLogger.AddError(CategoryConstants.TheFieldnameArgumentWasNullOrEmpty, String.Format("The GetFieldValue method failed because the the 'fieldName' was null or empty. ImportRow: {0}.", GetImportRowDebugInfo(importRow)));
                }
            }
            else
            {
                getFieldValueLogger.AddError(CategoryConstants.TheImportRowWasNull, String.Format(
                                                 "The GetFieldValue method failed because the Import Row was null. FieldName: {0}.",
                                                 fieldName));
            }
            return(String.Empty);
        }
コード例 #17
0
        public void GetAllowedLevels_AllTypesAllowed_ReturnListWithThreeElement()
        {
            // Arrange
            _levelLoggerSettingsMock.Setup(x => x.IsErrorTypeAllowed).Returns(true);
            _levelLoggerSettingsMock.Setup(x => x.IsMessageTypeAllowed).Returns(true);
            _levelLoggerSettingsMock.Setup(x => x.IsWarningTypeAllowed).Returns(true);

            // Act
            var levelLogger = new LevelLogger(_levelLoggerSettingsMock.Object);
            var result      = levelLogger.GetAllowedLevels();

            // Assert
            var expectedItems = 3;

            Assert.AreEqual(expectedItems, result.Count());
        }
コード例 #18
0
        public LevelLogger RunDataSyncJob(Item dataSyncItem, ref LevelLogger logger)
        {
            string errorMessage = String.Empty;

            var map = InstantiateDataMap(dataSyncItem, ref logger);

            if (!String.IsNullOrEmpty(errorMessage))
            {
                logger.AddError("Error", errorMessage);
                return(logger);
            }
            if (map != null)
            {
                logger = map.Process();
            }
            return(logger);
        }
コード例 #19
0
        protected virtual string GetKeys(LevelLogger logger)
        {
            var sb = new StringBuilder();

            if (logger != null && logger.Keys != null)
            {
                foreach (var keyValue in logger.Keys)
                {
                    if (keyValue.Key == "Item")
                    {
                        continue;
                    }
                    sb.AppendFormat("{0}:{1} - ", keyValue.Key, keyValue.Value);
                }
            }
            return(sb.ToString().TrimEnd(new[] { '-', ' ' }));
        }
コード例 #20
0
        public virtual void Initialize(ref LevelLogger logger)
        {
            if (BaseDataMap.IsDisableItemsNotPresentInImport && BaseDataMap.DisableItemsFolderItem != null)
            {
                var disabledLogger = logger.CreateLevelLogger();
                InitializeItemsCache(BaseDataMap.DisableItemsFolderItem, BaseDataMap.IdentifyTheSameItemsByFieldDefinition.GetNewItemField(), ref disabledLogger);
            }
            var itemsAndParentLogger = logger.CreateLevelLogger();

            if (BaseDataMap.FolderByParentHierarchy)
            {
                InitializeItemsCache(BaseDataMap.Parent, BaseDataMap.IdentifyTheSameItemsByFieldDefinition.GetNewItemField() + "|" + BaseDataMap.IdentifyParentByWhatFieldOnParent, ref itemsAndParentLogger);
            }
            else
            {
                InitializeItemsCache(BaseDataMap.Parent, BaseDataMap.IdentifyTheSameItemsByFieldDefinition.GetNewItemField(), ref itemsAndParentLogger);
            }
        }
コード例 #21
0
 private bool TryParseElement(IEnumerable result, out string fieldValue, ref LevelLogger logger)
 {
     fieldValue = String.Empty;
     try
     {
         var xElements = result.Cast <XElement>();
         var elements  = xElements as IList <XElement> ?? xElements.ToList();
         if (elements.Count() > 1)
         {
             string pipeseperatedValues = String.Empty;
             foreach (var element in elements)
             {
                 if (element != null)
                 {
                     var value = element.Value;
                     if (!String.IsNullOrEmpty(value))
                     {
                         pipeseperatedValues += value + "|";
                     }
                 }
             }
             if (pipeseperatedValues.EndsWith("|"))
             {
                 pipeseperatedValues = pipeseperatedValues.TrimEnd('|');
             }
             fieldValue = pipeseperatedValues;
             return(true);
         }
         if (elements.Count() == 1)
         {
             var xElement = elements.First();
             if (xElement != null)
             {
                 fieldValue = xElement.Value;
                 return(true);
             }
         }
     }
     catch (Exception exception)
     {
         return(false);
     }
     return(false);
 }
コード例 #22
0
 private bool TryParseAttribute(IEnumerable result, out string fieldValue, ref LevelLogger logger)
 {
     fieldValue = String.Empty;
     try
     {
         var xAttributes = result.Cast <XAttribute>();
         var attributes  = xAttributes as IList <XAttribute> ?? xAttributes.ToList();
         if (attributes.Count() > 1)
         {
             string pipeseperatedValues = String.Empty;
             foreach (var attribute in attributes)
             {
                 if (attribute != null)
                 {
                     var value = attribute.Value;
                     if (!String.IsNullOrEmpty(value))
                     {
                         pipeseperatedValues += value + "|";
                     }
                 }
             }
             if (pipeseperatedValues.EndsWith("|"))
             {
                 pipeseperatedValues = pipeseperatedValues.TrimEnd('|');
             }
             fieldValue = pipeseperatedValues;
             return(true);
         }
         if (attributes.Count() == 1)
         {
             var xAttribute = attributes.First();
             if (xAttribute != null)
             {
                 fieldValue = xAttribute.Value;
                 return(true);
             }
         }
     }
     catch (Exception exception)
     {
         return(false);
     }
     return(false);
 }
コード例 #23
0
        public override void ValidateImportData(IList <object> importData, ref LevelLogger logger)
        {
            var validateImportDataLogger = logger.CreateLevelLogger();

            foreach (var fieldDefinition in FieldDefinitions)
            {
                var newField = fieldDefinition.GetExistingFieldNames();
                foreach (var existingFieldName in fieldDefinition.GetExistingFieldNames())
                {
                    if (!HeaderColumns.ContainsKey(existingFieldName.ToLower()))
                    {
                        validateImportDataLogger.AddError("A column was expected but not found", String.Format("--- A column with name {0} was expected.\r\n", existingFieldName));
                    }
                }
            }
            if (!validateImportDataLogger.HasErrors())
            {
                base.ValidateImportData(importData, ref validateImportDataLogger);
            }
        }
コード例 #24
0
        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)
            {
                if (!String.IsNullOrEmpty(DataValue))
                {
                    map.Data = DataValue;
                }
                var options = new JobOptions("FromFileDataSyncWizard", "Job category name", Context.Site.Name, new FromFileDataSyncWizard(), "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.";
                    }
                }
            }
        }
コード例 #25
0
        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.";
                //}
            }
        }
コード例 #26
0
        public virtual bool VerifyConditionFromQuery(string line, ref LevelLogger logger)
        {
            var verifyConditionLogger = logger.CreateLevelLogger();

            if (!String.IsNullOrEmpty(Query))
            {
                if (Query.Contains(DefaultQueryDelimiterCharacter))
                {
                    var queryValues = Query.Split(DefaultQueryDelimiterCharacter);
                    if (queryValues.Length == 2)
                    {
                        string key   = queryValues[0];
                        string value = queryValues[1];
                        if (!String.IsNullOrEmpty(key) && !String.IsNullOrEmpty(value))
                        {
                            var retrievedValue = GetFieldValue(line, key, ref verifyConditionLogger);
                            return(value.ToLower().Equals(retrievedValue.ToLower()));
                        }
                        else
                        {
                            verifyConditionLogger.AddError("The Query was in wrong format. Either Key or value was null or empty", String.Format("The provided Query '{0}' was in wrong format. Either of the key or value was null or empty. Format should be 'key{1}value' ie 'Category{1}Summer'. " +
                                                                                                                                                 "Key: {2}. Value: {3}. Line: {4}.", Query, DefaultQueryDelimiterCharacter, key, value, line));
                        }
                    }
                    else
                    {
                        verifyConditionLogger.AddError("The Query was in wrong format.", String.Format("The provided Query '{0}' was in wrong format. Format should be 'key{1}value' ie 'Category{1}Summer'. " +
                                                                                                       "Line: {2}. QueryValues.Length: {3}.", Query, DefaultQueryDelimiterCharacter, line, queryValues.Length));
                    }
                }
                else
                {
                    verifyConditionLogger.AddError("The Query didn't contain a valid delimiter character", String.Format("The provided Query '{0}' didn't contain a valid delimiter character. This character must be: '{1}'. Line: {2}.  he VerifyConditionFromQuery method failed because the Query was null or empty.",
                                                                                                                         Query, DefaultQueryDelimiterCharacter, line));
                }
                return(false);
            }
            return(true);
        }
コード例 #27
0
        public BaseDataMap InstantiateDataMap(Item dataSyncItem, ref LevelLogger logger)
        {
            var currentDB = Configuration.Factory.GetDatabase("master");

            string handlerAssembly = dataSyncItem[FieldNameHandlerAssembly];
            string handlerClass    = dataSyncItem[FieldNameHandlerClass];

            if (!String.IsNullOrEmpty(handlerAssembly))
            {
                if (!String.IsNullOrEmpty(handlerClass))
                {
                    BaseDataMap map = null;
                    try
                    {
                        map = (BaseDataMap)Reflection.ReflectionUtil.CreateObject(handlerAssembly, handlerClass, new object[] { currentDB, dataSyncItem, logger });
                    }
                    catch (FileNotFoundException fnfe)
                    {
                        logger.AddError("Error", "The binary specified could not be found" + fnfe.Message);
                    }
                    if (map != null)
                    {
                        return(map);
                    }
                    logger.AddError("Error", String.Format("The data map provided could not be instantiated. Assembly:'{0}' Class:'{1}'", handlerAssembly, handlerClass));
                }
                else
                {
                    logger.AddError("Error", "Import handler class is not defined");
                }
            }
            else
            {
                logger.AddError("Error", "import handler assembly is not defined");
            }
            return(null);
        }
コード例 #28
0
        public override void FillField(BaseDataMap map, object importRow, ref Item newItem, string importValue, out bool updatedField, ref LevelLogger logger)
        {
            var fillFieldLogger = logger.CreateLevelLogger();

            updatedField = false;
            if (IsRequired && string.IsNullOrEmpty(importValue))
            {
                fillFieldLogger.AddError(CategoryConstants.ImportedValueToFieldWasEmpty, String.Format(
                                             "The Item '{0}' of template type: '{1}', field '{2}', but the imported value '{3}' was empty. This field must be provided when the field is required. The field was not updated.",
                                             (object)map.GetItemDebugInfo(newItem), (object)newItem.TemplateName,
                                             (object)NewItemField, (object)importValue));
                return;
            }
            if (!ID.IsID(SourceList))
            {
                fillFieldLogger.AddError(CategoryConstants.SourceListNotAnValidSitecoreId, String.Format(
                                             "The 'Source List' provided was not an valid Sitecore ID. SourceList: {0}. The Fill Field method was aborted and the fieldvalue was not updated.",
                                             SourceList));
                return;
            }
            var listParent = newItem.Database.GetItem(SourceList);

            if (listParent != null)
            {
                if (!string.IsNullOrEmpty(importValue))
                {
                    var matchingChildItem = GetMatchingChildItem(map, listParent, importValue);
                    var childItems        = matchingChildItem as Item[] ?? matchingChildItem.ToArray();
                    if (childItems.Any())
                    {
                        var str = string.Empty;
                        foreach (var childItem in childItems)
                        {
                            if (childItem != null)
                            {
                                str += (str.Length > 0)
                                           ? "|" + childItem.ID
                                           : childItem.ID.ToString();
                            }
                        }
                        var field = newItem.Fields[NewItemField];
                        if (field != null)
                        {
                            if (string.IsNullOrEmpty(str))
                            {
                                fillFieldLogger.AddError(CategoryConstants.ImportedValueDidntResultInAIdToStore, String.Format(
                                                             "The Item '{0}' of template type: '{1}' has a field '{2}', but the imported value '{3}' didn't result in a ID to store.",
                                                             (object)map.GetItemDebugInfo(newItem), (object)newItem.TemplateName,
                                                             (object)NewItemField, (object)importValue));
                                return;
                            }
                            if (field.Value != str)
                            {
                                field.Value  = str;
                                updatedField = true;
                            }
                        }
                        if (IsRequired && field == null)
                        {
                            fillFieldLogger.AddError(CategoryConstants.RequiredFieldNotFoundOnItem, String.Format(
                                                         "The Item '{0}' of template type: '{1}' didn't contain a field with name '{2}'. This field must be present because the 'Is Required Field' is checked.",
                                                         map.GetItemDebugInfo(newItem), newItem.TemplateName,
                                                         NewItemField));
                            return;
                        }
                    }
                    else if (!this.DoNotRequireValueMatch)
                    {
                        fillFieldLogger.AddError(CategoryConstants.DidntLocateALookupItemWithTheValue, String.Format(
                                                     "The Item '{0}' of template type: '{1}' didn't locate a lookup Item with the value '{2}'.",
                                                     newItem.ID.ToString(), newItem.TemplateName, importValue));
                        return;
                    }
                }
                else if (this.IsRequired)
                {
                    fillFieldLogger.AddError(CategoryConstants.TheGuidDidntResultInAHitForLookup, String.Format(
                                                 "The Item '{0}' of template type: '{1}' had a Guid field '{2}' where the imported value '{3}' didn't result any hit. Because the 'Is Required Field' is checked there must be found a value i Sitecore. The field was not updated.",
                                                 (object)map.GetItemDebugInfo(newItem), (object)newItem.TemplateName,
                                                 (object)NewItemField, (object)importValue));
                    return;
                }
                else if (newItem[NewItemField] != importValue)
                {
                    newItem[NewItemField] = importValue;
                    updatedField          = true;
                }
            }
            if (IsRequired && listParent == null)
            {
                fillFieldLogger.AddError(CategoryConstants.TheGuidFieldHadASourcelistThatWasNull, String.Format(
                                             "The Item '{0}' of template type: '{1}' had a Guid field '{2}' for which SourceList was null. This SourceList must be present because the 'Is Required Field' is checked.",
                                             (object)map.GetItemDebugInfo(newItem), (object)newItem.TemplateName,
                                             (object)this.NewItemField));
            }
        }
コード例 #29
0
        /// <summary>
        /// gets custom data from a DataRow
        /// </summary>
        /// <param name="importRow"></param>
        /// <param name="fieldName"></param>
        /// <param name="errorMessage"></param>
        /// <returns></returns>
        public override string GetFieldValue(object importRow, string fieldName, ref LevelLogger logger)
        {
            var getFieldValueLogger = logger.CreateLevelLogger();

            try
            {
                var xElement = importRow as XElement;
                if (xElement != null)
                {
                    if (!String.IsNullOrEmpty(fieldName))
                    {
                        try
                        {
                            // First retrieve the fieldName as an attribute
                            var attribute = xElement.Attribute(fieldName);
                            if (attribute != null)
                            {
                                string value = attribute.Value;
                                if (!String.IsNullOrEmpty(value))
                                {
                                    return(value);
                                }
                            }
                            else
                            {
                                // Then retrieve the fieldname as an subelement
                                var subElements  = xElement.Elements(fieldName);
                                var elementsList = subElements.ToList();
                                if (elementsList.Count() > 1)
                                {
                                    // Log eror since document format is wrong. Has two or more elements with same name.
                                    getFieldValueLogger.AddError("Found more than one subelement with FieldName", String.Format(
                                                                     "The GetFieldValue method failed because the fieldName '{0}' resulted in more than one subelement in the Import Row. FieldName: {0}. ImportRow: {1}.",
                                                                     fieldName, GetImportRowDebugInfo(importRow)));
                                }
                                else if (elementsList.Count() == 1)
                                {
                                    var subElement = elementsList.First();
                                    if (subElement != null)
                                    {
                                        var value = subElement.Value;
                                        if (!String.IsNullOrEmpty(value))
                                        {
                                            return(value);
                                        }
                                    }
                                }
                            }
                        }
                        catch (XmlException)
                        {
                            // We do nothing since this is most likely because we have a xpath query as the fieldname.
                        }

                        // Now finally try to retrieve through a xPath query
                        var executeXPathLogger = getFieldValueLogger.CreateLevelLogger();
                        var result             = ExecuteXPathQueryOnXElement(xElement, fieldName, ref executeXPathLogger);
                        if (executeXPathLogger.HasErrors())
                        {
                            executeXPathLogger.AddError("Failure in ExecuteXPathQueryOnXElement", String.Format("The GetFieldValue method failed in executing the ExecuteXPathQueryOnXElement method."));
                        }
                        string fieldValue;
                        if (result is string)
                        {
                            return(result as string);
                        }
                        var enumerable = result as IList <object> ?? result.Cast <object>().ToList();
                        if (TryParseAttribute(enumerable, out fieldValue, ref getFieldValueLogger))
                        {
                            return(fieldValue);
                        }
                        if (TryParseElement(enumerable, out fieldValue, ref getFieldValueLogger))
                        {
                            return(fieldValue);
                        }
                    }
                    else
                    {
                        getFieldValueLogger.AddError(CategoryConstants.TheFieldnameArgumentWasNullOrEmpty, String.Format("The GetFieldValue method failed because the 'fieldName' was null or empty. FieldName: {0}. ImportRow: {1}.", fieldName, GetImportRowDebugInfo(importRow)));
                    }
                }
                else
                {
                    getFieldValueLogger.AddError(CategoryConstants.TheImportRowWasNull, String.Format("The GetFieldValue method failed because the Import Row was null. FieldName: {0}.", fieldName));
                }
            }
            catch (Exception ex)
            {
                getFieldValueLogger.AddError(CategoryConstants.GetFieldValueFailed, String.Format("The GetFieldValue method failed with an exception. ImportRow: {0}. FieldName: {1}. Exception: {2}.", GetImportRowDebugInfo(importRow), fieldName, ex));
            }
            return(String.Empty);
        }
コード例 #30
0
        protected IEnumerable ExecuteXPathQueryOnXElement(XElement xElement, string query, ref LevelLogger logger)
        {
            var executeXPathQueryLogger = logger.CreateLevelLogger();

            if (xElement != null)
            {
                try
                {
                    if (query == Dot)
                    {
                        return(GetInnerXml(xElement));
                    }
                    return(xElement.XPathEvaluate(query) as IEnumerable);
                }
                catch (Exception ex)
                {
                    executeXPathQueryLogger.AddError("Exception occured ExecuteXPathQueryOnXElement executing the XPath", String.Format("An exception occured in the ExecuteXPathQueryOnXElement method executing the XPath query. Query: {0}. Exception: {1}.", query, GetExceptionDebugInfo(ex)));
                }
            }
            executeXPathQueryLogger.AddError("XDocument was null in ExecuteXPathQueryOnXElement", "In ExecuteXPathQueryOnXElement method the XDocument was null.");
            return(null);
        }