[mkgmap-splitter] 01/09: Imported Upstream version 0.0.0+svn438

Bas Couwenberg sebastic at debian.org
Sat Aug 6 11:17:13 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository mkgmap-splitter.

commit 28e125a4334d321db58cba8dd6abd12b48a3d9e8
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat Aug 6 11:57:48 2016 +0200

    Imported Upstream version 0.0.0+svn438
---
 build.xml                                          | 630 ++++++++++-----------
 resources/splitter-version.properties              |   4 +-
 .../core/filter/common/PolygonFileReader.java      |   4 +-
 .../parabola/splitter/BackgroundInputStream.java   |   4 +-
 src/uk/me/parabola/splitter/BinaryMapParser.java   |   9 +-
 src/uk/me/parabola/splitter/BinaryMapWriter.java   |  16 +-
 src/uk/me/parabola/splitter/JVMHealthMonitor.java  |   2 +-
 src/uk/me/parabola/splitter/Main.java              |   2 +-
 .../me/parabola/splitter/MultiTileProcessor.java   |  10 +-
 src/uk/me/parabola/splitter/PrecompSeaReader.java  |   2 +-
 .../me/parabola/splitter/ProblemListProcessor.java |  12 +-
 .../me/parabola/splitter/SparseLong2ShortMap.java  |   6 +-
 .../parabola/splitter/SparseLong2ShortMapHuge.java |  23 +-
 .../splitter/SparseLong2ShortMapInline.java        |  21 +-
 src/uk/me/parabola/splitter/SplitProcessor.java    |  36 +-
 src/uk/me/parabola/splitter/TileMetaInfo.java      |   3 -
 src/uk/me/parabola/splitter/WriterGrid.java        |   4 +-
 .../parabola/splitter/TestCustomCollections.java   |  36 +-
 18 files changed, 410 insertions(+), 414 deletions(-)

