private static async Task BuildSubThemesForGroupLayerAsync(TmNode node, IGisLayer layer) { foreach (var sublayer in layer.SubLayers) { //TODO: Build in parallel await BuildSubThemeForLayerAsync(node, sublayer); } }
private static void BuildThemeDataForLayer(ThemeData data, IGisLayer layer) { data.DataSource = layer.DataSource; data.WorkspacePath = layer.WorkspacePath; data.WorkspaceProgId = layer.WorkspaceProgId; data.WorkspaceType = layer.WorkspaceType; data.Container = layer.Container; data.ContainerType = layer.ContainerType; data.DataSourceName = layer.DataSourceName; data.DataSetName = layer.DataSetName; data.DataSetType = layer.DataSetType; }
static void Print(string layerPath, IGisLayer node) { var line = string.Join(",", Quote(layerPath), Quote(node.Container), node.ContainerType, Quote(node.DataSetName), node.DataSetType, Quote(node.DataSource), Quote(node.DataSourceName), Quote(node.DataType), node.IsGroup, node.SubLayers.Count(), Quote(node.Name), Quote(node.WorkspacePath), node.WorkspaceProgId, node.WorkspaceType); Console.WriteLine(line); foreach (var layer in node.SubLayers) { Print(layerPath, layer); } }
private static async Task BuildSubThemeForLayerAsync(TmNode node, IGisLayer subLayer) { ThemeData data = new ThemeData(null, subLayer.DataType); if (subLayer.IsGroup) { TmNode newNode = new TmNode(TmNodeType.Theme, subLayer.Name, node, data, null, null, null); node.Add(newNode); await BuildSubThemesForGroupLayerAsync(newNode, subLayer); } else { BuildThemeDataForLayer(data, subLayer); Metadata md = await Metadata.FromDataSourceAsync(data); TmNode newNode = new TmNode(TmNodeType.Theme, subLayer.Name, node, data, md, null, null); node.Add(newNode); } }