/// <summary> /// Method is processing integration config or integration folder item. /// </summary> /// <param name="integrationConfigDataSource">The item which contains integration config data.</param> /// <param name="processIntegrationItemsOptions">The process integration items options.</param> public static void ProcessTree([NotNull] Item integrationConfigDataSource, [NotNull] ProcessIntegrationItemsOptions processIntegrationItemsOptions) { Assert.ArgumentNotNull(integrationConfigDataSource, "integrationConfigDataSource"); Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions"); CacheableIntegrationConfigData it = IntegrationCache.GetIntegrationConfigData(integrationConfigDataSource.ID); if (!IntegrationDisabler.CurrentValue && (processIntegrationItemsOptions.Force || it == null || it.IsExpired)) { if (processIntegrationItemsOptions.AsyncIntegration) { string jobName = string.Format("SharePoint_Integration_{0}", integrationConfigDataSource.ID); var parameters = new object[] { processIntegrationItemsOptions, integrationConfigDataSource }; JobUtil.StartJob(jobName, Instance, "ProcessTree", parameters); } else { Instance.ProcessTree(processIntegrationItemsOptions, integrationConfigDataSource); } } }
/// <summary> /// Method is processing integration config or integration folder item. /// </summary> /// <param name="processIntegrationItemsOptions">The process integration items options.</param> /// <param name="integrationConfigDataSource">The item which contains integration config data.</param> public virtual void ProcessTree([NotNull] ProcessIntegrationItemsOptions processIntegrationItemsOptions, [NotNull] Item integrationConfigDataSource) { Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions"); Assert.ArgumentNotNull(integrationConfigDataSource, "integrationConfigDataSource"); CacheableIntegrationConfigData it = IntegrationCache.GetIntegrationConfigData(integrationConfigDataSource.ID); if (!IntegrationDisabler.CurrentValue && (processIntegrationItemsOptions.Force || it == null || it.IsExpired)) { using (new IntegrationDisabler()) { SynchContext synchContext; try { synchContext = new SynchContext(integrationConfigDataSource); } catch (Exception ex) { Log.Error(string.Format("Synchronization context can not be created for \"{0}\" integration config data source item.", integrationConfigDataSource.Name), ex, this); return; } IntegrationPipelinesRunner.SynchronizeTree(processIntegrationItemsOptions, synchContext); } } }
/// <summary> /// Runs synchronization for integration configuration items with checked ScheduledBlobTransfer field. /// </summary> /// <param name="itemArray"> /// The item array. /// </param> /// <param name="commandItem"> /// The command item. /// </param> /// <param name="scheduledItem"> /// The scheduled item. /// </param> public void Execute(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem) { try { Database database = commandItem.Database; string query = string.Format("fast://*[@{0} = '1' and @@templateid = '{1}']", FieldNames.ScheduledBlobTransfer, TemplateIDs.IntegrationConfig); Item[] items = database.SelectItems(query); foreach (var item in items) { var processIntegrationItemsOptions = new ProcessIntegrationItemsOptions { Force = true, ScheduledBlobTransfer = true, Recursive = true, AsyncIntegration = true }; SharepointProvider.ProcessTree(item, processIntegrationItemsOptions); } } catch (Exception exception) { Log.Error("Tasks.ScheduledBlobTransfer.Execute() failed", exception); } }
public void should_call_pipeline() { // Arrange using (var pipelines = new PipelinesHandler()) { var updateItem = new ItemMock(); var item = new ItemMock().AsConfigurationItem() .WithChild(updateItem); var synchContext = new SynchContext(item); var sharepointItem = TestHelper.CreateSharepointItem(); var options = new ProcessIntegrationItemsOptions(); var action = new UpdateIntegrationItemAction(new IntegrationItem(updateItem), sharepointItem, synchContext, options); // Act action.Execute(); action.IsSuccessful.Should().BeTrue(); // Assert pipelines.ShouldReceiveCall <ProcessIntegrationItemArgs>( PipelineNames.UpdateIntegrationItem, x => x.IntegrationItemID == updateItem.ID && x.SourceSharepointItem == sharepointItem && x.SynchContext == synchContext && x.Options == options); } }
/// <summary> /// Method is processing item with use IBehaviour. /// </summary> /// <param name="item">The item for processing.</param> /// <param name="processIntegrationItemsOptions">The process integration items options.</param> public static void ProcessItem([NotNull] Item item, [NotNull] ProcessIntegrationItemsOptions processIntegrationItemsOptions) { Assert.ArgumentNotNull(item, "item"); Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions"); if (item.Parent != null) { ProcessTree(item.Parent, processIntegrationItemsOptions); } }
public static void SynchronizeTree(ProcessIntegrationItemsOptions processIntegrationItemsOptions, SynchContext synchContext) { Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions"); Assert.ArgumentNotNull(synchContext, "synchContext"); var pipelineArgs = new SynchronizeTreeArgs { Context = synchContext, Options = processIntegrationItemsOptions }; SynchronizeTree(pipelineArgs); }
public static ProcessIntegrationItemArgs UpdateIntegrationItem( [NotNull] ID integrationItemID, [NotNull] SharepointBaseItem sourceSharepointItem, [NotNull] SynchContext synchContext, [NotNull] ProcessIntegrationItemsOptions options, [NotNull] EventSender eventSender) { Assert.ArgumentNotNull(integrationItemID, "integrationItemID"); Assert.ArgumentNotNull(sourceSharepointItem, "sourceSharepointItem"); Assert.ArgumentNotNull(synchContext, "synchContext"); Assert.ArgumentNotNull(options, "options"); var pipelineArgs = new ProcessIntegrationItemArgs { IntegrationItemID = integrationItemID, SourceSharepointItem = sourceSharepointItem, SynchContext = synchContext, Options = options, EventSender = eventSender }; return(UpdateIntegrationItem(pipelineArgs) ? pipelineArgs : null); }
protected virtual void ProcessTree([NotNull] ProcessIntegrationItemsOptions processIntegrationItemsOptions, [NotNull] SynchContext synchContext) { Assert.ArgumentNotNull(processIntegrationItemsOptions, "processIntegrationItemsOptions"); Assert.ArgumentNotNull(synchContext, "synchContext"); IntegrationCache.AddIntegrationConfigData(synchContext.ParentID, synchContext.IntegrationConfigData, (synchContext.IntegrationConfigData.ExpirationInterval > 0) ? synchContext.IntegrationConfigData.ExpirationInterval : DefaultTimeout); // IDList existenChildrenList = new IDList(); // foreach (Item it in SynchContext.ParentItem.GetChildren()) // { // existenChildrenList.Add(it.ID); // } IDList existenChildrenList = synchContext.Database.DataManager.DataSource.GetChildIDs(synchContext.ParentID); var existenList = new List <ID>(existenChildrenList.Cast <ID>()); foreach (SharepointBaseItem listItem in this.GetSubItems(this.GetList(synchContext.IntegrationConfigData), synchContext.IntegrationConfigData)) { ID id = Utils.GetID(synchContext.ParentID.ToString(), listItem.UniqueID); bool itemExist = existenList.IndexOf(id) != -1; if (Switcher <bool, SynchDisabler> .CurrentValue == false) { if (itemExist) { if (IsActiveIntegrationDataItem(id, synchContext.Database)) { IntegrationPipelinesRunner.UpdateIntegrationItem(id, listItem, synchContext, processIntegrationItemsOptions, EventSender.Sharepoint); } existenChildrenList.Remove(id); } else { IntegrationPipelinesRunner.CreateIntegrationItem(id, listItem, synchContext, processIntegrationItemsOptions, EventSender.Sharepoint); } } if (listItem is FolderItem) { if (IsActiveIntegrationDataItem(id, synchContext.Database)) { var newSynchContext = new SynchContext(id, synchContext.Database); if (processIntegrationItemsOptions.Recursive) { ProcessTree(processIntegrationItemsOptions, newSynchContext); } } } IntegrationCache.AddIntegrationItemInfo(id, listItem, synchContext.ParentID, (synchContext.IntegrationConfigData.ExpirationInterval > 0) ? synchContext.IntegrationConfigData.ExpirationInterval : DefaultTimeout); } if (Switcher <bool, SynchDisabler> .CurrentValue == false) { foreach (ID id in existenChildrenList) { if (IsActiveIntegrationDataItem(id, synchContext.Database)) { IntegrationPipelinesRunner.DeleteIntegrationItem(id, synchContext); } } } }
public ComparableCreateIntegrationItemAction(BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options) : base(sharepointItem, synchContext, options) { }
public ComparableUpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options) : base(item, sharepointItem, synchContext, options) { }
public CreateIntegrationItemAction(BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options) : base(sharepointItem, synchContext) { this.options = options; }
public UpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options) : base(sharepointItem, synchContext) { this.item = item; this.options = options; }