public void Rebuild(string spaceCode, string pageName)
{
Console.Write("Reading projects page and subtree... ");
var root = m_confluence.GetPageSummary(spaceCode, pageName);
var tree = m_confluence.GetSubtree(root.Id);
Console.WriteLine("OK");
m_children = tree.GroupBy(p => p.ParentId).ToDictionary(g => g.Key, g => g.ToList());
var result = new ConcurrentBag<IProjectPage>();
var areas = m_children[root.Id];
Parallel.ForEach(
areas,
new ParallelOptions { MaxDegreeOfParallelism = 5 },
area =>
{
var pages = RebuildArea(area);
foreach (var page in pages)
{
result.Add(page);
}
});
var updated = UpdateSummaryPage(result, root);
if (updated)
{
Console.WriteLine("Rebuild projects summary ... UPDATED");
}
else
{
Console.WriteLine("Rebuild projects summary ... not changed");
}
m_pages = result.ToList();
}