diff --git a/.gitignore b/.gitignore
index 7afcb7c..fbc9269 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,6 @@
 Icon?
 ehthumbs.db
 [Tt]humbs.db
+/nbproject/private/
+/build/
+/dist/
\ No newline at end of file
diff --git a/doc/db.fuel.class.violet.html b/doc/db.fuel.class.violet.html
new file mode 100644
index 0000000..31aacdb
--- /dev/null
+++ b/doc/db.fuel.class.violet.html
@@ -0,0 +1,330 @@
+<HTML>
+<HEAD>
+<META name="description"
+	content="Violet UML Editor cross format document" />
+<META name="keywords" content="Violet, UML" />
+<META charset="UTF-8" />
+<SCRIPT type="text/javascript">
+	function switchVisibility() {
+		var obj = document.getElementById("content");
+		obj.style.display = (obj.style.display == "block") ? "none" : "block";
+	}
+</SCRIPT>
+</HEAD>
+<BODY>
+	This file was generated with Violet UML Editor 2.1.0.
+	&nbsp;&nbsp;(&nbsp;<A href=# onclick="switchVisibility()">View Source</A>&nbsp;/&nbsp;<A href="http://sourceforge.net/projects/violet/files/violetumleditor/" target="_blank">Download Violet</A>&nbsp;)
+	<BR />
+	<BR />
+	<SCRIPT id="content" type="text/xml"><![CDATA[<ClassDiagramGraph id="1">
+  <nodes id="2">
+    <ClassNode id="3">
+      <children id="4"/>
+      <location class="Point2D.Double" id="5" x="90.0" y="70.0"/>
+      <id id="6" value="abe25fb1-272e-4064-9d98-7cf790b0df4b"/>
+      <revision>1</revision>
+      <backgroundColor id="7">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+        <alpha>255</alpha>
+      </backgroundColor>
+      <borderColor id="8">
+        <red>0</red>
+        <green>0</green>
+        <blue>0</blue>
+        <alpha>255</alpha>
+      </borderColor>
+      <textColor reference="8"/>
+      <name id="9" justification="1" size="3" underlined="false">
+        <text>&lt;&lt;Feature&gt;&gt;
+燃料給油所</text>
+      </name>
+      <attributes id="10" justification="0" size="4" underlined="false">
+        <text>+ 地点:GM_Point
++ 燃料店舗分類:燃料店舗分類コード
++ 所在地: String</text>
+      </attributes>
+      <methods id="11" justification="0" size="4" underlined="false">
+        <text></text>
+      </methods>
+    </ClassNode>
+    <ClassNode id="12">
+      <children id="13"/>
+      <location class="Point2D.Double" id="14" x="460.0" y="80.0"/>
+      <id id="15" value="b49c7466-b0f5-46d6-8d25-446774395a9e"/>
+      <revision>1</revision>
+      <backgroundColor reference="7"/>
+      <borderColor reference="8"/>
+      <textColor reference="8"/>
+      <name id="16" justification="1" size="3" underlined="false">
+        <text>&lt;&lt;CodeList&gt;&gt;
+燃料店舗分類コード</text>
+      </name>
+      <attributes id="17" justification="0" size="4" underlined="false">
+        <text>+ SS(ガソリンスタンド) = 1</text>
+      </attributes>
+      <methods id="18" justification="0" size="4" underlined="false">
+        <text></text>
+      </methods>
+    </ClassNode>
+    <ClassNode id="19">
+      <children id="20"/>
+      <location class="Point2D.Double" id="21" x="100.0" y="290.0"/>
+      <id id="22" value="457b856c-6be7-4122-a77e-cdc5fac6c88a"/>
+      <revision>1</revision>
+      <backgroundColor id="23">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+        <alpha>255</alpha>
+      </backgroundColor>
+      <borderColor id="24">
+        <red>0</red>
+        <green>0</green>
+        <blue>0</blue>
+        <alpha>255</alpha>
+      </borderColor>
+      <textColor reference="24"/>
+      <name id="25" justification="1" size="3" underlined="false">
+        <text>&lt;&lt;HSQLDB table&gt;&gt;
+table.SS_CODE</text>
+      </name>
+      <attributes id="26" justification="0" size="4" underlined="false">
+        <text>+ id: String
++ lon: doble
++ lat: double</text>
+      </attributes>
+      <methods id="27" justification="0" size="4" underlined="false">
+        <text></text>
+      </methods>
+    </ClassNode>
+  </nodes>
+  <edges id="28">
+    <AggregationEdge id="29">
+      <start class="ClassNode" reference="12"/>
+      <end class="ClassNode" reference="3"/>
+      <startLocation class="Point2D.Double" id="30" x="60.0" y="80.0"/>
+      <endLocation class="Point2D.Double" id="31" x="150.0" y="90.0"/>
+      <transitionPoints id="32"/>
+      <id id="33" value="81c7ef9b-72a0-468f-a338-294586e0ef84"/>
+      <revision>1</revision>
+      <bentStyle name="AUTO"/>
+      <startLabel>1</startLabel>
+      <middleLabel>店舗分類</middleLabel>
+      <endLabel>1</endLabel>
+    </AggregationEdge>
+  </edges>
+</ClassDiagramGraph>]]></SCRIPT>
+	<BR />
+	<BR />
+	<IMG alt="embedded diagram image" src="data:image/png;base64,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
+TmvHAAAAAElFTkSuQmCC" />
+</BODY>
+</HTML>
\ No newline at end of file
diff --git a/manifest.mf b/manifest.mf
new file mode 100644
index 0000000..328e8e5
--- /dev/null
+++ b/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/nbbuild.xml b/nbbuild.xml
new file mode 100644
index 0000000..b6c1178
--- /dev/null
+++ b/nbbuild.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="osmCoverage" default="default" basedir=".">
+    <description>Builds, tests, and runs the project osmCoverage.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar:                  JAR building
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="osmCoverage-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml
new file mode 100644
index 0000000..894502b
--- /dev/null
+++ b/nbproject/build-impl.xml
@@ -0,0 +1,1403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - test compilation
+  - test execution
+  - test debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="osmCoverage-impl">
+    <fail message="Please build using Ant 1.8.0 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.8.0"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.6"/>
+        <property name="default.javac.target" value="1.6"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <property name="platform.java" value="${java.home}/bin/java"/>
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="splashscreen.available">
+            <and>
+                <not>
+                    <equals arg1="${application.splash}" arg2="" trim="true"/>
+                </not>
+                <available file="${application.splash}"/>
+            </and>
+        </condition>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="profile.available">
+            <and>
+                <isset property="javac.profile"/>
+                <length length="0" string="${javac.profile}" when="greater"/>
+                <matches pattern="((1\.[89])|9)(\..*)?" string="${javac.source}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <or>
+                <not>
+                    <istrue value="${jar.archive.disabled}"/>
+                </not>
+                <istrue value="${not.archive.disabled}"/>
+            </or>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="do.archive"/>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+main.class.available">
+            <and>
+                <isset property="main.class.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+splashscreen.available">
+            <and>
+                <isset property="splashscreen.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+profile.available">
+            <and>
+                <isset property="profile.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or/>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="run.jvmargs.ide" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <property name="manifest.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <and>
+                <isset property="endorsed.classpath"/>
+                <not>
+                    <equals arg1="${endorsed.classpath}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
+            <isset property="profile.available"/>
+        </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="javac.fork">
+            <or>
+                <istrue value="${jdkBug6558476}"/>
+                <istrue value="${javac.external.vm}"/>
+            </or>
+        </condition>
+        <property name="jar.index" value="false"/>
+        <property name="jar.index.metainf" value="${jar.index}"/>
+        <property name="copylibs.rebase" value="true"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="junit.available">
+            <or>
+                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
+                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
+            </or>
+        </condition>
+        <condition property="testng.available">
+            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
+        </condition>
+        <condition property="junit+testng.available">
+            <and>
+                <istrue value="${junit.available}"/>
+                <istrue value="${testng.available}"/>
+            </and>
+        </condition>
+        <condition else="testng" property="testng.mode" value="mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <condition else="" property="testng.debug.mode" value="-mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <property name="java.failonerror" value="true"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete>
+                    <fileset file="${javac.includesfile.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-init">
+        <condition else="false" property="nb.junit.batch" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <not>
+                    <isset property="test.method"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="nb.junit.single" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <isset property="test.method"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-init-test-properties">
+        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
+        <property name="test.binarytestincludes" value=""/>
+        <property name="test.binaryexcludes" value=""/>
+    </target>
+    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+    <target if="${testng.available}" name="-init-macrodef-testng">
+        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
+                    <isset property="test.method"/>
+                </condition>
+                <union id="test.set"/>
+                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="osmCoverage" testname="TestNG tests" workingDir="${work.dir}">
+                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+                    <propertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </propertyset>
+                    <customize/>
+                </testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-test-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <echo>No tests executed.</echo>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
+        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <sequential>
+                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${testng.available}" name="-init-macrodef-testng-debug">
+        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element name="customize2" optional="true"/>
+            <sequential>
+                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
+                    <isset property="test.method"/>
+                </condition>
+                <condition else="-suitename osmCoverage -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+                    <matches pattern=".*\.xml" string="@{testClass}"/>
+                </condition>
+                <delete dir="${build.test.results.dir}" quiet="true"/>
+                <mkdir dir="${build.test.results.dir}"/>
+                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
+                    <customize>
+                        <customize2/>
+                        <jvmarg value="-ea"/>
+                        <arg line="${testng.debug.mode}"/>
+                        <arg line="-d ${build.test.results.dir}"/>
+                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
+                        <arg line="${testng.cmd.args}"/>
+                    </customize>
+                </j2seproject3:debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
+        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element implicit="true" name="customize2" optional="true"/>
+            <sequential>
+                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2/>
+                </j2seproject3:testng-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2>
+                        <syspropertyset>
+                            <propertyref prefix="test-sys-prop."/>
+                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                        </syspropertyset>
+                    </customize2>
+                </j2seproject3:testng-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
+    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
+        <macrodef name="resolve">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${env.@{value}}"/>
+            </sequential>
+        </macrodef>
+        <macrodef name="profile">
+            <attribute default="${main.class}" name="classname"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property environment="env"/>
+                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
+                <java classname="@{classname}" dir="${profiler.info.dir}" failonerror="${java.failonerror}" fork="true" jvm="${profiler.info.jvm}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
+                    <jvmarg line="${profiler.info.jvmargs}"/>
+                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+                    <arg line="${application.args}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
+        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
+        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
+    </target>
+    <!--
+                end of pre NB7.2 profiling section
+            -->
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <attribute default="jvm" name="jvm"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${manifest.file}" name="manifest"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <filtermapper>
+                            <replacestring from=" " to="%20"/>
+                        </filtermapper>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" manifestencoding="UTF-8" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifestencoding="UTF-8">
+                <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: osmCoverage was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <touch file="${tmp.manifest.file}" verbose="false"/>
+    </target>
+    <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <copy encoding="${manifest.encoding}" file="${manifest.file}" outputencoding="UTF-8" tofile="${tmp.manifest.file}"/>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="Profile" value="${javac.profile}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+        </manifest>
+    </target>
+    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
+        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
+        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
+        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
+            <isset property="main.class.available"/>
+        </condition>
+        <condition else="debug" property="jar.usage.level" value="info">
+            <isset property="main.class.available"/>
+        </condition>
+        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
+    </target>
+    <target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
+        <delete>
+            <fileset file="${tmp.manifest.file}"/>
+        </delete>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest" name="-do-jar-without-libraries"/>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest" name="-do-jar-with-libraries"/>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                =================
+                PROFILING SECTION
+                =================
+            -->
+    <!--
+                pre NB7.2 profiler integration
+            -->
+    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile/>
+    </target>
+    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
+        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="${profile.class}"/>
+    </target>
+    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </profile>
+    </target>
+    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <test name="${profile.class}"/>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+            <syspropertyset>
+                <propertyref prefix="test-sys-prop."/>
+                <mapper from="test-sys-prop.*" to="*" type="glob"/>
+            </syspropertyset>
+            <formatter type="brief" usefile="false"/>
+            <formatter type="xml"/>
+        </junit>
+    </target>
+    <!--
+                end of pre NB72 profiling section
+            -->
+    <target if="netbeans.home" name="-profile-check">
+        <condition property="profiler.configured">
+            <or>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
+            </or>
+        </condition>
+    </target>
+    <target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
+        <startprofiler/>
+        <antcall target="run"/>
+    </target>
+    <target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-single"/>
+    </target>
+    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
+    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <startprofiler/>
+        <antcall target="test-single"/>
+    </target>
+    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-test-with-main"/>
+    </target>
+    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <startprofiler/>
+        <antcall target="run-applet"/>
+    </target>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
+            <and>
+                <isset property="endorsed.classpath.cmd.line.arg"/>
+                <not>
+                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="bug5101868workaround" value="*.java">
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
+        </condition>
+        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${bug5101868workaround},${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+                <exclude name="*.java"/>
+            </fileset>
+            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                TEST COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir=""/>
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                TEST EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+    <!--
+                =======================
+                TEST DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: osmCoverage was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <and>
+                <not>
+                    <isset property="already.built.${call.subproject}"/>
+                </not>
+                <available file="${call.script}"/>
+            </and>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties
new file mode 100644
index 0000000..d7773c1
--- /dev/null
+++ b/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+nbbuild.xml.data.CRC32=980059b7
+nbbuild.xml.script.CRC32=e7ea1557
+nbbuild.xml.stylesheet.CRC32=8064a381@1.80.1.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=980059b7
+nbproject/build-impl.xml.script.CRC32=9b89e078
+nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
diff --git a/nbproject/project.properties b/nbproject/project.properties
new file mode 100644
index 0000000..e0da09d
--- /dev/null
+++ b/nbproject/project.properties
@@ -0,0 +1,83 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=osmCoverage
+application.vendor=yuu
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+buildfile=nbbuild.xml
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# \u914d\u7f6ejar\u304b\u3089\u9664\u5916\u3059\u308b\u5fc5\u8981\u304c\u3042\u308bbuild.classes.dir\u5185\u306e\u30d5\u30a1\u30a4\u30eb
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/osmCoverage.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.hayashi_0225.jar=lib\\hayashi_0225.jar
+file.reference.hsqldb_2.2.9.jar=lib\\hsqldb_2.2.9.jar
+file.reference.osmCoverage-src=src
+file.reference.postgresql-9.4.1212.jar=lib\\postgresql-9.4.1212.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${file.reference.hayashi_0225.jar}:\
+    ${file.reference.hsqldb_2.2.9.jar}:\
+    ${file.reference.postgresql-9.4.1212.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.external.vm=true
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+javac.test.processorpath=\
+    ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=${file.reference.osmCoverage-src}
diff --git a/nbproject/project.xml b/nbproject/project.xml
new file mode 100644
index 0000000..3480a86
--- /dev/null
+++ b/nbproject/project.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>osmCoverage</name>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots/>
+        </data>
+    </configuration>
+</project>
diff --git a/src/ImportGML_FUEL.bat b/src/ImportGML_FUEL.bat
new file mode 100644
index 0000000..2f1f6e9
--- /dev/null
+++ b/src/ImportGML_FUEL.bat
@@ -0,0 +1,3 @@
+RD /s database
+java -cp .;osmCoverage.jar;hayashi_0225.jar;hsqldb_2.2.9.jar;postgresql-9.4.1212.jar osm.jp.coverage.fuel.DbFuel
+
diff --git a/src/osm/jp/api/Db.java b/src/osm/jp/api/Db.java
new file mode 100644
index 0000000..0da611a
--- /dev/null
+++ b/src/osm/jp/api/Db.java
@@ -0,0 +1,51 @@
+package osm.jp.api;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.SQLSyntaxErrorException;
+
+public class Db {
+    /**
+     * データを受信しないSQLを実行するに作る
+     * 既にテーブルが存在する時には何もしない
+     * @param con
+     * @param createsql
+     * @throws SQLException
+     * @throws java.sql.SQLSyntaxErrorException
+     */
+    public static void updateSQL(Connection con, String createsql) throws SQLException, SQLSyntaxErrorException {
+        System.out.println(createsql);
+        try (PreparedStatement ps = con.prepareStatement(createsql)) {
+            ps.executeUpdate();
+        }
+   }
+
+    /**
+     * 'table.?'を削除するS
+     * @param con
+     * @param tableName
+     * @throws SQLException
+     */
+    public static void drop(Connection con, String tableName) throws SQLException {
+        String createSt = "DROP TABLE "+ tableName +";";
+        System.out.println(createSt);
+        try (PreparedStatement ps = con.prepareStatement(createSt)) {
+            ps.executeUpdate();
+        }
+    }
+	
+    /**
+     * 'table.FUEL'の内容を空にする
+     * @param con
+     * @param tableName
+     * @throws SQLException
+     */
+    public static void clear(Connection con, String tableName) throws SQLException {
+        String createSt = "DELETE FROM "+ tableName +";";
+        System.out.println(createSt);
+        try (PreparedStatement ps = con.prepareStatement(createSt)) {
+            ps.executeUpdate();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/osm/jp/coverage/busstop/Busstop.java b/src/osm/jp/coverage/busstop/Busstop.java
index 4f140fc..d861539 100644
--- a/src/osm/jp/coverage/busstop/Busstop.java
+++ b/src/osm/jp/coverage/busstop/Busstop.java
@@ -38,9 +38,10 @@
 	/**
 	 * メイン
 	 *
-	 *	java -cp .:ConvBusstop.jar:hayashi_0225.jar:hsqldb_2.2.9.jar osm.jp.ConvBusstop <option>
+	 *	java -cp .:ConvBusstop.jar:hayashi_0225.jar:hsqldb_2.2.9.jar osm.jp.ConvBusstop [option]
 	 *		OPTION: -check	OSMデータ上に既存のバス停が存在するかどうかをチェックする
 	 *
+     * @param args
 	 * @throws IOException
 	 * @throws SQLException
 	 * @throws ClassNotFoundException
@@ -50,14 +51,14 @@
 	 * @throws ParserConfigurationException */
 	public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException, TransformerException
 	{
-		for (int i=0; i < args.length; i++) {
-			if (args[i].equals("-update")) {
-				Busstop.update = true;
-			}
-			if (args[i].equals("-noget")) {
-				Busstop.noget = true;
-			}
-		}
+            for (String arg : args) {
+                if (arg.equals("-update")) {
+                    Busstop.update = true;
+                }
+                if (arg.equals("-noget")) {
+                    Busstop.noget = true;
+                }
+            }
 
 		// HSQLディレクトリがなければ作る
 		File dbdir = new File("database");
@@ -100,22 +101,18 @@
 	}
 	
 	public static void getJapanCapabilities(Connection con, File oFile) throws MalformedURLException, ProtocolException, IOException, ClassNotFoundException, SQLException, ParserConfigurationException, SAXException {
-		for (int i=0; i < all.length; i++) {
-			HttpPOST.getCapabilities(oFile, "highway", "bus_stop", all[i].minLat, all[i].maxLat, all[i].minLon, all[i].maxLon);
-			readExistingFile(con, oFile);
-
-			HttpPOST.getCapabilities(oFile, "highway", "disused:bus_stop", all[i].minLat, all[i].maxLat, all[i].minLon, all[i].maxLon);
-			readExistingFile(con, oFile);
-			
-			HttpPOST.getCapabilities(oFile, "amenity", "bus_station", all[i].minLat, all[i].maxLat, all[i].minLon, all[i].maxLon);
-			readExistingFile(con, oFile);
-			
-			HttpPOST.getCapabilities(oFile, "public_transport", "platform", all[i].minLat, all[i].maxLat, all[i].minLon, all[i].maxLon);
-			readExistingFile(con, oFile);
-			
-			HttpPOST.getCapabilities(oFile, "public_transport", "stop_position", all[i].minLat, all[i].maxLat, all[i].minLon, all[i].maxLon);
-			readExistingFile(con, oFile);
-		}
+            for (Japan all1 : all) {
+                HttpPOST.getCapabilities(oFile, "highway", "bus_stop", all1.minLat, all1.maxLat, all1.minLon, all1.maxLon);
+                readExistingFile(con, oFile);
+                HttpPOST.getCapabilities(oFile, "highway", "disused:bus_stop", all1.minLat, all1.maxLat, all1.minLon, all1.maxLon);
+                readExistingFile(con, oFile);
+                HttpPOST.getCapabilities(oFile, "amenity", "bus_station", all1.minLat, all1.maxLat, all1.minLon, all1.maxLon);
+                readExistingFile(con, oFile);
+                HttpPOST.getCapabilities(oFile, "public_transport", "platform", all1.minLat, all1.maxLat, all1.minLon, all1.maxLon);
+                readExistingFile(con, oFile);
+                HttpPOST.getCapabilities(oFile, "public_transport", "stop_position", all1.minLat, all1.maxLat, all1.minLon, all1.maxLon);
+                readExistingFile(con, oFile);
+            }
 	}
 
 	
@@ -170,79 +167,79 @@
 					else {
 						ps1 = con.prepareStatement("SELECT idref,name,lat,lon,fixed FROM bus_stop WHERE area=?");
 					}
-					PreparedStatement ps2 = con.prepareStatement("SELECT SUM(score) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?)");
-					PreparedStatement ps3 = con.prepareStatement("UPDATE bus_stop SET fixed=? WHERE idref=?");
-					PreparedStatement ps4 = con.prepareStatement("SELECT SUM(score) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?) and (name = ?)");
-					ps1.setInt(1, areacode);
-					ResultSet rset1 = ps1.executeQuery();
-					while (rset1.next()) {
-						String idref = rset1.getString(1);
-						String name = rset1.getString("name");
-						Double lat = rset1.getDouble("lat");
-						Double lon = rset1.getDouble("lon");
-						int fixed = rset1.getInt("fixed");
-						
-						// 指定の緯度経度を中心とする半径150x2m四方の矩形領域
-						System.out.print(idref + "("+ name + ") ....");
-						RectArea rect = new RectArea(lat, lon, NEER);		// 300m 四方
-						ps2.setDouble(1, rect.minlat);
-						ps2.setDouble(2, rect.maxlat);
-						ps2.setDouble(3, rect.minlon);
-						ps2.setDouble(4, rect.maxlon);
-						ResultSet rset2 = ps2.executeQuery();
-						if (rset2.next()) {
-							int score = rset2.getInt(1);
-							if (score > 0) {
-								System.out.println("."+ score);
-								if (Busstop.update) {
-									if (fixed != score) {
-										String osm_node = "UPDATE t_busstop SET fixed="+ score +" WHERE gid="+ idref +";";
-										System.out.println(osm_node);
-										ow.write(osm_node);
-										ow.newLine();
-									}
-								}
-								else {
-									ps3.setInt(1, score);
-									ps3.setString(2, idref);
-									ps3.executeUpdate();
-								}
-							}
-							else {
-								// 指定の緯度経度を中心とする半径150x4m四方の矩形領域
-								System.out.print("***");
-								rect = new RectArea(lat, lon, NEER*2);		// 600m 四方
-								ps4.setDouble(1, rect.minlat);
-								ps4.setDouble(2, rect.maxlat);
-								ps4.setDouble(3, rect.minlon);
-								ps4.setDouble(4, rect.maxlon);
-								ps4.setString(5, name);
-								ResultSet rset4 = ps4.executeQuery();
-								if (rset4.next()) {
-									score = rset4.getInt(1);
-									System.out.println(".."+ score);
-									if (score != fixed) {
-										if (Busstop.update) {
-											String osm_node = "UPDATE t_busstop SET fixed="+ score +" WHERE gid="+ idref +";";
-											System.out.println(osm_node);
-											ow.write(osm_node);
-											ow.newLine();
-										}
-										else {
-											ps3.setInt(1, score);
-											ps3.setString(2, idref);
-											ps3.executeUpdate();
-										}
-									}
-								}
-								rset4.close();
-							}
-						}
-						rset2.close();
-					}
-					rset1.close();
-					ps3.close();
-					ps2.close();
+                                    try (PreparedStatement ps2 = con.prepareStatement("SELECT SUM(score) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?)")) {
+                                        PreparedStatement ps3 = con.prepareStatement("UPDATE bus_stop SET fixed=? WHERE idref=?");
+                                        PreparedStatement ps4 = con.prepareStatement("SELECT SUM(score) FROM existing_data where (lat > ?) and (lat < ?) and (lon > ?) and (lon < ?) and (name = ?)");
+                                        ps1.setInt(1, areacode);
+                                        ResultSet rset1 = ps1.executeQuery();
+                                        while (rset1.next()) {
+                                            String idref = rset1.getString(1);
+                                            String name = rset1.getString("name");
+                                            Double lat = rset1.getDouble("lat");
+                                            Double lon = rset1.getDouble("lon");
+                                            int fixed = rset1.getInt("fixed");
+                                            
+                                            // 指定の緯度経度を中心とする半径150x2m四方の矩形領域
+                                            System.out.print(idref + "("+ name + ") ....");
+                                            RectArea rect = new RectArea(lat, lon, NEER);		// 300m 四方
+                                            ps2.setDouble(1, rect.minlat);
+                                            ps2.setDouble(2, rect.maxlat);
+                                            ps2.setDouble(3, rect.minlon);
+                                            ps2.setDouble(4, rect.maxlon);
+                                            try (ResultSet rset2 = ps2.executeQuery()) {
+                                                if (rset2.next()) {
+                                                    int score = rset2.getInt(1);
+                                                    if (score > 0) {
+                                                        System.out.println("."+ score);
+                                                        if (Busstop.update) {
+                                                            if (fixed != score) {
+                                                                String osm_node = "UPDATE t_busstop SET fixed="+ score +" WHERE gid="+ idref +";";
+                                                                System.out.println(osm_node);
+                                                                ow.write(osm_node);
+                                                                ow.newLine();
+                                                            }
+                                                        }
+                                                        else {
+                                                            ps3.setInt(1, score);
+                                                            ps3.setString(2, idref);
+                                                            ps3.executeUpdate();
+                                                        }
+                                                    }
+                                                    else {
+                                                        // 指定の緯度経度を中心とする半径150x4m四方の矩形領域
+                                                        System.out.print("***");
+                                                        rect = new RectArea(lat, lon, NEER*2);		// 600m 四方
+                                                        ps4.setDouble(1, rect.minlat);
+                                                        ps4.setDouble(2, rect.maxlat);
+                                                        ps4.setDouble(3, rect.minlon);
+                                                        ps4.setDouble(4, rect.maxlon);
+                                                        ps4.setString(5, name);
+                                                        try (ResultSet rset4 = ps4.executeQuery()) {
+                                                            if (rset4.next()) {
+                                                                score = rset4.getInt(1);
+                                                                System.out.println(".."+ score);
+                                                                if (score != fixed) {
+                                                                    if (Busstop.update) {
+                                                                        String osm_node = "UPDATE t_busstop SET fixed="+ score +" WHERE gid="+ idref +";";
+                                                                        System.out.println(osm_node);
+                                                                        ow.write(osm_node);
+                                                                        ow.newLine();
+                                                                    }
+                                                                    else {
+                                                                        ps3.setInt(1, score);
+                                                                        ps3.setString(2, idref);
+                                                                        ps3.executeUpdate();
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        rset1.close();
+                                        ps3.close();
+                                    }
 					ps1.close();
 				}
 				
@@ -266,7 +263,7 @@
 	static String[] shiftArgs(String[] args) {
 		String[] values = new String[args.length - 1];
 		for (int i=1; i < args.length; i++) {
-			values[i - 1] = new String(args[i]);
+			values[i - 1] = args[i];
 		}
 		return values;
 	}
@@ -315,19 +312,22 @@
 		String fixmeStr = "";
 		int	score = 0;
 		
-
 		NamedNodeMap nodeMap = node.getAttributes();
 		if (null != nodeMap) {
 			for (int j=0; j < nodeMap.getLength(); j++) {
-				if (nodeMap.item(j).getNodeName().equals("id")) {
-					idrefStr = nodeMap.item(j).getNodeValue();
-				}
-				else if (nodeMap.item(j).getNodeName().equals("lat")) {
-					latStr = nodeMap.item(j).getNodeValue();
-				}
-				else if (nodeMap.item(j).getNodeName().equals("lon")) {
-					lonStr = nodeMap.item(j).getNodeValue();
-				}
+                            switch (nodeMap.item(j).getNodeName()) {
+                                case "id":
+                                    idrefStr = nodeMap.item(j).getNodeValue();
+                                    break;
+                                case "lat":
+                                    latStr = nodeMap.item(j).getNodeValue();
+                                    break;
+                                case "lon":
+                                    lonStr = nodeMap.item(j).getNodeValue();
+                                    break;
+                                default:
+                                    break;
+                            }
 			}
 			
 			NodeList nodes = node.getChildNodes();
@@ -348,10 +348,10 @@
 						}
 						
 						if ((key != null) && key.toLowerCase().equals("name") && (value != null)) {
-							nameStr = new String(value);
+							nameStr = value;
 						}
 						if ((key != null) && key.toLowerCase().equals("fixme") && (value != null)) {
-							fixmeStr = new String(value);
+							fixmeStr = value;
 						}
 					}
 				}
@@ -365,67 +365,76 @@
 				score = 1;
 			}
 
-			// idref と nameStr をデータベースに格納する
-			PreparedStatement ps1 = con.prepareStatement("SELECT name,score FROM existing_data WHERE idref=?");
-			ps1.setString(1, idrefStr);
-			ResultSet rset1 = ps1.executeQuery();
-			if (rset1.next()) {
-				int fixed = rset1.getInt("score");
-				if (fixed < score) {
-					System.out.println("update existing_data : [id:"+ idrefStr +"] score="+ Integer.toString(score) +" "+ nameStr);
-					PreparedStatement ps5 = con.prepareStatement("UPDATE existing_data SET score=? WHERE idref=?");
-					ps5.setInt(1, score);
-					ps5.setString(2, idrefStr);
-					ps5.executeUpdate();
-					ps5.close();
-				}
-			}
-			else {
-				System.out.println("import existing_data : "+ idrefStr +" ("+ latStr +","+ lonStr+")["+ Integer.toString(score) +"]"+ nameStr);
-				PreparedStatement ps5 = con.prepareStatement("INSERT INTO existing_data (idref,lat,lon, name, score) VALUES (?,?,?,?,?)");
-				ps5.setString(1, idrefStr);
-				ps5.setDouble(2, Double.parseDouble(latStr));
-				ps5.setDouble(3, Double.parseDouble(lonStr));
-				ps5.setString(4, nameStr);
-				ps5.setInt(5, score);
-				ps5.executeUpdate();
-				ps5.close();
-			}
-			rset1.close();
-			ps1.close();
+                    try ( // idref と nameStr をデータベースに格納する
+                            PreparedStatement ps1 = con.prepareStatement("SELECT name,score FROM existing_data WHERE idref=?")) {
+                        ps1.setString(1, idrefStr);
+                        ResultSet rset1 = ps1.executeQuery();
+                        if (rset1.next()) {
+                            int fixed = rset1.getInt("score");
+                            if (fixed < score) {
+                                System.out.println("update existing_data : [id:"+ idrefStr +"] score="+ Integer.toString(score) +" "+ nameStr);
+                                try (PreparedStatement ps5 = con.prepareStatement("UPDATE existing_data SET score=? WHERE idref=?")) {
+                                    ps5.setInt(1, score);
+                                    ps5.setString(2, idrefStr);
+                                    ps5.executeUpdate();
+                                }
+                            }
+                        }
+                        else {
+                            System.out.println("import existing_data : "+ idrefStr +" ("+ latStr +","+ lonStr+")["+ Integer.toString(score) +"]"+ nameStr);
+                            try (PreparedStatement ps5 = con.prepareStatement("INSERT INTO existing_data (idref,lat,lon, name, score) VALUES (?,?,?,?,?)")) {
+                                ps5.setString(1, idrefStr);
+                                ps5.setDouble(2, Double.parseDouble(latStr));
+                                ps5.setDouble(3, Double.parseDouble(lonStr));
+                                ps5.setString(4, nameStr);
+                                ps5.setInt(5, score);
+                                ps5.executeUpdate();
+                            }
+                        }
+                        rset1.close();
+                    }
 		}
 	}
 	
 	/**
 	 * 
+     * @param conHsql
+     * @param conPost
+     * @param areacode
+     * @throws java.io.FileNotFoundException
+     * @throws java.lang.ClassNotFoundException
+     * @throws java.sql.SQLException
+     * @throws java.io.IOException
+     * @throws javax.xml.parsers.ParserConfigurationException
+     * @throws org.xml.sax.SAXException
 	 */
 	public static void updateFile (Connection conHsql, Connection conPost, int areacode) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException {
 		int iCounter = 0;
-		PreparedStatement ps1 = conPost.prepareStatement("SELECT gid,name,fixed,ST_X(geom) LON, ST_Y(geom) LAT FROM t_busstop WHERE area=?");
-		PreparedStatement ps2 = conHsql.prepareStatement("INSERT INTO bus_stop (idref,name,fixed,area,lat,lon) VALUES (?,?,?,?,?,?)");
-
-		// idref と nameStr をデータベースに格納する
-		ps1.setInt(1, areacode);
-		ResultSet rset1 = ps1.executeQuery();
-		while (rset1.next()) {
-			iCounter++;
-			int idref = rset1.getInt("gid");
-			String nameStr = rset1.getString("name");
-			int fixed = rset1.getInt("fixed");
-			double lat = rset1.getDouble(4);
-			double lon = rset1.getDouble(5);
-			
-			ps2.setInt(1, idref);
-			ps2.setString(2, nameStr);
-			ps2.setInt(3, fixed);
-			ps2.setInt(4, areacode);
-			ps2.setDouble(5, lon);
-			ps2.setDouble(6, lat);
-			System.out.println("INSERT INTO bus_stop (idref,name,fixed,area,lat,lon) VALUES ("+ idref +",'"+ nameStr +"',"+ fixed +","+ areacode +","+ lat +","+ lon +")");
-			ps2.executeUpdate();
-		}
-		rset1.close();
-		ps1.close();
+                PreparedStatement ps2;
+            try (PreparedStatement ps1 = conPost.prepareStatement("SELECT gid,name,fixed,ST_X(geom) LON, ST_Y(geom) LAT FROM t_busstop WHERE area=?")) {
+                ps2 = conHsql.prepareStatement("INSERT INTO bus_stop (idref,name,fixed,area,lat,lon) VALUES (?,?,?,?,?,?)");
+                // idref と nameStr をデータベースに格納する
+                ps1.setInt(1, areacode);
+                ResultSet rset1 = ps1.executeQuery();
+                while (rset1.next()) {
+                    iCounter++;
+                    int idref = rset1.getInt("gid");
+                    String nameStr = rset1.getString("name");
+                    int fixed = rset1.getInt("fixed");
+                    double lat = rset1.getDouble(4);
+                    double lon = rset1.getDouble(5);
+                    
+                    ps2.setInt(1, idref);
+                    ps2.setString(2, nameStr);
+                    ps2.setInt(3, fixed);
+                    ps2.setInt(4, areacode);
+                    ps2.setDouble(5, lon);
+                    ps2.setDouble(6, lat);
+                    System.out.println("INSERT INTO bus_stop (idref,name,fixed,area,lat,lon) VALUES ("+ idref +",'"+ nameStr +"',"+ fixed +","+ areacode +","+ lat +","+ lon +")");
+                    ps2.executeUpdate();
+                }
+                rset1.close();
+            }
 		ps2.close();
 
 		System.out.println("("+ areacode +") バス停数["+ iCounter +"]");
@@ -435,6 +444,7 @@
 	 * 数値地図情報のGMLデータファイルを読み取ってローカルベータベースへ記録する
 	 * @param con
 	 * @param iFile
+     * @param areacode
 	 * @throws FileNotFoundException
 	 * @throws ClassNotFoundException
 	 * @throws SQLException
@@ -452,7 +462,6 @@
 		DocumentBuilder        builder;
 		Node root;
 
-		iCounter = 0;
 		factory = DocumentBuilderFactory.newInstance();
 		builder = factory.newDocumentBuilder();
 		factory.setIgnoringElementContentWhitespace(true);
@@ -465,14 +474,13 @@
 	}
 
 	public static void clearDb(Connection con) throws SQLException {
-		Statement stmt = con.createStatement();
-		long count = stmt.executeUpdate("delete from bus_stop");
-		System.out.println("'Database.bus_stop'から "+ count +" 件のデータを削除しました。");
-	    
-	    count = stmt.executeUpdate("delete from existing_data");
-	    System.out.println("'Database.existing_data'から "+ count +" 件のデータを削除しました。");
-
-	    stmt.close();
+            try (Statement stmt = con.createStatement()) {
+                long count = stmt.executeUpdate("delete from bus_stop");
+                System.out.println("'Database.bus_stop'から "+ count +" 件のデータを削除しました。");
+                
+                count = stmt.executeUpdate("delete from existing_data");
+                System.out.println("'Database.existing_data'から "+ count +" 件のデータを削除しました。");
+            }
 	}
 
 	public static void initDb(Connection con) throws SQLException {
@@ -487,6 +495,7 @@
 	 * @param node
 	 * @param iFileName		// ソースファイル名(拡張子を含まない)
 	 * @param timeStampStr
+     * @param areacode
 	 * @return
 	 * @throws IOException
 	 * @throws SQLException
@@ -505,25 +514,25 @@
 		NodeList nodes = node.getChildNodes();
 		for (int i=0; i<nodes.getLength(); i++) {
 			Node node2 = nodes.item(i);
-			if (node2.getNodeName().equals("jps:GM_Point")) {
-				showGmPoint(con, node2);
-			}
-			else if (node2.getNodeName().equals("gml:Point")) {
-				showGmlPoint(con, node2, areacode);
-			}
-
-			else if (node2.getNodeName().equals("ksj:ED01")) {
-				iCounter++;
-				showED01(con, node2, iFileName);
-			}
-			else if (node2.getNodeName().equals("ksj:BusStop")) {
-				iCounter++;
-				showBusStop(con, node2, iFileName);
-			}
-
-			else {
-				iCounter += showNodes(con, node2, iFileName, timeStampStr, areacode);
-			}
+                    switch (node2.getNodeName()) {
+                        case "jps:GM_Point":
+                            showGmPoint(con, node2);
+                            break;
+                        case "gml:Point":
+                            showGmlPoint(con, node2, areacode);
+                            break;
+                        case "ksj:ED01":
+                            iCounter++;
+                            showED01(con, node2, iFileName);
+                            break;
+                        case "ksj:BusStop":
+                            iCounter++;
+                            showBusStop(con, node2, iFileName);
+                            break;
+                        default:
+                            iCounter += showNodes(con, node2, iFileName, timeStampStr, areacode);
+                            break;
+                    }
 		}
 		return iCounter;
 	}
diff --git a/src/osm/jp/coverage/fuel/DbFuel.java b/src/osm/jp/coverage/fuel/DbFuel.java
new file mode 100644
index 0000000..bc47ffc
--- /dev/null
+++ b/src/osm/jp/coverage/fuel/DbFuel.java
@@ -0,0 +1,246 @@
+package osm.jp.coverage.fuel;
+
+import java.io.*;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import jp.co.areaweb.tools.database.*;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+import osm.jp.api.Db;
+
+public class DbFuel {
+    public static final String TABLE_NAME = "FUEL"; 
+
+    /** メイン
+     * @param args
+     * @throws IOException
+     * @throws SQLException
+     * @throws ClassNotFoundException
+     * @throws FileNotFoundException
+     * @throws javax.xml.parsers.ParserConfigurationException
+     * @throws org.xml.sax.SAXException */
+    public static void main(String[] args) throws FileNotFoundException, ClassNotFoundException, IOException, SQLException, ParserConfigurationException, SAXException 
+    {
+        // HSQLディレクトリがなければ作る
+        File dbdir = new File("database");
+        if (!dbdir.isDirectory()) {
+            dbdir.mkdir();
+        }
+        Connection con = null;
+        try {
+            // DB.tableを作成
+            con = DatabaseTool.openDb("database");
+            create(con);
+            
+            // 
+            File gmlDir = new File("GML_FUEL");
+            for (File gmlFile : gmlDir.listFiles()) {
+                if (checkGMLfile(gmlFile)) {
+                    int index = "P07-15_".length();
+                    int areacode = Integer.parseInt(gmlFile.getName().substring(index, index+2));
+                    inputFile(con, gmlFile, areacode);
+                }
+            }
+            
+            DbFuel.export(con);
+        }
+        finally {
+            if (con != null) {
+                DatabaseTool.closeDb(con);
+            }
+        }
+    }
+    
+    /**
+     * 数値地図情報のGMLデータファイルを読み取ってローカルベータベースへ記録する
+     * @param con
+     * @param iFile
+     * @param areacode
+     * @throws FileNotFoundException
+     * @throws ClassNotFoundException
+     * @throws SQLException
+     * @throws IOException
+     * @throws ParserConfigurationException 
+     * @throws SAXException 
+     */
+    public static void inputFile (Connection con, File iFile, int areacode) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException {
+        DocumentBuilderFactory factory;
+        DocumentBuilder        builder;
+
+        factory = DocumentBuilderFactory.newInstance();
+        builder = factory.newDocumentBuilder();
+        factory.setIgnoringElementContentWhitespace(true);
+        factory.setIgnoringComments(true);
+        factory.setValidating(true);
+        
+        // Root node --> <ksj:Dataset/>
+        Node root = builder.parse(iFile);
+        NodeList nodes = root.getChildNodes();
+        for (int i=0; i < nodes.getLength(); i++) {
+            Node nodePoint = nodes.item(i);
+            if (nodePoint.getNodeName().equals("ksj:Dataset")) {
+                int iCounter = showNodes(con, nodePoint, areacode);
+                System.out.println("("+ areacode +") データ数["+ iCounter +"]");
+            }
+        }
+
+    }
+    
+    /**
+     *  node : 
+     *      <ksj:Dataset>
+     *          <gml:Point gml:id="n00001">
+     *              <gml:pos>43.03442215 141.47026381</gml:pos>
+     *          </gml:Point>
+     *      </ksj:Dataset>
+     * 
+     * @param con
+     * @param node
+     * @param areacode
+     * @return
+     * @throws IOException
+     * @throws SQLException
+     */
+    public static int showNodes(Connection con, Node node, int areacode) throws IOException, SQLException {
+        int iCounter = 0;
+        
+        // Root node : <ksj:Dataset/>
+        // Child node : <gml:Point gml:id="n00001"><gml:pos>43.03442215 141.47026381</gml:pos></gml:Point>
+        // 
+        NodeList nodes = node.getChildNodes();
+        for (int i=0; i < nodes.getLength(); i++) {
+            Node nodePoint = nodes.item(i);
+            switch (nodePoint.getNodeName()) {
+                case "gml:Point":
+                    iCounter++;
+                    showGmPoint(con, nodePoint, areacode);
+                    break;
+                default:
+                    System.out.println(nodePoint.getNodeName());
+                    break;
+            }
+        }
+        return iCounter;
+    }
+    
+    /**
+     *  node : 
+     *      <gml:Point gml:id="n00001">
+     *          <gml:pos>43.03442215 141.47026381</gml:pos>
+     *      </gml:Point>
+     * 
+     * @param con
+     * @param node
+     * @throws IOException
+     * @throws SQLException 
+     */
+    public static void showGmPoint(Connection con, Node node, int areacode) throws IOException, SQLException {
+        String latStr = "";
+        String lonStr = "";
+        String idStr = "";
+
+        NamedNodeMap attrMap = node.getAttributes();
+        if (null != attrMap ) {
+            for (int j=0; j < attrMap.getLength(); j++) {
+                if (attrMap.item(j).getNodeName().equals("gml:id")) {
+                    idStr = attrMap.item(j).getNodeValue();
+                }
+            }
+        }
+
+        NodeList nodes = node.getChildNodes();
+        for (int i=0; i < nodes.getLength(); i++) {
+            Node node2 = nodes.item(i);
+            if (node2.getNodeName().equals("gml:pos")) {
+                String positionStr = node2.getTextContent();
+                String[] str4Ary = positionStr.split(" ");
+                latStr = str4Ary[0];
+                lonStr = str4Ary[1];
+                break;
+            }
+        }
+        
+        try (PreparedStatement ps = con.prepareStatement("INSERT INTO "+ TABLE_NAME +"(lat,lon,fixed,idref,area) VALUES(?,?,?,?,?)")) {
+            double lat = Double.parseDouble(latStr);
+            double lon = Double.parseDouble(lonStr);
+            ps.setDouble(1, lat);
+            ps.setDouble(2, lon);
+            ps.setInt(3, 0);
+            ps.setString(4, idStr);
+            ps.setInt(5, areacode);
+            System.out.println("INSERT "+ TABLE_NAME +"("+ idStr +", lat="+ lat +", lon="+ lon +", fixed=0, area="+ areacode +")");
+            ps.executeUpdate();
+        }
+    }
+    
+    /**
+     * 数値地図情報のデータファイルかどうかを見極める
+     * @param f
+     * @return
+     */
+    public static boolean checkGMLfile(File f) {
+        if (f.isDirectory()) {
+            return false;
+        }
+        String name = f.getName();
+        if (!name.startsWith("P07")) {
+            return false;
+        }
+        return name.toUpperCase().endsWith(".XML");
+    }
+
+    /**
+     * 'table.FUEL'を新規に作る
+     * 既にテーブルが存在する時には何もしない
+     * @param con
+     * @throws SQLException
+     */
+    public static void create(Connection con) throws SQLException {
+        String createSt;
+
+        // 'table.FUEL'を新規に作る
+        //Db.drop(con, TABLE_NAME);
+        createSt = "CREATE TABLE "+ TABLE_NAME +" (idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, fixed INT, area INT)";
+        Db.updateSQL(con, createSt);
+
+        /*
+        drop(con, "existing_data");
+        createSt = "CREATE TABLE existing_data (idref VARCHAR(12) NOT NULL, name VARCHAR(128), lat DOUBLE, lon DOUBLE, score INT, CONSTRAINT existing_pk PRIMARY KEY(idref, lat, lon));";
+        Db.updateSQL(con, createSt);
+
+        drop(con, "coverage");
+        createSt = "CREATE TABLE coverage (area INT, name VARCHAR(128), denominator BIGINT, lv1 BIGINT, lv2 BIGINT, lv3 BIGINT);";
+        Db.updateSQL(con, createSt);
+        */
+    }
+
+    /**
+     * 'table.FUEL'の内容をCSV形式にして標準出力に出力する
+     * @param con
+     * @throws java.sql.SQLException
+     */
+    public static void export(Connection con) throws SQLException {
+        String header = "idref,lat,lon,fixed";
+        System.out.println("TABLE: "+ TABLE_NAME);
+        System.out.println(header);
+        PreparedStatement ps8 = con.prepareStatement("SELECT idref,lat,lon,fixed,area FROM "+ TABLE_NAME);
+        try (ResultSet rset8 = ps8.executeQuery()) {
+            while (rset8.next()) {
+                String name = rset8.getString(1);
+                Double lat = rset8.getDouble(2);
+                Double lon = rset8.getDouble(3);
+                int fixed = rset8.getInt(4);
+                int area = rset8.getInt(5);
+                System.out.println(name +","+ lat +","+ lon +","+ fixed+","+ area);
+            }
+        }
+    }
+}
\ No newline at end of file