33
44use osm4routing:: Edge ;
55
6+ use crate :: DataIssueReporter ;
7+
68/// When sorting the edges, each candidate is tested to see if they match and if they need to be reversed.
79#[ derive( PartialEq , Eq , Debug ) ]
810enum Candidate {
@@ -79,7 +81,11 @@ fn sort_iteration(
7981/// The traversals are identified by a tag that is used on many ways.
8082/// We try to build the longest continous chain of ways, but the is no guarantee to succeed.
8183/// The ways might not share nodes or they might represent a tree.
82- pub fn sort_edges ( edges : Vec < Edge > , traversal_ref : & str ) -> Vec < ( Edge , bool ) > {
84+ pub fn sort_edges (
85+ edges : Vec < Edge > ,
86+ traversal_ref : & str ,
87+ reporter : & mut dyn DataIssueReporter ,
88+ ) -> Vec < ( Edge , bool ) > {
8389 let ( to_insert, sorted) = sort_iteration ( edges, vec ! [ ] ) ;
8490
8591 // Print some stats about edges that could not be matched
@@ -98,10 +104,7 @@ pub fn sort_edges(edges: Vec<Edge>, traversal_ref: &str) -> Vec<(Edge, bool)> {
98104 } else {
99105 last_edge. 0 . target
100106 } ;
101- println ! (
102- "[WARN] on traversal {traversal_ref}, ignoring {ignored} edges out of {total}. Sorted from {} to {}" ,
103- first. 0 , last. 0
104- ) ;
107+ reporter. report_ignoring_traversal_edges ( traversal_ref, ignored, total, first. 0 , last. 0 ) ;
105108 }
106109
107110 sorted
@@ -170,7 +173,7 @@ pub mod tests {
170173 fn sort_edges_simple ( ) {
171174 let e = edge ( 0 , 1 ) ;
172175
173- let sorted = sort_edges ( vec ! [ e. clone( ) ] , "" ) ;
176+ let sorted = sort_edges ( vec ! [ e. clone( ) ] , "" , & mut crate :: LoggingDataIssueReporter ) ;
174177 assert_eq ! ( sorted[ 0 ] . 0 , e) ;
175178 assert ! ( !sorted[ 0 ] . 1 ) ;
176179 }
@@ -180,7 +183,11 @@ pub mod tests {
180183 let e1 = edge ( 0 , 1 ) ;
181184 let e2 = edge ( 1 , 2 ) ;
182185
183- let sorted = sort_edges ( vec ! [ e1. clone( ) , e2. clone( ) ] , "" ) ;
186+ let sorted = sort_edges (
187+ vec ! [ e1. clone( ) , e2. clone( ) ] ,
188+ "" ,
189+ & mut crate :: LoggingDataIssueReporter ,
190+ ) ;
184191 assert_eq ! ( sorted[ 0 ] . 0 , e1) ;
185192 assert_eq ! ( sorted[ 1 ] . 0 , e2) ;
186193 assert ! ( !sorted[ 0 ] . 1 ) ;
@@ -192,7 +199,11 @@ pub mod tests {
192199 let e1 = edge ( 1 , 0 ) ;
193200 let e2 = edge ( 1 , 2 ) ;
194201
195- let sorted = sort_edges ( vec ! [ e1. clone( ) , e2. clone( ) ] , "" ) ;
202+ let sorted = sort_edges (
203+ vec ! [ e1. clone( ) , e2. clone( ) ] ,
204+ "" ,
205+ & mut crate :: LoggingDataIssueReporter ,
206+ ) ;
196207 assert_eq ! ( sorted[ 0 ] . 0 , e1) ;
197208 assert_eq ! ( sorted[ 1 ] . 0 , e2) ;
198209 assert ! ( sorted[ 0 ] . 1 ) ;
0 commit comments