public virtual void Process(MigrateItemPipelineArgs args)
        {
            if (args.Source == null ||
                args.Item != null)
            {
                return;
            }

            var source = args.Source;

            var id     = (Overrides.ContainsKey(source.Id)) ? Overrides[source.Id] : source.Id;
            var itemId = new ID(id);

            args.Item = Sitecore.Context.Database.GetItem(itemId);

            if (args.Item != null)
            {
                if (KeepExistingMedia && args.Item.Paths.IsMediaItem && args.Item.TemplateID != TemplateIDs.MediaFolder)
                {
                    args.AbortPipeline();
                }

                return;
            }

            var results = _createItemPipeline.Run(source, itemId);

            if (results.Aborted)
            {
                args.AbortPipeline();
                return;
            }

            args.Item = results.Item;
        }
        public virtual void Process(MigrateItemPipelineArgs args)
        {
            if (args.Source == null)
            {
                return;
            }

            var source = args.Source;

            if (_configuration.TemplateExcludes.Any(x => x.SourceTemplateId == source.TemplateId))
            {
                args.AbortPipeline();
                return;
            }

            // If configured to include media, allow all media through
            if (IncludeMedia)
            {
                if (source.IsMediaItem)
                {
                    return;
                }
            }

            // If template is registered, we can process.
            var templateInclude = _configuration.TemplateIncludes.FirstOrDefault(x => x.SourceTemplateId == source.TemplateId);

            if (templateInclude != null)
            {
                return;
            }

            // Check to see if a parent template is set to include all children.
            var parentTemplateIncludes = source.Parents(x => x.Parent)
                                         .Select(parent => _configuration.TemplateIncludes.FirstOrDefault(x => x.SourceTemplateId == parent.TemplateId))
                                         .Where(x => x != null);

            if (parentTemplateIncludes.Any(x => x.IncludeAllDescendants))
            {
                return;
            }

            // Skip item
            args.AbortPipeline();
        }
        public virtual void Process(MigrateItemPipelineArgs args)
        {
            if (args.Source == null)
            {
                return;
            }

            if (_processed.Contains(args.Source.Id))
            {
                args.AbortPipeline();
                return;
            }

            _processed.Add(args.Source.Id);
        }
        public virtual void Process(MigrateItemPipelineArgs args)
        {
            if (args.Source == null)
            {
                return;
            }

            var source = args.Source;

            // Confirm we are processing a Media Item
            if (!source.IsMediaItem)
            {
                return;
            }

            // Check if we should process due to KeepExisting
            var item = Sitecore.Context.Database.GetItem(new ID(source.Id));

            if (KeepExisting && item != null)
            {
                args.AbortPipeline();
                return;
            }

            // Grab extension
            var extensionField = source.Versions.SelectMany(x => x.Fields).FirstOrDefault(x => string.Equals(x.Name, "Extension", StringComparison.OrdinalIgnoreCase));

            if (extensionField == null)
            {
                return;
            }

            var extension = extensionField.Value;
            var versioned = Sitecore.Configuration.Settings.Media.UploadAsVersionableByDefault;

            // Create dummy item that is a place holder
            if (item == null)
            {
                var parent     = EnsureMediaFolders(args);
                var templateId = MediaManager.Config.GetTemplate(extension, versioned);
                var template   = parent.Database.Templates[templateId];
                item = CreateItem(source.Name, parent, template.ID, new ID(source.Id));
            }

            // Get Alternate Text
            string alternateText = null;
            var    altField      = source.Versions.SelectMany(x => x.Fields).FirstOrDefault(x => string.Equals(x.Name, "Alt", StringComparison.OrdinalIgnoreCase));

            if (altField != null)
            {
                alternateText = altField.Value;
            }

            var fileName = item.Name + "." + extensionField.Value;

            var mediaCreatorOptions = new MediaCreatorOptions
            {
                AlternateText = alternateText,
                Database      = item.Database,
                Destination   = item.Paths.FullPath,
                FileBased     = Sitecore.Configuration.Settings.Media.UploadAsFiles,
                IncludeExtensionInItemName = false,
                KeepExisting = KeepExisting,
                Language     = LanguageManager.DefaultLanguage,
                Versioned    = versioned
            };

            using (var stream = new MemoryStream(_hardRockWebServiceProxy.MediaDownloadAttachment(source.Id)))
            {
                args.Item = MediaManager.Creator.CreateFromStream(stream, fileName, mediaCreatorOptions);
            }
        }