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."); } } } } }
public virtual TemplateFieldItem GetField(ID fieldID) { return(_templateItem.GetField(fieldID)); }