private SsrsDataSetDataSourceReferenceRewriter ParseRule(string ruleString)
        {
            var sut  = new RewriteRuleParser();
            var rule = sut.Parse(ruleString);

            Assert.That(rule, Is.InstanceOf <SsrsDataSetDataSourceReferenceRewriter>());
            return((SsrsDataSetDataSourceReferenceRewriter)rule);
        }
示例#2
0
        public IJob CreateJob()
        {
            if (String.IsNullOrWhiteSpace(SsrsUriString))
            {
                throw new InvalidArgumentsException("No SSRS URI specified.");
            }
            if (!Uri.TryCreate(SsrsUriString, UriKind.Absolute, out _))
            {
                throw new InvalidArgumentsException($"Not a valid absolute URI: {SsrsUriString}");
            }
            var source = GetObjectSource();

            if (!source.HasManifest && Site != null)
            {
                throw new InvalidArgumentsException("--site was specified but no manifest was found.");
            }
            if (!new SsrsObjectTypesParser().ValidateTypes(ObjectFilter.TypeFilter, out var invalidTypes))
            {
                throw new InvalidArgumentsException($"Invalid object types: {invalidTypes}");
            }

            var filter = new SsrsObjectFilter {
                ObjectTypes = new SsrsObjectTypesParser().GetTypeFilter(ObjectFilter.TypeFilter),
                Path        = new PathFilterExpression(
                    PathFilter.ParseGlob(ObjectFilter.IncludePaths) ?? PathFilter.MatchAll,
                    PathFilter.ParseGlob(ObjectFilter.ExcludePaths)
                    ),
                Site = Site
            };
            var ssrsUri = new Uri(SsrsUriString, UriKind.Absolute);
            var service = ReportingServiceClientFactory.CreateFromShorthandUri(ssrsUri);
            var job     = new ImportJob(service, source, filter)
            {
                Overwrite = Overwrite, BackupTarget = GetBackupTarget()
            };

            foreach (var rule in RewriteRules)
            {
                var rewriter = new RewriteRuleParser().Parse(rule);
                job.Rewriters.Add(rewriter);
            }
            return(job);
        }