From 9d65f5edbf2f67fa145a8df9514fb865ed5b203f Mon Sep 17 00:00:00 2001 From: Davis Mosenkovs Date: Tue, 16 Nov 2021 00:31:09 +0200 Subject: [PATCH] Migrate parent folders first Before migration sort catalog items by type and folders by name - place folders in beginning of array and place parent folders before child folders. --- .../ssrs-migration-rss/ssrs_migration.rss | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss b/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss index bae084d6..8ec2c12c 100644 --- a/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss +++ b/samples/features/reporting-services/ssrs-migration-rss/ssrs_migration.rss @@ -193,6 +193,7 @@ Sub Main() Dim timeout As Integer = RsSrc.Timeout RsSrc.Timeout = 600000 '10 minutes srcItems = RsSrc.ListChildren(GetSrcFolderPath(), True) 'Possible catalog item types: Model, Dataset, Component, Resource, DataSource, Folder, Report + Array.Sort(srcItems, New Comparison(Of CatalogItem)(AddressOf SortParentFoldersFirst)) RsSrc.Timeout = timeout For Each ci As CatalogItem In srcItems @@ -1068,3 +1069,15 @@ Sub WriteSuccess() Console.WriteLine(" ... SUCCESS") Console.ResetColor() End Sub + +Function SortParentFoldersFirst(first As CatalogItem, second As CatalogItem) As Integer + If first.TypeName = "Folder" And second.TypeName <> "Folder" Then + Return -1 + ElseIf first.TypeName <> "Folder" And second.TypeName = "Folder" Then + Return 1 + ElseIf first.TypeName <> "Folder" And second.TypeName <> "Folder" Then + Return 0 + Else + Return String.Compare(first.Path, second.Path) + End If +End Function