using System.Collections.Generic;
using System.Threading.Tasks;
public static void Main()
var Part1Tasks = new List<Task>();
Part1Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.ProductColumnMappings), null));
Part1Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.SeriesColumnMappings), null));
Part1Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.TypeNameMappings), null));
Part1Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.ProductDocuments), null));
Part1Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.SeriesDocuments), null));
Task.WaitAll(Part1Tasks.ToArray());
if(Part1Tasks.Any(task => task.Exception != null))
throw new AggregateException(Part1Tasks.Select(task => task.Exception));
var Part2Tasks = new List<Task>();
List<string> Indices = new List<string>() {
LuceneIndexNames.DetectSwitchBase,
LuceneIndexNames.DIPSwitchBase,
LuceneIndexNames.KeySwitchBase,
LuceneIndexNames.NavigationSwitchBase,
LuceneIndexNames.PushbuttonSwitchBase,
LuceneIndexNames.RockerSwitchBase,
LuceneIndexNames.RotarySwitchBase,
LuceneIndexNames.SlideSwitchBase,
LuceneIndexNames.SnapSwitchBase,
LuceneIndexNames.SwitchlockSwitchBase,
LuceneIndexNames.TactileSwitchBase,
LuceneIndexNames.ThumbwheelSwitchBase,
LuceneIndexNames.ToggleSwitchBase,
LuceneIndexNames.SmartCardBase,
var MappedTableWhereClause = "where PDN = 0";
foreach(var indexName in Indices)
Part2Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(indexName, LuceneIndexType.Product), MappedTableWhereClause));
foreach(var indexName in Indices)
Part2Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(indexName, LuceneIndexType.Series), null));
Part2Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.HomePageSeries), null));
Part2Tasks.Add(SpawnFullTableIndexTask(new LuceneIndex(LuceneIndexNames.ProductSeriesDetails), null));
Task.WaitAll(Part2Tasks.ToArray());
if(Part2Tasks.Any(task => task.Exception != null))
throw new AggregateException(Part2Tasks.Select(task => task.Exception));