예제 #1
0
        private Item GetConnectedItem(Item parentItem, SharepointItem listItem, BaseList list)
        {
            if (this.idResolver != null)
            {
                return(parentItem.Database.GetItem(this.idResolver(parentItem, listItem, list)));
            }

            List <Func <Item, SharepointItem, BaseList, ID> > canditates = new List <Func <Item, SharepointItem, BaseList, ID> >
            {
                (item, baseItem, baseList) => Utils.GetID(item.ID.ToString(), baseItem.UniqueID),
                (item, baseItem, baseList) => Utils.GetID(item.ID.ToString(), UniqueIdV10(baseItem, baseList))
            };

            foreach (var canditate in canditates)
            {
                var item = parentItem.Database.GetItem(canditate(parentItem, listItem, list));
                {
                    if (item != null)
                    {
                        this.idResolver = canditate;
                        return(item);
                    }
                }
            }

            return(null);
        }
예제 #2
0
        protected void Process(
            [NotNull] Item integrationItem,
            [NotNull] ObjectModel.Entities.Items.BaseItem sourceSharepointItem,
            [NotNull] SynchContext synchContext)
        {
            Assert.ArgumentNotNull(integrationItem, "integrationItem");
            Assert.ArgumentNotNull(sourceSharepointItem, "sourceSharepointItem");
            Assert.ArgumentNotNull(synchContext, "synchContext");

            var sourceSharepointDocumentItem = sourceSharepointItem as DocumentItem;

            if (sourceSharepointDocumentItem == null)
            {
                return;
            }

            var sharepointDataModifiedField = integrationItem.Fields[FieldNames.SharepointDataModified];

            if (sharepointDataModifiedField != null &&
                DateUtil.ToServerTime(new DateField(sharepointDataModifiedField).DateTime) == DateUtil.ToServerTime(System.Convert.ToDateTime(sourceSharepointDocumentItem["ows_Modified"]).ToUniversalTime()))
            {
                return;
            }

            IntegrationItemProvider.UpdateBlob(integrationItem, sourceSharepointDocumentItem, synchContext);
        }
예제 #3
0
        private static string UniqueIdV10(SharepointItem baseItem, BaseList list)
        {
            var values = new StringCollection
            {
                baseItem.WebUrl.ToString(),
                list.Name,
                baseItem.ID,
                OldFolder(baseItem, list)
            };

            return(StringUtil.StringCollectionToString(values));
        }
예제 #4
0
        private static string OldFolder(SharepointItem baseItem, BaseList list)
        {
            string fileDirRef = StringUtil.RemovePrefix('/', StringUtil.RemovePostfix('/', baseItem["ows_FileDirRef"]));

            int webUrlLength     = StringUtil.RemovePrefix('/', StringUtil.RemovePostfix('/', baseItem.WebUrl.PathAndQuery)).Length;
            int listStartIndex   = fileDirRef.IndexOf(list.Name, webUrlLength + 1, StringComparison.Ordinal);
            int folderStartIndex = listStartIndex + list.Name.Length + 1;

            if (folderStartIndex >= fileDirRef.Length)
            {
                return(string.Empty);
            }

            return(fileDirRef.Substring(folderStartIndex));
        }
 public ComparableUpdateSharepointItemAction(ObjectModel.Entities.Items.BaseItem sharepointItem, IntegrationItem item, SynchContext synchContext)
     : base(sharepointItem, item, synchContext)
 {
 }
예제 #6
0
 public UpdateSharepointItemAction(ObjectModel.Entities.Items.BaseItem sharepointItem, IntegrationItem item, SynchContext synchContext)
     : base(item, synchContext)
 {
     this.sharepointItem = sharepointItem;
 }
 public ComparableUpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options)
     : base(item, sharepointItem, synchContext, options)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="IntegrationItemProviderTests"/> class.
 /// </summary>
 public IntegrationItemProviderTests()
 {
     this.sourceSharepointItem = Substitute.For <ObjectModel.Entities.Items.BaseItem>(string.Empty, new Uri("http://uri.uri"), this.context);
 }
 public UpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options)
     : base(sharepointItem, synchContext)
 {
     this.item    = item;
     this.options = options;
 }