From 02bb5675db0fad0e02c31caa6d449ef0ff2dd10d Mon Sep 17 00:00:00 2001 From: Arndt Date: Sun, 1 Nov 2015 11:55:28 +0100 Subject: [PATCH] 1.3.2 preparations --- .../btools/mapcreator/MapCreatorBase.java | 2 +- .../java/btools/mapcreator/WayCutter5.java | 3 ++- .../java/btools/mapcreator/WayIterator.java | 5 ++++- .../java/btools/mapcreator/WayLinker.java | 10 ++++++++-- .../java/btools/mapcreator/WayListener.java | 2 +- brouter-routing-app/assets/readmes.zip | Bin 9450 -> 9488 bytes misc/readmes/profile_developers_guide.txt | 12 ++++++------ misc/readmes/readme.txt | 13 +++++++------ 8 files changed, 29 insertions(+), 18 deletions(-) diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/MapCreatorBase.java b/brouter-map-creator/src/main/java/btools/mapcreator/MapCreatorBase.java index 7255970..0f128f8 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/MapCreatorBase.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/MapCreatorBase.java @@ -154,7 +154,7 @@ public abstract class MapCreatorBase implements WayListener, NodeListener, Relat public void nodeFileEnd( File nodefile ) throws Exception {} @Override - public void wayFileStart( File wayfile ) throws Exception {} + public boolean wayFileStart( File wayfile ) throws Exception { return true; } @Override public void nextWay( WayData data ) throws Exception {} diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/WayCutter5.java b/brouter-map-creator/src/main/java/btools/mapcreator/WayCutter5.java index 4820c57..ba234d6 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/WayCutter5.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/WayCutter5.java @@ -46,7 +46,7 @@ public class WayCutter5 extends MapCreatorBase } @Override - public void wayFileStart( File wayfile ) throws Exception + public boolean wayFileStart( File wayfile ) throws Exception { // read corresponding node-file into tileIndexMap String name = wayfile.getName(); @@ -57,6 +57,7 @@ public class WayCutter5 extends MapCreatorBase lonoffset = -1; latoffset = -1; new NodeIterator( this, false ).processFile( nodefile ); + return true; } @Override diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/WayIterator.java b/brouter-map-creator/src/main/java/btools/mapcreator/WayIterator.java index 9f0d08e..1ab7b33 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/WayIterator.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/WayIterator.java @@ -46,7 +46,10 @@ public class WayIterator extends MapCreatorBase { System.out.println( "*** WayIterator reading: " + wayfile ); - listener.wayFileStart( wayfile ); + if ( !listener.wayFileStart( wayfile ) ) + { + return; + } DataInputStream di = new DataInputStream( new BufferedInputStream ( new FileInputStream( wayfile ) ) ); try diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/WayLinker.java b/brouter-map-creator/src/main/java/btools/mapcreator/WayLinker.java index 019aa84..a508342 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/WayLinker.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/WayLinker.java @@ -110,8 +110,14 @@ public class WayLinker extends MapCreatorBase } @Override - public void wayFileStart( File wayfile ) throws Exception + public boolean wayFileStart( File wayfile ) throws Exception { + File trafficFile = fileFromTemplate( wayfile, trafficTilesIn, "trf" ); + if ( trafficTilesIn.isDirectory() && !trafficFile.exists() ) + { + return false; + } + // process corresponding node-file, if any File nodeFile = fileFromTemplate( wayfile, nodeTilesIn, "u5d" ); if ( nodeFile.exists() ) @@ -134,12 +140,12 @@ public class WayLinker extends MapCreatorBase } // read a traffic-file, if any - File trafficFile = fileFromTemplate( wayfile, trafficTilesIn, "trf" ); if ( trafficFile.exists() ) { trafficMap = new OsmTrafficMap(); trafficMap.load( trafficFile, minLon, minLat, minLon + 5000000, minLat + 5000000, false ); } + return true; } @Override diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/WayListener.java b/brouter-map-creator/src/main/java/btools/mapcreator/WayListener.java index 61c8908..d417f73 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/WayListener.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/WayListener.java @@ -9,7 +9,7 @@ import java.io.File; */ public interface WayListener { - void wayFileStart( File wayfile ) throws Exception; + boolean wayFileStart( File wayfile ) throws Exception; void nextWay( WayData data ) throws Exception; diff --git a/brouter-routing-app/assets/readmes.zip b/brouter-routing-app/assets/readmes.zip index 486e3eced6b02dd70e91229304247289fccdf966..0d5f9bd03f83ea3211f89fbff094d78f75426e80 100644 GIT binary patch delta 9263 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