Example #1
0
        public virtual void Process([NotNull] ProcessSharepointItemArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            Assert.IsNotNullOrEmpty(args.SourceIntegrationItemName, "args.SourceIntegrationItemName");
            Assert.IsNotNull(args.SourceIntegrationItemTemplateID, "args.SourceIntegrationItemTemplateID");
            Assert.IsNotNull(args.SynchContext, "args.SynchContext");

            TemplateItem templateItem = args.SynchContext.Database.GetTemplate(args.SourceIntegrationItemTemplateID);

            if (templateItem == null)
            {
                return;
            }

            TemplateFieldItem blobTemplateField = templateItem.GetField(FieldNames.Blob);

            if (blobTemplateField != null && blobTemplateField.Type.ToLower() == "attachment")
            {
                try
                {
                    var sourceItem = args.SourceIntegrationItem;
                    args.SharepointItem = SharepointItemProvider.CreateDocumentItem(args.SourceIntegrationItemName, args.SynchContext, sourceItem.Fields[FieldNames.Blob].GetBlobStream());

                    using (new EditContext(sourceItem))
                    {
                        if (sourceItem.Fields[FieldNames.SharepointDataModified] != null)
                        {
                            DateTime owsModified = Convert.ToDateTime(args.SharepointItem["ows_Modified"]);
                            sourceItem[FieldNames.SharepointDataModified] = DateUtil.ToIsoDate(owsModified);
                        }
                    }
                }
                catch (Exception e)
                {
                    args.AddMessage(e.Message);
                    args.AbortPipeline();
                }
            }

            if (args.SourceIntegrationItemTemplateID == TemplateIDs.IntegrationFolder)
            {
                args.SharepointItem = SharepointItemProvider.CreateFolderItem(args.SourceIntegrationItemName, args.SynchContext);
            }
        }
        private static void CompareTwoTemplates(Database compareDB, ItemComparisonInfo info, TemplateItem template, TemplateItem compareTemplate)
        {
            var infoF = (FieldComparisonInfo)null;
            foreach (var localF in template.OwnFields)
            {
                if (!localF.Name.StartsWith("__"))
                {
                    if (!info.FieldComparisons.ContainsKey(localF.Name))
                    {
                        infoF = new FieldComparisonInfo(localF);

                        var compareF = compareTemplate.GetField(localF.ID);
                        if (compareF == null)
                            infoF.AddDifference(string.Format("Field does not exist on database: {0}", compareDB.Name));
                        else
                        {
                            if (localF.Type != compareF.Type)
                                infoF.AddDifference("Type mismatch.", localF.Type, compareF.Type);
                            if (localF.Source != compareF.Source)
                                infoF.AddDifference("Source mismatch.", localF.Source, compareF.Source);
                            if (localF.Name != compareF.Name)
                                infoF.AddDifference("Name mismatch.", localF.Name, compareF.Name);

                            //foreach (var lang in localF.InnerItem.Languages)
                            //{
                            //    if (!compareF.InnerItem.Languages.Any(x => x.Name == lang.Name))
                            //        infoF.AddDifference("Language version missing", lang.Name, string.Empty);
                            //    else
                            //    {
                            //        var xmlLocal = GetSlimXml(localF.InnerItem.Database.GetItem(localF.ID, lang));
                            //        var xmlCompare = GetSlimXml(compareDB.GetItem(compareF.ID, lang));
                            //        if (xmlLocal != xmlCompare)
                            //            infoF.AddDifference(string.Format("({0}) Serialized field XML mismatch.", lang.Name), xmlLocal, xmlCompare);
                            //    }
                            //}

                            //foreach (var lang in compareF.InnerItem.Languages)
                            //{
                            //    if (!localF.InnerItem.Languages.Any(x => x.Name == lang.Name))
                            //        infoF.AddDifference("Language version missing", string.Empty, lang.Name);
                            //}

                            var xmlLocal = GetSlimXml(localF.InnerItem);
                            var xmlCompare = GetSlimXml(compareF.InnerItem);
                            if (xmlLocal != xmlCompare)
                                infoF.AddDifference("Serialized field XML mismatch.", xmlLocal, xmlCompare);
                        }

                        if (infoF.Differences.Count > 0)
                        {
                            info.Status = CompareStatus.Different;
                            info.FieldComparisons.Add(localF.Name, infoF);
                            info.Messages.Add("Field differences.");
                        }
                    }
                }
            }
        }
Example #3
0
 public virtual TemplateFieldItem GetField(ID fieldID)
 {
     return(_templateItem.GetField(fieldID));
 }