< Summary

Class:Itinero.IO.Osm.RouterDbExtensions
Assembly:Itinero.IO.Osm
File(s):/home/runner/work/routing2/routing2/src/Itinero.IO.Osm/RouterDbExtensions.cs
Covered lines:16
Uncovered lines:9
Coverable lines:25
Total lines:65
Line coverage:64% (16 of 25)
Covered branches:7
Total branches:10
Branch coverage:70% (7 of 10)
Tag:224_14471318300

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
UseOsmData(...)70%1064%

File(s)

/home/runner/work/routing2/routing2/src/Itinero.IO.Osm/RouterDbExtensions.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using Itinero.IO.Osm.Streams;
 5using OsmSharp;
 6using OsmSharp.Complete;
 7using OsmSharp.Streams;
 8using OsmSharp.Tags;
 9
 10namespace Itinero.IO.Osm;
 11
 12/// <summary>
 13/// Contains extensions method for the router db.
 14/// </summary>
 15public static class RouterDbExtensions
 16{
 17    /// <summary>
 18    /// Loads the given OSM data into the router db.
 19    /// </summary>
 20    /// <param name="routerDb">The router db.</param>
 21    /// <param name="data">The data.</param>
 22    /// <param name="configure">The configure function.</param>
 23    public static void UseOsmData(this RouterDb routerDb, OsmStreamSource data,
 24        Action<DataProviderSettings>? configure = null)
 325    {
 26        // get writer.
 327        if (routerDb.HasMutableNetwork)
 028        {
 029            throw new InvalidOperationException(
 030                $"Cannot add data to a {nameof(RouterDb)} that is only being written to.");
 31        }
 32
 333        using var routerDbWriter = routerDb.GetMutableNetwork();
 34
 35        // create settings.
 336        var settings = new DataProviderSettings();
 337        configure?.Invoke(settings);
 38
 39        // do filtering.
 40
 41        // 1: complete objects.
 342        if (settings.TagsFilter.CompleteFilter != null)
 043        {
 044            data = data.ApplyCompleteFilter(settings.TagsFilter.CompleteFilter);
 045        }
 46
 47        // 2: filter relations.
 348        if (settings.TagsFilter.MemberFilter != null)
 049        {
 050            data = data.ApplyRelationMemberFilter(settings.TagsFilter.MemberFilter);
 051        }
 52
 53        // 3: filter tags on ways and relations.
 354        if (settings.TagsFilter.Filter != null)
 255        {
 256            data = data.ApplyFilter(settings.TagsFilter.Filter);
 257        }
 58
 59        // use writer to fill router db.
 360        var routerDbStreamTarget = new RouterDbStreamTarget(routerDbWriter, settings.ElevationHandler);
 361        routerDbStreamTarget.RegisterSource(data);
 362        routerDbStreamTarget.Initialize();
 363        routerDbStreamTarget.Pull();
 664    }
 65}

Methods/Properties

UseOsmData(...)