/// <summary> /// Peform a paged Import against a given folder /// </summary> public IEnumerable <uSyncAction> ImportPartial(string folder, uSyncPagedImportOptions options, out int total) { lock (_importLock) { using (var pause = _mutexService.ImportPause()) { var orderedNodes = LoadOrderedNodes(folder); total = orderedNodes.Count; var actions = new List <uSyncAction>(); var lastType = string.Empty; var range = options.ProgressMax - options.ProgressMin; SyncHandlerOptions syncHandlerOptions = HandlerOptionsFromPaged(options); HandlerConfigPair handlerPair = null; var index = options.PageNumber * options.PageSize; foreach (var item in orderedNodes.Skip(options.PageNumber * options.PageSize).Take(options.PageSize)) { var itemType = item.Node.GetItemType(); if (!itemType.InvariantEquals(lastType)) { lastType = itemType; handlerPair = _handlerFactory.GetValidHandlerByTypeName(itemType, syncHandlerOptions); } if (handlerPair == null) { _logger.LogWarning("No handler was found for {alias} item might not process correctly", itemType); continue; } options.Callbacks?.Update?.Invoke(item.Node.GetAlias(), CalculateProgress(index, total, options.ProgressMin, options.ProgressMax), 100); if (handlerPair != null) { actions.AddRange(handlerPair.Handler.ImportElement(item.Node, item.FileName, handlerPair.Settings, options)); } index++; } return(actions); } } }
/// <summary> /// Peform a paged Import second pass against a given folder /// </summary> public IEnumerable <uSyncAction> ImportPartialSecondPass(IEnumerable <uSyncAction> actions, uSyncPagedImportOptions options) { lock (_importLock) { using (var pause = _mutexService.ImportPause()) { SyncHandlerOptions syncHandlerOptions = HandlerOptionsFromPaged(options); var secondPassActions = new List <uSyncAction>(); var total = actions.Count(); var lastType = string.Empty; HandlerConfigPair handlerPair = null; var index = options.PageNumber * options.PageSize; foreach (var action in actions.Skip(options.PageNumber * options.PageSize).Take(options.PageSize)) { if (!action.HandlerAlias.InvariantEquals(lastType)) { lastType = action.HandlerAlias; handlerPair = _handlerFactory.GetValidHandler(action.HandlerAlias, syncHandlerOptions); } if (handlerPair == null) { _logger.LogWarning("No handler was found for {alias} item might not process correctly", action.HandlerAlias); continue; } options.Callbacks?.Update?.Invoke($"Second Pass: {action.Name}", CalculateProgress(index, total, options.ProgressMin, options.ProgressMax), 100); secondPassActions.AddRange(handlerPair.Handler.ImportSecondPass(action, handlerPair.Settings, options)); index++; } return(secondPassActions); } } }