diff --git a/build.xml b/build.xml
index c4239ce..85a0118 100644
--- a/build.xml
+++ b/build.xml
@@ -1,317 +1,313 @@
-<?xml version="1.0"?>
-<!--
-    File: build.xml
-    
-    Copyright (C) 2006 Steve Ratcliffe
-    
-     This program is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License version 2 or 3 as
-     published by the Free Software Foundation.
-    
-     This program is distributed in the hope that it will be useful,
-     but WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-     GNU General Public License for more details.
-    
-    
-    Author: Steve Ratcliffe
-    Create date: 3 Jan 2008
--->
-<project name="splitter" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
-
-  <!-- Init -->
-  <property name="top" value="."/>
-
-	<!-- Set default javac target value -->
-	<property name="ant.build.javac.target" value="1.7"/>
-	<property name="ant.build.javac.source" value="1.7"/>
-
-	<property name="project.name" value="${ant.project.name}"/>
-
-  <!--
-    This file is not checked into svn, so you can create it and put any
-    property definitions that you want to override those below.
-  -->
-  <property file="${top}/local.properties"/>
-
-  <property name="build" value="build"/>
-  <property name="dist" value="dist"/>
-  <property name="src" value="src"/>
-  <property name="lib" value="lib"/>
-  <property name="test" value="test"/>
-  <property name="doc" value="doc"/>
-  <property name="javadoc" value="${doc}/api"/>
-  <property name="resources" value="resources"/>
-
-  <property name="build.classes" value="${build}/classes"/>
-  <property name="build.test-classes" value="${build}/test-classes"/>
-  <property name="build.test-output" location="${build}/test-output"/>
-
-	<property name="project.jar" value="${dist}/${project.name}.jar"/>
-
-  <!-- Third party libraries -->
-	<property name="xpp.jar" location="${lib}/compile/xpp3-1.1.4c.jar"/>
-
-	<!-- the project's build timestamp -->
-	<tstamp>
-		<format property="build.timestamp" pattern="yyyy-MM-dd'T'HH:mm:ssZ" />
-	</tstamp>
-
-	<!-- ivy dependency support -->
-	<property name="ivy.version" value="2.2.0"/>
-	<property name="ivy.lib.dir" value="${basedir}/lib" />
-	<property name="ivy.jar.dir" value="${ivy.lib.dir}/build" />
-	<property name="ivy.retrieve.pattern" value="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]" />
-	<property name="ivy.distrib.dir" value="ivy-distrib" />
-
-  <!-- Classpaths -->
-  <path id="classpath">
-    <pathelement location="${build.classes}"/>
-		<fileset dir="${ivy.lib.dir}/compile" />
-  </path>
-
-  <path id="test.classpath">
-    <path refid="classpath"/>
-    <pathelement location="${build.test-classes}"/>
-		<fileset dir="${ivy.lib.dir}/test" includes="*.jar"/>
-  </path>
-
-	<!-- targets for downloading and registering ivy -->
-	<target name="ivy-availability" description="Checks if the ivy library is available">
-		<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy-${ivy.version}.jar" />
-		<available property="ivy.available" file="${ivy.jar.file}" />
-	</target>
-
-	<target name="download-ivy" unless="ivy.available" description="Downloads the ivy library from public repositories.">
-		<delete dir="${ivy.jar.dir}"/>
-		<mkdir dir="${ivy.jar.dir}" />
-		<mkdir dir="${ivy.lib.dir}/compile" />
-		<mkdir dir="${ivy.lib.dir}/test" />
-		<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"
-				 dest="${ivy.jar.file}" usetimestamp="true"/>
-	</target>
-
-	<target name="init-ivy" depends="ivy-availability, download-ivy" description="Registers ivy with ant and initializes it." unless="ivy.initialized">
-		<path id="ivy.lib.path">
-			<fileset dir="${ivy.jar.dir}" includes="*.jar" />
-			<path refid="test.classpath"/>
-		</path>
-		<taskdef resource="org/apache/ivy/ant/antlib.xml"
-			 uri="antlib:org.apache.ivy.ant"
-			 classpathref="ivy.lib.path" />
-		<ivy:configure />
-		<ivy:info />
-		<property name="ivy.initialized" value="true"/>
-	</target>
-
-	<!-- targets for fetching dependencies via ivy -->
-	<target name="resolve-compile" depends="init-ivy" description="Downloads compile dependencies using ivy.">
-		<ivy:retrieve conf="compile" log="download-only" />
-	</target>
-	<target name="resolve-test" depends="init-ivy" description="Downloads test program dependencies using ivy.">
-		<ivy:retrieve conf="test" log="download-only"/>
-	</target>
-	<target name="resolve" depends="resolve-compile, resolve-test"
-					description="Downloads all program dependencies using ivy." />
-
-	<!-- targets for publishing the project (locally) via ivy -->
-	<target name="publish" depends="dist">
-		<copy file="${project.jar}"
-					tofile="${ivy.distrib.dir}/jars/${project.name}-${project.version}.jar"/>
-		<ivy:deliver pubrevision="${project.version}"/>
-		<ivy:publish resolver="local" pubrevision="${project.version}" overwrite="true"/>
-	</target>
-
-  <!-- Prepare - make all the directories -->
-  <target name="prepare">
-    <mkdir dir="${build.classes}"/>
-    <mkdir dir="${build.test-classes}"/>
-    <mkdir dir="${build.test-output}"/>
-    <mkdir dir="${resources}"/>
-		<property environment="env"/>
-
-		<condition property="have.svn">
-			<and>
-				<available file="${top}/.svn"/>
-				<or>
-					<available file="svnversion" filepath="${env.PATH}"/>
-					<available file="svnversion.exe" filepath="${env.PATH}"/>
-					<available file="svnversion.exe" filepath="${env.Path}"/>
-				</or>
-			</and>
-		</condition>
-		<condition property="have.git">
-			<available file="${top}/.git"/>
-		</condition>
-  </target>
-
-	<target name="svn-version" if="have.svn">
-		<exec executable="svnversion" dir="${top}" logError="false"
-					outputproperty="svn.version.tmp" resultproperty="svnversion.result"
-					failifexecutionfails="false">
-			<arg value="-n" /><arg value="-c" />
-			<redirector><outputfilterchain><tokenfilter>
-				<replaceregex pattern="^([0-9]*:)?" replace="" />
-				<replaceregex pattern="^exported$" replace="" />
-			</tokenfilter></outputfilterchain></redirector>
-		</exec>
-		<condition property="svn.version.build" value="${svn.version.tmp}" else="unknown">
-			<and>
-				<isset property="svn.version.tmp" />
-				<equals arg1="${svnversion.result}" arg2="0" />
-				<not><equals arg1="${svn.version.tmp}" arg2="" /></not>
-			</and>
-		</condition>
-
-		<property name="project.version" value="${svn.version.build}" />
-	</target>
-
-	<target name="git-version" if="have.git">
-		<exec executable="git" dir="${top}" logError="false"
-					outputproperty="git.version.tmp" resultproperty="gitdescribe.result"
-					failifexecutionfails="false">
-			<arg value="describe" /><arg value="--dirty" /><arg value="--tags" /><arg value="--always" />
-		</exec>
-		<condition property="git.version.build" value="${git.version.tmp}">
-			<and>
-				<isset property="git.version.tmp" />
-				<equals arg1="${gitdescribe.result}" arg2="0" />
-				<not><equals arg1="${git.version.tmp}" arg2="" /></not>
-			</and>
-		</condition>
-		<property name="project.version" value="${git.version.build}" />
-	</target>
-
-	<target name="check-version" depends="svn-version, git-version">
-		<property file="${build.classes}/splitter-version.properties"/>
-		<condition property="have.version">
-			<or>
-				<and>
-					<isset property="have.svn"/>
-					<equals arg1="${svn.version.build}" arg2="${svn.version}"/>
-				</and>
-				<and>
-					<not><isset property="have.svn"/></not>
-					<available file="${build}/classes/splitter-version.properties"/>
-				</and>
-			</or>
-		</condition>
-	</target>
-
-	<target name="version-file" unless="have.version">
-		<property name="project.version" value="${build.timestamp}" />
-		<property name="svn.version.build" value="unknown"/>
-
-		<propertyfile file="${build.classes}/splitter-version.properties">
-			<entry key="svn.version" value="${svn.version.build}" />
-			<entry key="build.timestamp" value="${build.timestamp}" />
-		</propertyfile>
-	</target>
-
-  <target name="compile" depends="prepare, resolve-compile" description="main compilation">
-    <javac srcdir="${src}" destdir="${build.classes}" debug="yes" includeantruntime="false">
-      <include name="**/*.java"/>
-      <classpath refid="classpath"/>
-    </javac>
-  </target>
-
-  <target name="compile.tests" depends="prepare, resolve-test" description="test compilation">
-    <javac srcdir="${test}" destdir="${build.test-classes}" debug="yes" includeantruntime="false">
-      <include name="**/*.java"/>
-      <classpath refid="test.classpath"/>
-    </javac>
-  </target>
-
-  <target name="javadoc" description="Create the javadoc">
-    <mkdir dir="doc"/>
-    <javadoc destdir="${javadoc}">
-      <fileset dir="${src}" includes="**/*.java"/>
-      <classpath refid="classpath"/>
-    </javadoc>
-  </target>
-
-  <target name="run.tests" depends="compile.tests">
-    <!-- Run the java unit tests -->
-    <taskdef resource="testngtasks" classpathref="test.classpath"/>
-    <testng classpathref="test.classpath" outputdir="${build.test-output}" haltonfailure="true">
-      <classfileset dir="${build.test-classes}">
-        <include name="**/*.class"/>
-      </classfileset>
-    </testng>
-  </target>
-
-
-  <target name="dist" depends="build, check-version, version-file" description="Make the distribution area">
-
-    <mkdir dir="${dist}"/>
-    <mkdir dir="${dist}/doc/api"/>
-
-    <copy todir="${dist}/doc">
-      <fileset dir="doc" includes="*.txt"/>
-    </copy>
-
-    <copy todir="${dist}/lib">
-      <fileset dir="${lib}/compile"/>
-    </copy>
-
-    <!-- misc -->
-    <copy todir="${dist}">
-      <fileset dir="${basedir}">
-        <include name="README"/>
-        <include name="LICENCE*"/>
-      </fileset>
-    </copy>
-
-		<manifestclasspath property="manifest_cp" jarfile="${project.jar}">
-			<classpath>
-				<fileset dir="${dist}/lib">
-					<include name="*.jar" />
-				</fileset>
-			</classpath>
-		</manifestclasspath>
-
-		<!-- Make the jar -->
-		<jar basedir="${build.classes}" jarfile="${dist}/splitter.jar">
-			<manifest>
-				<attribute name="Main-Class" value="uk.me.parabola.splitter.Main" />
-				<attribute name="Class-Path" value="${manifest_cp}" />
-				<attribute name="Implementation-Version" value="${project.version}" />
-			</manifest>
-			<include name="**/*.class"/>
-			<include name="*.csv"/>
-			<include name="*.properties"/>
-			<zipfileset src="${xpp.jar}" includes="**/*.class,META-INF/services/**"/>
-		</jar>
-  </target>
-
-  <!-- Clean everything -->
-  <target name="clean">
-    <delete dir="${build}"/>
-  </target>
-
-  <!-- Clobber all generated and built files -->
-  <target name="clobber" depends="clean">
-    <delete dir="${dist}"/>
-		<delete dir="${ivy.lib.dir}"/>
-  </target>
-
-	<target name="clean-ivy" description="Clean the ivy installation.">
-		<delete dir="${ivy.jar.dir}"/>
-  </target>
-
-	<target name="clean-cache" depends="init-ivy" description="Clean the ivy cache.">
-		<ivy:cleancache />
-	</target>
-
-	<!-- Main -->
-  <target name="build" depends="compile,compile.tests,run.tests">
-    <copy todir="${build.classes}">
-      <fileset dir="${resources}">
-        <include name="*.properties"/>
-      </fileset>
-    </copy>
-  </target>
-
-  <target name="rebuild" depends="clean, build"/>
-</project>
-
+<?xml version="1.0"?>
+<!--
+    File: build.xml
+    
+    Copyright (C) 2006 Steve Ratcliffe
+    
+     This program is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License version 2 or 3 as
+     published by the Free Software Foundation.
+    
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+    
+    
+    Author: Steve Ratcliffe
+    Create date: 3 Jan 2008
+-->
+<project name="splitter" default="dist" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
+
+  <!-- Init -->
+  <property name="top" value="."/>
+
+	<property name="project.name" value="${ant.project.name}"/>
+
+  <!--
+    This file is not checked into svn, so you can create it and put any
+    property definitions that you want to override those below.
+  -->
+  <property file="${top}/local.properties"/>
+
+  <property name="build" value="build"/>
+  <property name="dist" value="dist"/>
+  <property name="src" value="src"/>
+  <property name="lib" value="lib"/>
+  <property name="test" value="test"/>
+  <property name="doc" value="doc"/>
+  <property name="javadoc" value="${doc}/api"/>
+  <property name="resources" value="resources"/>
+
+  <property name="build.classes" value="${build}/classes"/>
+  <property name="build.test-classes" value="${build}/test-classes"/>
+  <property name="build.test-output" location="${build}/test-output"/>
+
+	<property name="project.jar" value="${dist}/${project.name}.jar"/>
+
+  <!-- Third party libraries -->
+	<property name="xpp.jar" location="${lib}/compile/xpp3-1.1.4c.jar"/>
+
+	<!-- the project's build timestamp -->
+	<tstamp>
+		<format property="build.timestamp" pattern="yyyy-MM-dd'T'HH:mm:ssZ" />
+	</tstamp>
+
+	<!-- ivy dependency support -->
+	<property name="ivy.version" value="2.2.0"/>
+	<property name="ivy.lib.dir" value="${basedir}/lib" />
+	<property name="ivy.jar.dir" value="${ivy.lib.dir}/build" />
+	<property name="ivy.retrieve.pattern" value="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]" />
+	<property name="ivy.distrib.dir" value="ivy-distrib" />
+
+  <!-- Classpaths -->
+  <path id="classpath">
+    <pathelement location="${build.classes}"/>
+		<fileset dir="${ivy.lib.dir}/compile" />
+  </path>
+
+  <path id="test.classpath">
+    <path refid="classpath"/>
+    <pathelement location="${build.test-classes}"/>
+		<fileset dir="${ivy.lib.dir}/test" includes="*.jar"/>
+  </path>
+
+	<!-- targets for downloading and registering ivy -->
+	<target name="ivy-availability" description="Checks if the ivy library is available">
+		<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy-${ivy.version}.jar" />
+		<available property="ivy.available" file="${ivy.jar.file}" />
+	</target>
+
+	<target name="download-ivy" unless="ivy.available" description="Downloads the ivy library from public repositories.">
+		<delete dir="${ivy.jar.dir}"/>
+		<mkdir dir="${ivy.jar.dir}" />
+		<mkdir dir="${ivy.lib.dir}/compile" />
+		<mkdir dir="${ivy.lib.dir}/test" />
+		<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"
+				 dest="${ivy.jar.file}" usetimestamp="true"/>
+	</target>
+
+	<target name="init-ivy" depends="ivy-availability, download-ivy" description="Registers ivy with ant and initializes it." unless="ivy.initialized">
+		<path id="ivy.lib.path">
+			<fileset dir="${ivy.jar.dir}" includes="*.jar" />
+			<path refid="test.classpath"/>
+		</path>
+		<taskdef resource="org/apache/ivy/ant/antlib.xml"
+			 uri="antlib:org.apache.ivy.ant"
+			 classpathref="ivy.lib.path" />
+		<ivy:configure />
+		<ivy:info />
+		<property name="ivy.initialized" value="true"/>
+	</target>
+
+	<!-- targets for fetching dependencies via ivy -->
+	<target name="resolve-compile" depends="init-ivy" description="Downloads compile dependencies using ivy.">
+		<ivy:retrieve conf="compile" log="download-only" />
+	</target>
+	<target name="resolve-test" depends="init-ivy" description="Downloads test program dependencies using ivy.">
+		<ivy:retrieve conf="test" log="download-only"/>
+	</target>
+	<target name="resolve" depends="resolve-compile, resolve-test"
+					description="Downloads all program dependencies using ivy." />
+
+	<!-- targets for publishing the project (locally) via ivy -->
+	<target name="publish" depends="dist">
+		<copy file="${project.jar}"
+					tofile="${ivy.distrib.dir}/jars/${project.name}-${project.version}.jar"/>
+		<ivy:deliver pubrevision="${project.version}"/>
+		<ivy:publish resolver="local" pubrevision="${project.version}" overwrite="true"/>
+	</target>
+
+  <!-- Prepare - make all the directories -->
+  <target name="prepare">
+    <mkdir dir="${build.classes}"/>
+    <mkdir dir="${build.test-classes}"/>
+    <mkdir dir="${build.test-output}"/>
+    <mkdir dir="${resources}"/>
+		<property environment="env"/>
+
+		<condition property="have.svn">
+			<and>
+				<available file="${top}/.svn"/>
+				<or>
+					<available file="svnversion" filepath="${env.PATH}"/>
+					<available file="svnversion.exe" filepath="${env.PATH}"/>
+					<available file="svnversion.exe" filepath="${env.Path}"/>
+				</or>
+			</and>
+		</condition>
+		<condition property="have.git">
+			<available file="${top}/.git"/>
+		</condition>
+  </target>
+
+	<target name="svn-version" if="have.svn">
+		<exec executable="svnversion" dir="${top}" logError="false"
+					outputproperty="svn.version.tmp" resultproperty="svnversion.result"
+					failifexecutionfails="false">
+			<arg value="-n" /><arg value="-c" />
+			<redirector><outputfilterchain><tokenfilter>
+				<replaceregex pattern="^([0-9]*:)?" replace="" />
+				<replaceregex pattern="^exported$" replace="" />
+			</tokenfilter></outputfilterchain></redirector>
+		</exec>
+		<condition property="svn.version.build" value="${svn.version.tmp}" else="unknown">
+			<and>
+				<isset property="svn.version.tmp" />
+				<equals arg1="${svnversion.result}" arg2="0" />
+				<not><equals arg1="${svn.version.tmp}" arg2="" /></not>
+			</and>
+		</condition>
+
+		<property name="project.version" value="${svn.version.build}" />
+	</target>
+
+	<target name="git-version" if="have.git">
+		<exec executable="git" dir="${top}" logError="false"
+					outputproperty="git.version.tmp" resultproperty="gitdescribe.result"
+					failifexecutionfails="false">
+			<arg value="describe" /><arg value="--dirty" /><arg value="--tags" /><arg value="--always" />
+		</exec>
+		<condition property="git.version.build" value="${git.version.tmp}">
+			<and>
+				<isset property="git.version.tmp" />
+				<equals arg1="${gitdescribe.result}" arg2="0" />
+				<not><equals arg1="${git.version.tmp}" arg2="" /></not>
+			</and>
+		</condition>
+		<property name="project.version" value="${git.version.build}" />
+	</target>
+
+	<target name="check-version" depends="svn-version, git-version">
+		<property file="${build.classes}/splitter-version.properties"/>
+		<condition property="have.version">
+			<or>
+				<and>
+					<isset property="have.svn"/>
+					<equals arg1="${svn.version.build}" arg2="${svn.version}"/>
+				</and>
+				<and>
+					<not><isset property="have.svn"/></not>
+					<available file="${build}/classes/splitter-version.properties"/>
+				</and>
+			</or>
+		</condition>
+	</target>
+
+	<target name="version-file" unless="have.version">
+		<property name="project.version" value="${build.timestamp}" />
+		<property name="svn.version.build" value="unknown"/>
+
+		<propertyfile file="${build.classes}/splitter-version.properties">
+			<entry key="svn.version" value="${svn.version.build}" />
+			<entry key="build.timestamp" value="${build.timestamp}" />
+		</propertyfile>
+	</target>
+
+  <target name="compile" depends="prepare, resolve-compile" description="main compilation">
+    <javac srcdir="${src}" destdir="${build.classes}" debug="yes" includeantruntime="false">
+      <include name="**/*.java"/>
+      <classpath refid="classpath"/>
+    </javac>
+  </target>
+
+  <target name="compile.tests" depends="prepare, resolve-test" description="test compilation">
+    <javac srcdir="${test}" destdir="${build.test-classes}" debug="yes" includeantruntime="false">
+      <include name="**/*.java"/>
+      <classpath refid="test.classpath"/>
+    </javac>
+  </target>
+
+  <target name="javadoc" description="Create the javadoc">
+    <mkdir dir="doc"/>
+    <javadoc destdir="${javadoc}">
+      <fileset dir="${src}" includes="**/*.java"/>
+      <classpath refid="classpath"/>
+    </javadoc>
+  </target>
+
+  <target name="run.tests" depends="compile.tests">
+    <!-- Run the java unit tests -->
+    <taskdef resource="testngtasks" classpathref="test.classpath"/>
+    <testng classpathref="test.classpath" outputdir="${build.test-output}" haltonfailure="true">
+      <classfileset dir="${build.test-classes}">
+        <include name="**/*.class"/>
+      </classfileset>
+    </testng>
+  </target>
+
+
+  <target name="dist" depends="build, check-version, version-file" description="Make the distribution area">
+
+    <mkdir dir="${dist}"/>
+    <mkdir dir="${dist}/doc/api"/>
+
+    <copy todir="${dist}/doc">
+      <fileset dir="doc" includes="*.txt"/>
+    </copy>
+
+    <copy todir="${dist}/lib">
+      <fileset dir="${lib}/compile"/>
+    </copy>
+
+    <!-- misc -->
+    <copy todir="${dist}">
+      <fileset dir="${basedir}">
+        <include name="README"/>
+        <include name="LICENCE*"/>
+      </fileset>
+    </copy>
+
+		<manifestclasspath property="manifest_cp" jarfile="${project.jar}">
+			<classpath>
+				<fileset dir="${dist}/lib">
+					<include name="*.jar" />
+				</fileset>
+			</classpath>
+		</manifestclasspath>
+
+		<!-- Make the jar -->
+		<jar basedir="${build.classes}" jarfile="${dist}/splitter.jar">
+			<manifest>
+				<attribute name="Main-Class" value="uk.me.parabola.splitter.Main" />
+				<attribute name="Class-Path" value="${manifest_cp}" />
+				<attribute name="Implementation-Version" value="${project.version}" />
+			</manifest>
+			<include name="**/*.class"/>
+			<include name="*.csv"/>
+			<include name="*.properties"/>
+			<zipfileset src="${xpp.jar}" includes="**/*.class,META-INF/services/**"/>
+		</jar>
+  </target>
+
+  <!-- Clean everything -->
+  <target name="clean">
+    <delete dir="${build}"/>
+  </target>
+
+  <!-- Clobber all generated and built files -->
+  <target name="clobber" depends="clean">
+    <delete dir="${dist}"/>
+		<delete dir="${ivy.lib.dir}"/>
+  </target>
+
+	<target name="clean-ivy" description="Clean the ivy installation.">
+		<delete dir="${ivy.jar.dir}"/>
+  </target>
+
+	<target name="clean-cache" depends="init-ivy" description="Clean the ivy cache.">
+		<ivy:cleancache />
+	</target>
+
+	<!-- Main -->
+  <target name="build" depends="compile,compile.tests,run.tests">
+    <copy todir="${build.classes}">
+      <fileset dir="${resources}">
+        <include name="*.properties"/>
+      </fileset>
+    </copy>
+  </target>
+
+  <target name="rebuild" depends="clean, build"/>
+</project>
+
diff --git a/resources/splitter-version.properties b/resources/splitter-version.properties
index 1d21a42..67b0e45 100644
--- a/resources/splitter-version.properties
+++ b/resources/splitter-version.properties
@@ -1,2 +1,2 @@
-svn.version: 437
-build.timestamp: 2016-03-26T09:10:19+0000
+svn.version: 438
+build.timestamp: 2016-08-05T08:44:38+0100
diff --git a/src/org/openstreetmap/osmosis/core/filter/common/PolygonFileReader.java b/src/org/openstreetmap/osmosis/core/filter/common/PolygonFileReader.java
index faa0897..c692850 100644
--- a/src/org/openstreetmap/osmosis/core/filter/common/PolygonFileReader.java
+++ b/src/org/openstreetmap/osmosis/core/filter/common/PolygonFileReader.java
@@ -206,7 +206,7 @@ public class PolygonFileReader {
 	 *            record of a polygon section.
 	 * @return An area representing the section polygon.
 	 */
-	private Area loadSectionPolygon(BufferedReader bufferedReader) throws IOException {
+	private static Area loadSectionPolygon(BufferedReader bufferedReader) throws IOException {
 		Path2D.Double polygonPath;
 		double[] beginPoint = null;
 		
@@ -267,7 +267,7 @@ public class PolygonFileReader {
 	 * @return A pair of coordinate values, first is longitude, second is
 	 *         latitude.
 	 */
-	private double[] parseCoordinates(String coordinateLine) {
+	private static double[] parseCoordinates(String coordinateLine) {
 		String[] rawTokens;
 		double[] results;
 		int tokenCount;
diff --git a/src/uk/me/parabola/splitter/BackgroundInputStream.java b/src/uk/me/parabola/splitter/BackgroundInputStream.java
index 2066006..2d0b6b6 100644
--- a/src/uk/me/parabola/splitter/BackgroundInputStream.java
+++ b/src/uk/me/parabola/splitter/BackgroundInputStream.java
@@ -27,8 +27,8 @@ public class BackgroundInputStream extends InputStream {
 	private final BlockingQueue<byte[]> inQueue;
 	private final BlockingQueue<byte[]> recycleQueue;
 	private final int bufferSize;
-	private final InputStream sourceStream;
-	private volatile boolean closed;
+	protected final InputStream sourceStream;
+	protected volatile boolean closed;
 
 	// These variables are only accessed from the reader thread
 	private byte[] currentBuffer;
diff --git a/src/uk/me/parabola/splitter/BinaryMapParser.java b/src/uk/me/parabola/splitter/BinaryMapParser.java
index 0b6c2a8..9b65461 100644
--- a/src/uk/me/parabola/splitter/BinaryMapParser.java
+++ b/src/uk/me/parabola/splitter/BinaryMapParser.java
@@ -39,15 +39,17 @@ public class BinaryMapParser extends BinaryParser implements MapReader {
 	private boolean skipNodes;
 	private boolean skipWays;
 	private boolean skipRels;
-	short wantedTypeMask = 0;
+	private short wantedTypeMask = 0;
+	private int msgLevel; 
 	
-	BinaryMapParser(MapProcessor processor, ShortArrayList knownBlockTypes) {
+	BinaryMapParser(MapProcessor processor, ShortArrayList knownBlockTypes, int msgLevel) {
 		this.processor = processor;
 		this.knownBlockTypes = knownBlockTypes;
 		this.skipTags = processor.skipTags();
 		this.skipNodes = processor.skipNodes();
 		this.skipWays = processor.skipWays();
 		this.skipRels = processor.skipRels();
+		this.msgLevel = msgLevel;
 		
 		if (skipNodes == false){
 			wantedTypeMask |= TYPE_DENSE;
@@ -242,7 +244,8 @@ public class BinaryMapParser extends BinaryParser implements MapReader {
 			double topf = block.getBbox().getTop() * multiplier;
 			double bottomf = block.getBbox().getBottom() * multiplier;
 
-			System.out.println("Bounding box "+leftf+" "+bottomf+" "+rightf+" "+topf);
+			if (msgLevel > 0)
+				System.out.println("Bounding box "+leftf+" "+bottomf+" "+rightf+" "+topf);
 
 			Area area = new Area(
 					Utils.toMapUnit(bottomf),
diff --git a/src/uk/me/parabola/splitter/BinaryMapWriter.java b/src/uk/me/parabola/splitter/BinaryMapWriter.java
index 8c44a81..21ae043 100644
--- a/src/uk/me/parabola/splitter/BinaryMapWriter.java
+++ b/src/uk/me/parabola/splitter/BinaryMapWriter.java
@@ -32,7 +32,7 @@ import crosby.binary.file.FileBlock;
 
 public class BinaryMapWriter extends AbstractOSMWriter {
 
-  private PBFSerializer serializer;
+  protected PBFSerializer serializer;
 
   private BlockOutputStream output;
 
@@ -40,7 +40,7 @@ public class BinaryMapWriter extends AbstractOSMWriter {
 
   protected boolean headerWritten = false;
 
-  public class PBFSerializer extends BinarySerializer {
+  private class PBFSerializer extends BinarySerializer {
 
     public PBFSerializer(BlockOutputStream output)
     {
@@ -61,7 +61,7 @@ public class BinaryMapWriter extends AbstractOSMWriter {
         contents.add(item);
       }
 
-      /** Add all of the tags of all entities in the queue to the stringtable. */
+      /** Add all of the tags of all entities in the queue to the string table. */
       public void addStringsToStringtable()
       {
         StringTable stable = getStringTable();
@@ -353,13 +353,13 @@ public class BinaryMapWriter extends AbstractOSMWriter {
     }
 
     /* One list for each type */
-    private WayGroup ways;
+    protected WayGroup ways;
 
-    private NodeGroup nodes;
+    protected NodeGroup nodes;
 
-    private RelationGroup relations;
+    protected RelationGroup relations;
 
-    private Processor processor = new Processor();
+    protected Processor processor = new Processor();
 
     /**
      * Buffer up events into groups that are all of the same type, or all of the
@@ -420,7 +420,7 @@ public class BinaryMapWriter extends AbstractOSMWriter {
      * At the end of this function, all of the lists of unprocessed 'things'
      * must be null
      */
-    private void switchTypes()
+    protected void switchTypes()
     {
       if(nodes != null) {
         groups.add(nodes);
diff --git a/src/uk/me/parabola/splitter/JVMHealthMonitor.java b/src/uk/me/parabola/splitter/JVMHealthMonitor.java
index 75470c1..0e8f1eb 100644
--- a/src/uk/me/parabola/splitter/JVMHealthMonitor.java
+++ b/src/uk/me/parabola/splitter/JVMHealthMonitor.java
@@ -65,7 +65,7 @@ public class JVMHealthMonitor {
 			statusThread.start();
 	}
 	
-	private static String getElapsedTime() {
+	protected static String getElapsedTime() {
 		long elapsed = (System.currentTimeMillis() - startTime) / 1000;
 		long seconds = elapsed % 60;
 		long minutes = elapsed / 60 % 60;
diff --git a/src/uk/me/parabola/splitter/Main.java b/src/uk/me/parabola/splitter/Main.java
index 3a2c9a6..5ccc256 100644
--- a/src/uk/me/parabola/splitter/Main.java
+++ b/src/uk/me/parabola/splitter/Main.java
@@ -1423,7 +1423,7 @@ public class Main {
 					// Is it a binary file?
 					File file = new File(filename);
 					ShortArrayList blockTypes = blockTypeMap.get(filename);
-					BinaryMapParser binParser = new BinaryMapParser(processor, blockTypes);
+					BinaryMapParser binParser = new BinaryMapParser(processor, blockTypes, 1);
 					try(InputStream stream = new FileInputStream(file)){
 						BlockInputStream blockinput = (new BlockInputStream(stream, binParser));
 						blockinput.process();
diff --git a/src/uk/me/parabola/splitter/MultiTileProcessor.java b/src/uk/me/parabola/splitter/MultiTileProcessor.java
index 43836fc..4c9eda7 100644
--- a/src/uk/me/parabola/splitter/MultiTileProcessor.java
+++ b/src/uk/me/parabola/splitter/MultiTileProcessor.java
@@ -43,7 +43,7 @@ class MultiTileProcessor extends AbstractMapProcessor {
 	private final static byte MEM_REL_TYPE  = 3;
 	private final static byte MEM_INVALID_TYPE = -1;
 	private final static int PROBLEM_WIDTH = Utils.toMapUnit(180.0);
-	private final static String[] NAME_TAGS = {"name","name:en","int_name","note"};
+	protected final static String[] NAME_TAGS = {"name","name:en","int_name","note"};
 	private final static String NOT_SORTED_MSG = "Maybe the IDs are not sorted. This is not supported with keep-complete=true or --problem-list";
 	
 	private int phase = PHASE1_RELS_ONLY;
@@ -951,10 +951,10 @@ class MultiTileProcessor extends AbstractMapProcessor {
 		private final static short IS_NOT_COMPLETE = 0x40; 
 
 		private final long id;
-		private final byte[] memTypes;
-		private final String[] memRoles;
-		private final long[] memRefs;
-		private final int numMembers;
+		protected final byte[] memTypes;
+		protected final String[] memRoles;
+		protected final long[] memRefs;
+		protected final int numMembers;
 		private final String name;
 		
 		private int multiTileWriterIndex = -1;
diff --git a/src/uk/me/parabola/splitter/PrecompSeaReader.java b/src/uk/me/parabola/splitter/PrecompSeaReader.java
index 799f2f9..2919584 100644
--- a/src/uk/me/parabola/splitter/PrecompSeaReader.java
+++ b/src/uk/me/parabola/splitter/PrecompSeaReader.java
@@ -78,7 +78,7 @@ public class PrecompSeaReader {
 			if (is != null){
 				try{
 					if (tileName.endsWith(".pbf")){
-						BinaryMapParser binParser = new BinaryMapParser(processor, null);
+						BinaryMapParser binParser = new BinaryMapParser(processor, null, 0);
 						BlockInputStream blockinput = (new BlockInputStream(is, binParser));
 						blockinput.process();
 						blockinput.close();
diff --git a/src/uk/me/parabola/splitter/ProblemListProcessor.java b/src/uk/me/parabola/splitter/ProblemListProcessor.java
index 2b4e0fb..40f11dd 100644
--- a/src/uk/me/parabola/splitter/ProblemListProcessor.java
+++ b/src/uk/me/parabola/splitter/ProblemListProcessor.java
@@ -68,7 +68,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		this.dataStorer = dataStorer;
 		this.writerDictionary = dataStorer.getWriterDictionary();
 		if (dataStorer.getUsedWays() == null){
-			ways = SparseLong2ShortMap.createMap();
+			ways = SparseLong2ShortMap.createMap("way");
 			ways.defaultReturnValue(UNASSIGNED);
 			dataStorer.setUsedWays(ways);
 		}
@@ -79,7 +79,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 		
 		writerSet = new BitSet(writerDictionary.getNumOfWriters());
 		this.writerIndex = dataStorer.getGrid();
-		this.coords = SparseLong2ShortMap.createMap();
+		this.coords = SparseLong2ShortMap.createMap("coord");
 		this.coords.defaultReturnValue(UNASSIGNED);
 		this.isFirstPass = (writerOffset == 0);
 		this.writerOffset = writerOffset;
@@ -177,7 +177,7 @@ class ProblemListProcessor extends AbstractMapProcessor {
 			coords.put(node.getId(), writerIdx);
 			++countCoords;
 			if (countCoords % 10000000 == 0){
-				System.out.println("MAP occupancy: " + Utils.format(countCoords) + ", number of area dictionary entries: " + writerDictionary.size() + " of " + ((1<<16) - 1));
+				System.out.println("coord MAP occupancy: " + Utils.format(countCoords) + ", number of area dictionary entries: " + writerDictionary.size() + " of " + ((1<<16) - 1));
 				coords.stats(0);
 			}
 		}
@@ -359,10 +359,8 @@ class ProblemListProcessor extends AbstractMapProcessor {
 			phase++;
 			return false;
 		}
-		System.out.println("Statistics for coords map:");
-		coords.stats(1);
-		System.out.println("Statistics for ways map:");
-		ways.stats(1);
+		coords.stats(0);
+		ways.stats(0);
 		if (isLastPass){
 			System.out.println("");
 			System.out.println("  Number of stored shorts for ways: " + Utils.format(dataStorer.getUsedWays().size()));
diff --git a/src/uk/me/parabola/splitter/SparseLong2ShortMap.java b/src/uk/me/parabola/splitter/SparseLong2ShortMap.java
index b396cf1..66019c4 100644
--- a/src/uk/me/parabola/splitter/SparseLong2ShortMap.java
+++ b/src/uk/me/parabola/splitter/SparseLong2ShortMap.java
@@ -18,11 +18,11 @@ package uk.me.parabola.splitter;
  *
  */
 public class SparseLong2ShortMap {
-	public static SparseLong2ShortMapFunction createMap(){
+	public static SparseLong2ShortMapFunction createMap(String dataDesc){
 		long maxMem = Runtime.getRuntime().maxMemory() / 1024 / 1024;
 		// prefer implementation with lower memory footprint when free heap is less than 2 GB
 		if (maxMem < 2048)
-			return new SparseLong2ShortMapInline();
-		return new SparseLong2ShortMapHuge();
+			return new SparseLong2ShortMapInline(dataDesc);
+		return new SparseLong2ShortMapHuge(dataDesc);
 	}
 }
diff --git a/src/uk/me/parabola/splitter/SparseLong2ShortMapHuge.java b/src/uk/me/parabola/splitter/SparseLong2ShortMapHuge.java
index 4b5aa06..068d09d 100644
--- a/src/uk/me/parabola/splitter/SparseLong2ShortMapHuge.java
+++ b/src/uk/me/parabola/splitter/SparseLong2ShortMapHuge.java
@@ -105,6 +105,7 @@ public class SparseLong2ShortMapHuge implements SparseLong2ShortMapFunction{
 
 
 	// for statistics
+	private final String dataDesc;
 	private long [] countChunkLen; 
 	private long expanded = 0;
 	private long uncompressedLen = 0;
@@ -122,8 +123,10 @@ public class SparseLong2ShortMapHuge implements SparseLong2ShortMapFunction{
 	/**
 	 * A map that stores pairs of (OSM) IDs and short values identifying the
 	 * areas in which the object (node,way) with the ID occurs.
+	 * @param dataDesc 
 	 */
-	SparseLong2ShortMapHuge() {
+	SparseLong2ShortMapHuge(String dataDesc) {
+		this.dataDesc = dataDesc;
 		clear();
 	}
 
@@ -492,7 +495,7 @@ public class SparseLong2ShortMapHuge implements SparseLong2ShortMapFunction{
 		int i;
 		
 		if (size() == 0){
-			System.out.println("Map is empty");
+			System.out.println(dataDesc + " Map is empty");
 			return;
 		}
 		for (i=1; i <=CHUNK_SIZE; i++) {
@@ -511,17 +514,15 @@ public class SparseLong2ShortMapHuge implements SparseLong2ShortMapFunction{
 		totalOverhead += topMap.size() * (long)LARGE_VECTOR_SIZE * 8;
 		
 		float bytesPerKey = (size()==0) ? 0: (float)((totalBytes + totalOverhead)*100 / size()) / 100;
-		if (msgLevel > 0){
-			System.out.println();
-			System.out.println("Number of stored ids: " + Utils.format(size()) + " require ca. " + 
-					bytesPerKey + " bytes per pair. " + 
-					totalChunks + " chunks are used, the avg. number of values in one "+CHUNK_SIZE+"-chunk is " + 
-					((totalChunks==0) ? 0 :(size() / totalChunks)) + "."); 
-		}
-		System.out.println("Map details: bytes/overhead " + Utils.format(totalBytes) + " / " + Utils.format(totalOverhead) + ", overhead includes " + 
+		System.out.println();
+		System.out.println(dataDesc + " Map: Number of stored ids: " + Utils.format(size()) + " require ca. " + 
+				bytesPerKey + " bytes per pair. " + 
+				totalChunks + " chunks are used, the avg. number of values in one "+CHUNK_SIZE+"-chunk is " + 
+				((totalChunks==0) ? 0 :(size() / totalChunks)) + "."); 
+		System.out.println(dataDesc + " Map details: bytes/overhead " + Utils.format(totalBytes) + " / " + Utils.format(totalOverhead) + ", overhead includes " + 
 				topMap.size() + " arrays with " + LARGE_VECTOR_SIZE * 8/1024/1024 + " MB");  
 		if (msgLevel > 0 & uncompressedLen > 0){
-			System.out.print("RLE compresion info: compressed / uncompressed size / ratio: " + 
+			System.out.print(dataDesc + " RLE compresion info: compressed / uncompressed size / ratio: " + 
 					Utils.format(compressedLen) + " / "+ 
 					Utils.format(uncompressedLen) + " / "+
 					Utils.format(Math.round(100-(float) (compressedLen*100/uncompressedLen))) + "%");
diff --git a/src/uk/me/parabola/splitter/SparseLong2ShortMapInline.java b/src/uk/me/parabola/splitter/SparseLong2ShortMapInline.java
index eedb739..4068cf4 100644
--- a/src/uk/me/parabola/splitter/SparseLong2ShortMapInline.java
+++ b/src/uk/me/parabola/splitter/SparseLong2ShortMapInline.java
@@ -106,6 +106,7 @@ public class SparseLong2ShortMapInline implements SparseLong2ShortMapFunction{
 
 
 	// for statistics
+	private final String dataDesc; 
 	private long [] countChunkLen; 
 	private long expanded = 0;
 	private long uncompressedLen = 0;
@@ -123,8 +124,10 @@ public class SparseLong2ShortMapInline implements SparseLong2ShortMapFunction{
 	/**
 	 * A map that stores pairs of (OSM) IDs and short values identifying the
 	 * areas in which the object (node,way) with the ID occurs.
+	 * @param dataDesc 
 	 */
-	SparseLong2ShortMapInline() {
+	SparseLong2ShortMapInline(String dataDesc) {
+		this.dataDesc = dataDesc;
 		clear();
 	}
 
@@ -494,7 +497,7 @@ public class SparseLong2ShortMapInline implements SparseLong2ShortMapFunction{
 		int i;
 		
 		if (size() == 0){
-			System.out.println("Map is empty");
+			System.out.println(dataDesc + " Map is empty");
 			return;
 		}
 		for (i=1; i <=CHUNK_SIZE; i++) {
@@ -513,14 +516,12 @@ public class SparseLong2ShortMapInline implements SparseLong2ShortMapFunction{
 		totalOverhead += topMap.size() * (long)LARGE_VECTOR_SIZE * 4;
 		
 		float bytesPerKey = (size()==0) ? 0: (float)((totalBytes + totalOverhead)*100 / size()) / 100;
-		if (msgLevel > 0){
-			System.out.println();
-			System.out.println("Number of stored ids: " + Utils.format(size()) + " require ca. " + 
-					bytesPerKey + " bytes per pair. " + 
-					totalChunks + " chunks are used, the avg. number of values in one "+CHUNK_SIZE+"-chunk is " + 
-					((totalChunks==0) ? 0 :(size() / totalChunks)) + "."); 
-		}
-		System.out.println("Map details: bytes/overhead " + Utils.format(totalBytes) + " / " + Utils.format(totalOverhead) + ", overhead includes " + 
+		System.out.println();
+		System.out.println(dataDesc + " Map: Number of stored ids: " + Utils.format(size()) + " require ca. " + 
+				bytesPerKey + " bytes per pair. " + 
+				totalChunks + " chunks are used, the avg. number of values in one "+CHUNK_SIZE+"-chunk is " + 
+				((totalChunks==0) ? 0 :(size() / totalChunks)) + "."); 
+		System.out.println(dataDesc + " Map details: bytes/overhead " + Utils.format(totalBytes) + " / " + Utils.format(totalOverhead) + ", overhead includes " + 
 				topMap.size() + " arrays with " + LARGE_VECTOR_SIZE * 4/1024/1024 + " MB");  
 		if (msgLevel > 0 & uncompressedLen > 0){
 			System.out.print("RLE compresion info: compressed / uncompressed size / ratio: " + 
diff --git a/src/uk/me/parabola/splitter/SplitProcessor.java b/src/uk/me/parabola/splitter/SplitProcessor.java
index e96bde4..959ff99 100644
--- a/src/uk/me/parabola/splitter/SplitProcessor.java
+++ b/src/uk/me/parabola/splitter/SplitProcessor.java
@@ -48,9 +48,9 @@ class SplitProcessor extends AbstractMapProcessor {
 	private final short unassigned = Short.MIN_VALUE;
 
 	private final InputQueueInfo[] writerInputQueues;
-	private final BlockingQueue<InputQueueInfo> toProcess;
+	protected final BlockingQueue<InputQueueInfo> toProcess;
 	private final ArrayList<Thread> workerThreads;
-	private final InputQueueInfo STOP_MSG = new InputQueueInfo(null);
+	protected final InputQueueInfo STOP_MSG = new InputQueueInfo(null);
 
 
 	// private int currentNodeAreaSet;
@@ -65,8 +65,8 @@ class SplitProcessor extends AbstractMapProcessor {
 		this.oneTileOnlyRels = oneTileOnlyRels;
 		this.writerDictionary = dataStorer.getWriterDictionary();
 		this.writers = writerDictionary.getWriters();
-		this.coords = SparseLong2ShortMap.createMap();
-		this.ways   = SparseLong2ShortMap.createMap();
+		this.coords = SparseLong2ShortMap.createMap("coord");
+		this.ways   = SparseLong2ShortMap.createMap("way");
 		this.coords.defaultReturnValue(unassigned);
 		this.ways.defaultReturnValue(unassigned); 		
 		this.writerIndex = dataStorer.getGrid();
@@ -74,7 +74,7 @@ class SplitProcessor extends AbstractMapProcessor {
 		this.writerOffset = writerOffset;
 		this.lastWriter = writerOffset + numWritersThisPass-1;
 		this.maxThreads = maxThreads;
-		this.toProcess = new ArrayBlockingQueue<InputQueueInfo>(numWritersThisPass);
+		this.toProcess = new ArrayBlockingQueue<>(numWritersThisPass);
 		this.writerInputQueues = new InputQueueInfo[numWritersThisPass];
 		for (int i = 0; i < writerInputQueues.length; i++) {
 			writerInputQueues[i] = new InputQueueInfo(this.writers[i + writerOffset]);
@@ -88,7 +88,7 @@ class SplitProcessor extends AbstractMapProcessor {
 		usedWriters = new BitSet(); 
 
 		int noOfWorkerThreads = Math.min(this.maxThreads - 1, numWritersThisPass);
-		workerThreads = new ArrayList<Thread>(noOfWorkerThreads);
+		workerThreads = new ArrayList<>(noOfWorkerThreads);
 		for (int i = 0; i < noOfWorkerThreads; i++) {
 			Thread worker = new Thread(new OSMWriterWorker());
 			worker.setName("worker-" + i);
@@ -147,7 +147,7 @@ class SplitProcessor extends AbstractMapProcessor {
 			ways.put(w.getId(), idx);
 			++countWays;
 			if (countWays % 1000000 == 0){
-				System.out.println("MAP occupancy: " + Utils.format(countWays) + ", number of area dictionary entries: " + writerDictionary.size() + " of " + ((1<<16) - 1));
+				System.out.println("way MAP occupancy: " + Utils.format(countWays) + ", number of area dictionary entries: " + writerDictionary.size() + " of " + ((1<<16) - 1));
 				ways.stats(0);
 			}
 			try {
@@ -219,11 +219,8 @@ class SplitProcessor extends AbstractMapProcessor {
 	}
 	@Override
 	public boolean endMap() {
-		System.out.println("Statistics for coords map:");
-		coords.stats(1);
-		System.out.println("");
-		System.out.println("Statistics for ways map:");
-		ways.stats(1);
+		coords.stats(0);
+		ways.stats(0);
 		Utils.printMem();
 		System.out.println("Full Node tests:  " + Utils.format(countFullTest));
 		System.out.println("Quick Node tests: " + Utils.format(countQuickTest)); 		
@@ -271,7 +268,7 @@ class SplitProcessor extends AbstractMapProcessor {
 		if (writerCandidates == null && !isSpecialNode)  {
 			return;
 		}
-		if (isSpecialNode || writerCandidates.l.size() > 1)
+		if (isSpecialNode || writerCandidates != null && writerCandidates.l.size() > 1)
 			usedWriters.clear();
 		if (writerCandidates != null){
 			for (int i = 0; i < writerCandidates.l.size(); i++) {
@@ -375,14 +372,14 @@ class SplitProcessor extends AbstractMapProcessor {
 	}
 
 	private class InputQueueInfo {
-		private final OSMWriter writer;
+		protected final OSMWriter writer;
 		private ArrayList<Element> staging;
-		private final BlockingQueue<ArrayList<Element>> inputQueue;
+		protected final BlockingQueue<ArrayList<Element>> inputQueue;
 
 		public InputQueueInfo(OSMWriter writer) {
-			inputQueue =  new ArrayBlockingQueue<ArrayList<Element>>(NO_ELEMENTS);
+			inputQueue =  new ArrayBlockingQueue<>(NO_ELEMENTS);
 			this.writer = writer;
-			this.staging = new ArrayList<Element>(STAGING_SIZE);
+			this.staging = new ArrayList<>(STAGING_SIZE);
 		}
 
 		void put(Element e) throws InterruptedException {
@@ -395,7 +392,7 @@ class SplitProcessor extends AbstractMapProcessor {
 		void flush() throws InterruptedException {
 			// System.out.println("Flush");
 			inputQueue.put(staging);
-			staging = new ArrayList<Element>(STAGING_SIZE);
+			staging = new ArrayList<>(STAGING_SIZE);
 			toProcess.put(this);
 		}
 
@@ -409,6 +406,9 @@ class SplitProcessor extends AbstractMapProcessor {
 
 	private class OSMWriterWorker implements Runnable {
 
+		public OSMWriterWorker() {
+		}
+
 		public void processElement(Element element, OSMWriter writer)
 				throws IOException {
 			if (element instanceof Node) {
diff --git a/src/uk/me/parabola/splitter/TileMetaInfo.java b/src/uk/me/parabola/splitter/TileMetaInfo.java
index 4f45498..9248c69 100644
--- a/src/uk/me/parabola/splitter/TileMetaInfo.java
+++ b/src/uk/me/parabola/splitter/TileMetaInfo.java
@@ -263,9 +263,6 @@ class TileMetaInfo {
 			assert sum - tile.getColSum(validEndX) < minNodes;
 		}
 		if (validStartX >= 0){
-			if (tile.count == 209218100){
-				long dd = 4;
-			}
 			long sum = 0;
 			for (int i = 0; i < validStartX; i++){
 				sum += tile.getColSum(i);
diff --git a/src/uk/me/parabola/splitter/WriterGrid.java b/src/uk/me/parabola/splitter/WriterGrid.java
index 2fd6ebf..d7f9337 100644
--- a/src/uk/me/parabola/splitter/WriterGrid.java
+++ b/src/uk/me/parabola/splitter/WriterGrid.java
@@ -26,8 +26,8 @@ import java.util.BitSet;
 public class WriterGrid implements WriterIndex{
 	private final Area bounds;
 	private final Grid grid;
-	private final WriterGridResult r;
-	private final WriterDictionaryShort writerDictionary;
+	protected final WriterGridResult r;
+	protected final WriterDictionaryShort writerDictionary;
 
 	/**
 	 * Create a grid to speed up the search of writer candidates.
diff --git a/test/uk/me/parabola/splitter/TestCustomCollections.java b/test/uk/me/parabola/splitter/TestCustomCollections.java
index 8b17d24..d053958 100644
--- a/test/uk/me/parabola/splitter/TestCustomCollections.java
+++ b/test/uk/me/parabola/splitter/TestCustomCollections.java
@@ -1,8 +1,8 @@
-/*
- * Copyright (c) 2009, Chris Miller
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
+/*
+ * Copyright (c) 2009, Chris Miller
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
  * published by the Free Software Foundation.
  *
  * This program is distributed in the hope that it will be useful, but
@@ -29,19 +29,19 @@ public class TestCustomCollections {
 	//}
 
 	@Test
-	public void testLongShortMap() {
-		testMap(new SparseLong2ShortMapInline(), 0L);
-		testMap(new SparseLong2ShortMapInline(), -10000L);
-		testMap(new SparseLong2ShortMapInline(), 1L << 35);
-		testMap(new SparseLong2ShortMapInline(), -1L << 35);
-		testMap(new SparseLong2ShortMapHuge(), 0L);
-		testMap(new SparseLong2ShortMapHuge(), -10000L);
-		testMap(new SparseLong2ShortMapHuge(), 1L << 35);
-		testMap(new SparseLong2ShortMapHuge(), -1L << 35);
+	public static void testLongShortMap() {
+		testMap(new SparseLong2ShortMapInline("test"), 0L);
+		testMap(new SparseLong2ShortMapInline("test"), -10000L);
+		testMap(new SparseLong2ShortMapInline("test"), 1L << 35);
+		testMap(new SparseLong2ShortMapInline("test"), -1L << 35);
+		testMap(new SparseLong2ShortMapHuge("test"), 0L);
+		testMap(new SparseLong2ShortMapHuge("test"), -10000L);
+		testMap(new SparseLong2ShortMapHuge("test"), 1L << 35);
+		testMap(new SparseLong2ShortMapHuge("test"), -1L << 35);
 	}
 
-	private void testMap(SparseLong2ShortMapFunction map, long idOffset) {
-		map.defaultReturnValue((short) Short.MIN_VALUE);
+	private static void testMap(SparseLong2ShortMapFunction map, long idOffset) {
+		map.defaultReturnValue(Short.MIN_VALUE);
 
 		for (short i = 1; i < 1000; i++) {
 			int j = map.put(idOffset + i, i);
@@ -153,11 +153,11 @@ public class TestCustomCollections {
 	}
 
 	@Test
-	public void testLong2IntMap() {
+	public static void testLong2IntMap() {
 		testMap(new Long2IntClosedMap("test", 10000, -1));
 	}
 
-	private void testMap(Long2IntClosedMapFunction map) {
+	private static void testMap(Long2IntClosedMapFunction map) {
 		int val;
 		for (int i = 1; i < 1000; i++) {
 			int j = map.add((long)i*10, i);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mkgmap-splitter.git



More information about the Pkg-grass-devel mailing list