コード例 #1
0
        /// <summary>
        /// Returns true if the specified object is rejected by path or by type.
        /// </summary>
        public static bool Excludes(this SsrsObjectFilter filter, SsrsObject obj)
        {
            if (obj == null)
            {
                return(true);
            }
            if (!filter.Path.Matches(obj.Path))
            {
                return(true);
            }

            if (filter.ObjectTypes != SsrsFilterObjectTypes.All)
            {
                switch (obj.Type)
                {
                case SsrsObjectType.DataSource: return((filter.ObjectTypes & SsrsFilterObjectTypes.DataSource) == 0);

                case SsrsObjectType.Report: return((filter.ObjectTypes & SsrsFilterObjectTypes.Report) == 0);

                case SsrsObjectType.DataSet: return((filter.ObjectTypes & SsrsFilterObjectTypes.DataSet) == 0);
                }
                return(true);
            }
            return(false);
        }
        public async Task WriteObject(SsrsObject item)
        {
            var directoryPath = GetOrCreateContainer(item.Path);

            if (item is SsrsDataSource dataSource)
            {
                await ExportDataSource(directoryPath, dataSource);
            }
            if (item is SsrsDataSet dataSet)
            {
                await ExportDataSet(directoryPath, dataSet);
            }
            if (item is SsrsReport report)
            {
                await ExportReport(directoryPath, report);
            }
        }
        public async Task Rewrite(SsrsObject ssrsObject)
        {
            if (ssrsObject is SsrsDataSet dataSet)
            {
                if (!ExistingReferenceFilter.Matches(dataSet.DataSourceReference))
                {
                    return;
                }

                log.DebugFormat("Applying '{0}' to '{1}'", this, dataSet.Path);
                var reference = ResolveReference(dataSet.Path, ReplacementReference);

                var bytes = await dataSet.Definition.GetBytes();

                var xml = XDocument.Load(new MemoryStream(bytes));
                new DataSetXmlSchema().SetDataSourceReference(xml, reference);

                log.InfoFormat("Dataset '{0}': Data source '{1}' => '{2}'", dataSet.Path, dataSet.DataSourceReference, reference);
                dataSet.DataSourceReference = reference;
                dataSet.Definition          = new XmlObjectDefinition(xml);
            }
        }