diff --git a/dist/lib/hayashi.jar b/dist/lib/hayashi.jar index 3adbe8a..54090a3 100644 --- a/dist/lib/hayashi.jar +++ b/dist/lib/hayashi.jar Binary files differ diff --git a/src/osm/jp/api/OsmExist.java b/src/osm/jp/api/OsmExist.java index f52b680..dbac962 100644 --- a/src/osm/jp/api/OsmExist.java +++ b/src/osm/jp/api/OsmExist.java @@ -2,6 +2,7 @@ import java.io.*; import java.sql.Connection; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -18,6 +19,49 @@ super(hsqldb, tableName); } + /** + * 'HSQLDB.table.OSM_EXIST'を新規に作る + * 'HSQLDB.table.AREA_NODE'を新規に作る + * 既にテーブルが存在する時にはERROR + * @throws SQLException + */ + @Override + public void create() throws SQLException { + String createSt; + + sql("DROP TABLE IF EXISTS "+ tableName +" CASCADE"); + sql("DROP INDEX IF EXISTS "+ tableName +"_index;"); + sql("DROP TABLE IF EXISTS AREA_NODE CASCADE"); + + // 'table.OSM_EXIST'を新規に作る + createSt = "CREATE TABLE "+ tableName + + " (" + + "idref VARCHAR(12) NOT NULL, " + + "name VARCHAR(128), " + + "lat DOUBLE, " + + "lon DOUBLE, " + + "score INT, " + + "gmlid VARCHAR(12), " + + "area INT, " + + "PRIMARY KEY(idref), " + + "removed BOOLEAN DEFAULT FALSE NOT NULL" + + ");"; + Db.updateSQL(hsqldb, createSt); + createSt = "CREATE INDEX "+ tableName +"_index ON "+ tableName + + " (lat, lon);"; + Db.updateSQL(hsqldb, createSt); + + // 'table.AREA_NODE'を新規に作る + createSt = "CREATE TABLE AREA_NODE " + + "(" + + "idref VARCHAR(12) NOT NULL, " + + "pid VARCHAR(12), " + + "lat DOUBLE, " + + "lon DOUBLE" + + ");"; + Db.updateSQL(hsqldb, createSt); + } + /* Test data: ノード: エネオス (2015835273) 場所: 35.4367770, 139.403571TABLE_NAME0 diff --git a/src/osm/jp/api/Osmdb.java b/src/osm/jp/api/Osmdb.java index d07cc49..ad965c1 100644 --- a/src/osm/jp/api/Osmdb.java +++ b/src/osm/jp/api/Osmdb.java @@ -22,62 +22,19 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import osm.jp.coverage.busstop.DbBusstop; public abstract class Osmdb { - public String TABLE_NAME = "EXIST_osm"; - public String tableName = TABLE_NAME; - public Connection hsqldb = null; // hsqldb DatabaseTool.openDb("database"); + public String tableName; + public Connection hsqldb = null; // hsqldb DatabaseTool.openDb("database"); + public Osmdb(Connection hsqldb, String tableName) { this.hsqldb = hsqldb; - if (tableName != null) { - this.tableName = tableName; - } + this.tableName = tableName; } - - /** - * 'HSQLDB.table.OSM_EXIST'を新規に作る - * 'HSQLDB.table.AREA_NODE'を新規に作る - * 既にテーブルが存在する時にはERROR - * @throws SQLException - */ - public void create() throws SQLException { - String createSt; + + abstract public void create() throws SQLException; - sql("DROP TABLE IF EXISTS "+ tableName +" CASCADE"); - sql("DROP INDEX IF EXISTS "+ tableName +"_index;"); - sql("DROP TABLE IF EXISTS AREA_NODE CASCADE"); - - // 'table.OSM_EXIST'を新規に作る - createSt = "CREATE TABLE "+ tableName - + " (" - + "idref VARCHAR(12) NOT NULL, " - + "name VARCHAR(128), " - + "lat DOUBLE, " - + "lon DOUBLE, " - + "score INT, " - + "gmlid VARCHAR(12), " - + "area INT, " - + "PRIMARY KEY(idref), " - + "removed BOOLEAN DEFAULT FALSE NOT NULL" - + ");"; - Db.updateSQL(hsqldb, createSt); - createSt = "CREATE INDEX "+ tableName +"_index ON "+ tableName - + " (lat, lon);"; - Db.updateSQL(hsqldb, createSt); - - // 'table.AREA_NODE'を新規に作る - createSt = "CREATE TABLE AREA_NODE " - + "(" - + "idref VARCHAR(12) NOT NULL, " - + "pid VARCHAR(12), " - + "lat DOUBLE, " - + "lon DOUBLE" - + ");"; - Db.updateSQL(hsqldb, createSt); - } - void sql(String sql) throws SQLException { System.out.println(sql); try (PreparedStatement ps = hsqldb.prepareStatement(sql)) { @@ -610,7 +567,7 @@ */ public void outputRemoved(File removedFile) throws SQLException, IOException { String whereStr = "WHERE (removed=?)"; - String fromStr = "FROM "+ DbBusstop.TABLE_NAME; + String fromStr = "FROM "+ tableName; String sortStr = "ORDER BY area,gmlid"; String sql = String.format("SELECT * %s %s %s", fromStr, whereStr, sortStr); diff --git a/src/osm/jp/coverage/busstop/DbBusstop.java b/src/osm/jp/coverage/busstop/DbBusstop.java index 8cc5da9..1455baa 100644 --- a/src/osm/jp/coverage/busstop/DbBusstop.java +++ b/src/osm/jp/coverage/busstop/DbBusstop.java @@ -20,7 +20,7 @@ public class DbBusstop extends Osmdb { @SuppressWarnings("FieldNameHidesFieldInSuperclass") - public static final String TABLE_NAME = "busstop"; + public static String TABLE_NAME = "busstop"; public static final String CLASS_NAME = "DbBusstop"; /** diff --git a/src/osm/jp/coverage/busstop/DbExistBusstop.java b/src/osm/jp/coverage/busstop/DbExistBusstop.java index 1921e81..6dcd71a 100644 --- a/src/osm/jp/coverage/busstop/DbExistBusstop.java +++ b/src/osm/jp/coverage/busstop/DbExistBusstop.java @@ -13,9 +13,9 @@ import java.sql.SQLException; import jp.co.areaweb.tools.database.*; -import osm.jp.api.Osmdb; +import osm.jp.api.OsmExist; -public class DbExistBusstop extends Osmdb { +public class DbExistBusstop extends OsmExist { @SuppressWarnings("FieldNameHidesFieldInSuperclass") public static final String TABLE_NAME = "BUSSTOP_EXIST"; public static final String CLASS_NAME = "DbExistFuel"; @@ -101,7 +101,7 @@ public DbExistBusstop(Connection hsqldb) { super(hsqldb, DbExistBusstop.TABLE_NAME); } - + /** * *
{@code diff --git a/src/osm/jp/coverage/fuel/DbExistFuel.java b/src/osm/jp/coverage/fuel/DbExistFuel.java index 7179c84..aaa3520 100644 --- a/src/osm/jp/coverage/fuel/DbExistFuel.java +++ b/src/osm/jp/coverage/fuel/DbExistFuel.java @@ -4,9 +4,9 @@ import java.io.FileNotFoundException; import java.sql.Connection; import jp.co.areaweb.tools.database.*; -import osm.jp.api.Osmdb; +import osm.jp.api.OsmExist; -public class DbExistFuel extends Osmdb { +public class DbExistFuel extends OsmExist { @SuppressWarnings("FieldNameHidesFieldInSuperclass") public static final String TABLE_NAME = "FUEL_EXIST"; public static final String CLASS_NAME = "DbExistFuel"; diff --git a/src/osm/jp/coverage/fuel/DbFuel.java b/src/osm/jp/coverage/fuel/DbFuel.java index 752388c..aee0f42 100644 --- a/src/osm/jp/coverage/fuel/DbFuel.java +++ b/src/osm/jp/coverage/fuel/DbFuel.java @@ -19,7 +19,7 @@ public class DbFuel extends Osmdb { @SuppressWarnings("FieldNameHidesFieldInSuperclass") - public static final String TABLE_NAME = "FUEL"; + public static String TABLE_NAME = "FUEL"; public static final String CLASS_NAME = "DbFuel"; /** メイン diff --git a/src/osm/jp/coverage/fuel/OsmExistFuel.java b/src/osm/jp/coverage/fuel/OsmExistFuel.java index 63dfbc9..c0aa614 100644 --- a/src/osm/jp/coverage/fuel/OsmExistFuel.java +++ b/src/osm/jp/coverage/fuel/OsmExistFuel.java @@ -51,5 +51,4 @@ public OsmExistFuel(Connection hsqldb) { super(hsqldb, DbExistFuel.TABLE_NAME); } - } \ No newline at end of file diff --git a/src/osm/jp/coverage/police/DbExistPolice.java b/src/osm/jp/coverage/police/DbExistPolice.java index dbe89e8..c7c25d0 100644 --- a/src/osm/jp/coverage/police/DbExistPolice.java +++ b/src/osm/jp/coverage/police/DbExistPolice.java @@ -1,10 +1,11 @@ package osm.jp.coverage.police; import java.sql.Connection; +import java.sql.SQLException; import jp.co.areaweb.tools.database.*; -import osm.jp.api.Osmdb; +import osm.jp.api.OsmExist; -public class DbExistPolice extends Osmdb { +public class DbExistPolice extends OsmExist { public static final String EXIST_TABLE_NAME = "POLICE_EXIST"; /** メイン @@ -37,7 +38,7 @@ public DbExistPolice(Connection hsqldb) { super(hsqldb, EXIST_TABLE_NAME); } - + /* Test data: diff --git a/src/osm/jp/coverage/postoffice/DbExistPostoffice.java b/src/osm/jp/coverage/postoffice/DbExistPostoffice.java index 97fe203..945ab2b 100644 --- a/src/osm/jp/coverage/postoffice/DbExistPostoffice.java +++ b/src/osm/jp/coverage/postoffice/DbExistPostoffice.java @@ -1,10 +1,11 @@ package osm.jp.coverage.postoffice; import java.sql.Connection; +import java.sql.SQLException; import jp.co.areaweb.tools.database.*; -import osm.jp.api.Osmdb; +import osm.jp.api.OsmExist; -public class DbExistPostoffice extends Osmdb { +public class DbExistPostoffice extends OsmExist { public static final String EXIST_TABLE_NAME = "POSTOFFICE_EXIST"; /** メイン diff --git a/test/osm/jp/coverage/CoverageTest.java b/test/osm/jp/coverage/CoverageTest.java new file mode 100644 index 0000000..ce427a3 --- /dev/null +++ b/test/osm/jp/coverage/CoverageTest.java @@ -0,0 +1,129 @@ +package osm.jp.coverage; + +import hayashi.tools.files.DeleteDir; +import hayashi.yuu.tools.json.JsonTool; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import javax.json.JsonArray; +import javax.json.JsonNumber; +import javax.json.JsonObject; +import javax.json.JsonValue; +import javax.json.JsonValue.ValueType; +import jp.co.areaweb.tools.csv.CsvFile; +import jp.co.areaweb.tools.csv.CsvRecord; +import static org.hamcrest.CoreMatchers.is; +import org.junit.AfterClass; +import org.junit.Test; +import static org.junit.Assert.*; +import org.junit.BeforeClass; +import tools.Compless; +import tools.Copy; + +public abstract class CoverageTest { + public static String gmlFolderName = "GML_"; + + @BeforeClass + public static void setUpClass() throws Exception { + + File gmlDir = new File(gmlFolderName); + if (!gmlDir.exists()) { + File tgzFile = new File("data", gmlFolderName +".tar.gz"); + Compless.uncomplessTarGz(new File("."), tgzFile); + } + Copy.copyFile(new File("data", "pbfDate.json"), new File(gmlDir, "pbfDate.json")); + } + + @AfterClass + public static void tearDownClass() throws Exception { + DeleteDir.delete(new File(gmlFolderName)); + } + + @Test + @SuppressWarnings("UseSpecificCatch") + public static void testCoverage_main() { + File outDir = new File(gmlFolderName); + + File out1 = new File(outDir, "coverage.csv"); + assertNotNull(out1); + assertTrue(out1.exists()); + assertTrue(out1.isFile()); + try { + CsvFile csv = new CsvFile(out1); + csv.setCharsetName("utf-8"); + csv.load(); + assertThat(csv.size(), is(49)); + int num = -1; + for (CsvRecord line : csv) { + if (num == -1) { + assertThat(line.get(0), is("コード")); + assertThat(line.get(1), is("都道府県")); + assertThat(line.get(2), is("母数")); + assertThat(line.get(3), is("入力数")); + assertThat(line.get(4), is("率(%)")); + } + else { + assertThat(line.get(0), is(String.valueOf(num))); + String vStr = line.get(4); + double v = Double.valueOf(vStr); + assertTrue(v > 0.0D); + assertTrue(v <= 100.0D); + } + num++; + } + } + catch (Exception e) { + fail(e.toString()); + } + + File out2 = new File(outDir, "coverage.json"); + assertNotNull(out2); + assertTrue(out2.exists()); + assertTrue(out2.isFile()); + try { + LineNumberReader reader = new LineNumberReader( + new InputStreamReader(new FileInputStream(out2), "utf-8") + ); + String content = ""; + String str; + while ((str = reader.readLine()) != null) { + content += str; + } + JsonObject json = JsonTool.parse(content); + + String vstr = json.getString("timestamp"); + assertNotNull(vstr); + assertThat(vstr.length() > 0, is(true)); + + vstr = json.getString("sourcedata"); + assertNotNull(vstr); + //assertThat(vstr, is("国土数値情報 バス停留所データ 平成22年")); + + JsonArray arry = json.getJsonArray("coverage"); + assertNotNull(arry); + assertThat(arry.size(), is(48)); + int i = 0; + for (JsonValue v : arry) { + assertThat(v.getValueType(), is(ValueType.OBJECT)); + JsonObject obj = (JsonObject)v; + + int code = obj.getInt("code"); + assertThat(code, is(i)); + JsonNumber par = obj.getJsonNumber("par"); + assertNotNull(par); + + double pard = par.doubleValue(); + assertTrue(pard > 0.0D); + assertTrue(pard <= 100.0D); + i++; + } + + } + catch (Exception e) { + fail(e.toString()); + } + + } + +} diff --git a/test/osm/jp/coverage/DbTest.java b/test/osm/jp/coverage/DbTest.java index bda03aa..7e489be 100644 --- a/test/osm/jp/coverage/DbTest.java +++ b/test/osm/jp/coverage/DbTest.java @@ -1,78 +1,39 @@ package osm.jp.coverage; +import hayashi.tools.files.DeleteDir; import java.io.*; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import javax.xml.parsers.ParserConfigurationException; - import jp.co.areaweb.tools.database.*; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.BeforeClass; -import org.xml.sax.SAXException; -import osm.jp.api.HttpPOST; +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; +import static osm.jp.coverage.fuel.DbFuelTest.gmlFolderName; +import tools.Compless; -public class DbTest { +@FixMethodOrder (MethodSorters.NAME_ASCENDING) +public abstract class DbTest { public static final String TABLE_NAME = "test"; - - File inputFile; - String filter = ""; - int iCounter = 0; - String urlStr = ""; - Connection con; - String timeStampStr = null; - File dir = null; - - /** メイン - * 動作条件; HSQLDBのフォルダを削除した状態で実行すること。 - * @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()) { - throw new FileNotFoundException("Directory 'database' is not found."); - } - - Connection conHsql = null; - try { - conHsql = DatabaseTool.openDb("database"); - HttpPOST hsql = new HttpPOST(conHsql, null); - hsql.sql("DROP TABLE IF EXISTS "+ TABLE_NAME +" CASCADE"); - //HttpPOST.sql(conHsql, "DROP INDEX "+ TABLE_NAME +"_index;"); - create(conHsql); - try (PreparedStatement ps = conHsql.prepareStatement("DELETE FROM "+ TABLE_NAME)) { - ps.executeUpdate(); - } - - // 対象のファイルが「数値地図情報のGMLデータファイル」の時のみ処理を行う。 - importTest(conHsql, 14); - - DbTest.export(conHsql); - } - finally { - if (conHsql != null) { - DatabaseTool.closeDb(conHsql); - } - } - } + public static String gmlFolderName = "GML_"; @BeforeClass public static void setUpClass() throws Exception { + File gmlDir = new File(gmlFolderName); + if (!gmlDir.exists()) { + File tgzFile = new File("data", gmlFolderName + ".tar.gz"); + Compless.uncomplessTarGz(new File("."), tgzFile); + } } @AfterClass public static void tearDownClass() throws Exception { + DeleteDir.delete(new File(gmlFolderName)); } @Before @@ -82,52 +43,6 @@ @After public void tearDown() throws Exception { } - - - /** - * 数値地図情報のGMLデータファイルを読み取ってローカルベータベースへ記録する - * @param conHsql - * @param areacode - * @throws FileNotFoundException - * @throws ClassNotFoundException - * @throws SQLException - * @throws IOException - * @throws ParserConfigurationException - * @throws SAXException - */ - public static void importTest (Connection conHsql, int areacode) throws FileNotFoundException, ClassNotFoundException, SQLException, IOException, ParserConfigurationException, SAXException { - int iCounter = 0; - iCounter += showNodes(conHsql, areacode); - System.out.println("("+ areacode +") Node数["+ iCounter +"]"); - } - - static final double CENTER_LAT = 35.4342443D; - static final double CENTER_LON = 139.4092180D; - static final int LOOP = 50; - static final double SIDE = 0.015D; - - /** - * ノード: 綾西 (368434484) 35.4342443, 139.4092180 - * - * @param con - * @param areacode - * @return - * @throws IOException - * @throws SQLException - */ - public static int showNodes(Connection con, int areacode) throws IOException, SQLException { - int iCounter = 0; - double lon = CENTER_LON - SIDE; - for (int x = 0; x <= LOOP; x++) { - double lat = CENTER_LAT - SIDE; - for (int y = 0; y <= LOOP; y++) { - showGmlPoint(con, lat, lon, areacode, iCounter++); - lat += SIDE * 2 / LOOP; - } - lon += SIDE * 2 / LOOP; - } - return iCounter; - } /** * @@ -149,25 +64,6 @@ } } - - /** - * 'table.BUSSTOP'を新規に作る - * 既にテーブルが存在する時には何もしない - * @param conHsql - * @throws SQLException - */ - public static void create(Connection conHsql) throws SQLException { - String createSt; - HttpPOST hsql = new HttpPOST(conHsql, null); - - // 'table.TEST'を新規に作る - createSt = "CREATE TABLE "+ TABLE_NAME +" (gmlid VARCHAR(12) NOT NULL, name VARCHAR(128), lat DOUBLE, lon DOUBLE, fixed INT, fixed1 INT, area INT, ifile VARCHAR(128), up INT, CONSTRAINT "+ TABLE_NAME +"_pk PRIMARY KEY(gmlid, area));"; - hsql.sql(createSt); - - createSt = "CREATE INDEX "+ TABLE_NAME +"_index ON "+ TABLE_NAME +" (lat,lon);"; - hsql.sql(createSt); - } - /** * 'table.BUSSTOP'の内容をCSV形式にして標準出力に出力する * @param con @@ -317,7 +213,19 @@ if (Double.compare(base, down) < 0) { ret = false; } - System.out.println("d1: "+ d1 +" : "+ str +" --> "+ (ret ? "IN" : "out")); + //System.out.println("d1: "+ d1 +" : "+ str +" --> "+ (ret ? "IN" : "out")); return ret; } + + public static int getFileLineCount(File file) throws FileNotFoundException, IOException { + LineNumberReader reader = new LineNumberReader( + new InputStreamReader(new FileInputStream(file)) + ); + int cnt = 0; + while (reader.readLine() != null) { + cnt++; + } + return cnt; + } + } \ No newline at end of file diff --git a/test/osm/jp/coverage/PoiTest.java b/test/osm/jp/coverage/PoiTest.java index e21aa7f..58fa1ba 100644 --- a/test/osm/jp/coverage/PoiTest.java +++ b/test/osm/jp/coverage/PoiTest.java @@ -13,7 +13,7 @@ import static org.junit.Assert.fail; import osm.jp.coverage.postoffice.PostofficeTest; -public class PoiTest { +public abstract class PoiTest { /** * 許容できる誤差は 0.00000009D 固定 diff --git a/test/osm/jp/coverage/busstop/CoverageTest.java b/test/osm/jp/coverage/busstop/CoverageTest.java index b9aec58..ebadfb2 100644 --- a/test/osm/jp/coverage/busstop/CoverageTest.java +++ b/test/osm/jp/coverage/busstop/CoverageTest.java @@ -1,51 +1,25 @@ package osm.jp.coverage.busstop; -import hayashi.tools.files.DeleteDir; -import hayashi.yuu.tools.json.JsonTool; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; import java.sql.SQLException; -import javax.json.JsonArray; -import javax.json.JsonNumber; -import javax.json.JsonObject; -import javax.json.JsonValue; -import javax.json.JsonValue.ValueType; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; -import jp.co.areaweb.tools.csv.CsvFile; -import jp.co.areaweb.tools.csv.CsvRecord; -import static org.hamcrest.CoreMatchers.is; -import org.junit.AfterClass; import org.junit.Test; import static org.junit.Assert.*; import org.junit.BeforeClass; import org.xml.sax.SAXException; -import tools.Compless; -import tools.Copy; -public class CoverageTest { +public class CoverageTest extends osm.jp.coverage.CoverageTest { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_BUSSTOP"; @BeforeClass public static void setUpClass() throws Exception { - String gmlFolderName = "GML_BUSSTOP"; - File gmlDir = new File(gmlFolderName); - if (!gmlDir.exists()) { - File tgzFile = new File("data", "GML_BUSSTOP.tar.gz"); - Compless.uncomplessTarGz(new File("."), tgzFile); - } - Copy.copyFile(new File("data", "pbfDate.json"), new File(gmlDir, "pbfDate.json")); + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); } - @AfterClass - public static void tearDownClass() throws Exception { - DeleteDir.delete(new File("GML_BUSSTOP")); - } - @Test - @SuppressWarnings("UseSpecificCatch") public void testBusstopCoverage_main() { System.out.println("testBusstopCoverage_main"); try { @@ -56,87 +30,7 @@ fail(e.toString()); } - File outDir = new File("GML_BUSSTOP"); - - File out1 = new File(outDir, "coverage.busstop.csv"); - assertNotNull(out1); - assertTrue(out1.exists()); - assertTrue(out1.isFile()); - try { - CsvFile csv = new CsvFile(out1); - csv.setCharsetName("utf-8"); - csv.load(); - assertThat(csv.size(), is(49)); - int num = -1; - for (CsvRecord line : csv) { - if (num == -1) { - assertThat(line.get(0), is("コード")); - assertThat(line.get(1), is("都道府県")); - assertThat(line.get(2), is("母数")); - assertThat(line.get(3), is("入力数")); - assertThat(line.get(4), is("率(%)")); - } - else { - assertThat(line.get(0), is(String.valueOf(num))); - String vStr = line.get(4); - double v = Double.valueOf(vStr); - assertTrue(v > 0.0D); - assertTrue(v <= 100.0D); - } - num++; - } - } - catch (Exception e) { - fail(e.toString()); - } - - File out2 = new File(outDir, "coverage.busstop.json"); - assertNotNull(out2); - assertTrue(out2.exists()); - assertTrue(out2.isFile()); - try { - LineNumberReader reader = new LineNumberReader( - new InputStreamReader(new FileInputStream(out2), "utf-8") - ); - String content = ""; - String str; - while ((str = reader.readLine()) != null) { - content += str; - } - JsonObject json = JsonTool.parse(content); - - String vstr = json.getString("timestamp"); - assertNotNull(vstr); - assertThat(vstr.length() > 0, is(true)); - - vstr = json.getString("sourcedata"); - assertNotNull(vstr); - assertThat(vstr, is("国土数値情報 バス停留所データ 平成22年")); - - JsonArray arry = json.getJsonArray("coverage"); - assertNotNull(arry); - assertThat(arry.size(), is(48)); - int i = 0; - for (JsonValue v : arry) { - assertThat(v.getValueType(), is(ValueType.OBJECT)); - JsonObject obj = (JsonObject)v; - - int code = obj.getInt("code"); - assertThat(code, is(i)); - JsonNumber par = obj.getJsonNumber("par"); - assertNotNull(par); - - double pard = par.doubleValue(); - assertTrue(pard > 0.0D); - assertTrue(pard <= 100.0D); - i++; - } - - } - catch (Exception e) { - fail(e.toString()); - } - + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/busstop/DbBusstopTest.java b/test/osm/jp/coverage/busstop/DbBusstopTest.java index 28ab80c..c34afcc 100644 --- a/test/osm/jp/coverage/busstop/DbBusstopTest.java +++ b/test/osm/jp/coverage/busstop/DbBusstopTest.java @@ -2,11 +2,6 @@ import hayashi.tools.files.DeleteDir; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.LineNumberReader; import java.sql.Connection; import jp.co.areaweb.tools.database.DatabaseTool; import static org.hamcrest.CoreMatchers.is; @@ -18,13 +13,17 @@ import org.junit.Test; import org.junit.runners.MethodSorters; import osm.jp.coverage.DbTest; -import tools.Compless; import tools.Copy; @FixMethodOrder (MethodSorters.NAME_ASCENDING) -public class DbBusstopTest { +public class DbBusstopTest extends DbTest { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + public static String gmlFolderName = "GML_BUSSTOP"; + String databaseName = "database"; String tableName = "busstop"; + static final int REMOVED_COUNT = 12; + static final String REMOVED_FILE_NAME = "P11-10.removed.json.txt"; /** * Folder[GML_BUSSTOP]がなければ作る @@ -34,18 +33,23 @@ */ @BeforeClass public static void setUpClass() throws Exception { - String gmlFolderName = "GML_BUSSTOP"; - File gmlDir = new File(gmlFolderName); - if (!gmlDir.exists()) { - File tgzFile = new File("data", "GML_BUSSTOP.tar.gz"); - Compless.uncomplessTarGz(new File("."), tgzFile); - } + DbTest.gmlFolderName = gmlFolderName; + DbTest.setUpClass(); + + Copy.copyFile( + new File("data", REMOVED_FILE_NAME), + new File(gmlFolderName, REMOVED_FILE_NAME) + ); } @AfterClass public static void tearDownClass() throws Exception { - DeleteDir.delete(new File("GML_BUSSTOP")); - DeleteDir.delete(new File("P11-10.removed.json.txt")); + DbTest.gmlFolderName = gmlFolderName; + DbTest.tearDownClass(); + File file = new File(REMOVED_FILE_NAME); + if (file.exists()) { + DeleteDir.delete(file); + } } /** @@ -134,7 +138,7 @@ @Test public void t25_main_import() throws Exception { try { - String[] args = new String[]{"-IMPORT", "GML_BUSSTOP"}; + String[] args = new String[]{"-IMPORT", gmlFolderName}; DbBusstop.main(args); } catch(Exception e) { @@ -162,13 +166,13 @@ */ @Test public void t30_main_removed() throws Exception { - File file = new File("GML_BUSSTOP", "P11-10.removed.json.txt"); + File file = new File(gmlFolderName, REMOVED_FILE_NAME); if (!file.exists()) { - Copy.copyFile(new File("data","P11-10.removed.json.txt"), file); // Apache common-io + Copy.copyFile(new File("data",REMOVED_FILE_NAME), file); // Apache common-io } try { - String[] args = new String[]{"-REMOVED", "GML_BUSSTOP/P11-10.removed.json.txt"}; + String[] args = new String[]{"-REMOVED", gmlFolderName +"/"+ REMOVED_FILE_NAME}; DbBusstop.main(args); } catch(Exception e) { @@ -179,7 +183,7 @@ try (Connection hsqldb = DatabaseTool.openDb(databaseName)) { tableCount = DbTest.getRecordCount(hsqldb, tableName, "REMOVED=TRUE"); System.out.println("'FUEL REMOVED=TRUE' table count = " + tableCount); - assertThat(tableCount, is(12)); + assertThat(tableCount, is(REMOVED_COUNT)); } catch (Exception e) { fail(e.toString()); @@ -212,7 +216,7 @@ } File file = new File(fileName); - assertThat(getFileLineCount(file), is(12)); + assertThat(getFileLineCount(file), is(REMOVED_COUNT)); } /** @@ -222,28 +226,18 @@ */ @Test public void t41_main_output() throws Exception { - File file = new File("GML_BUSSTOP","P11-10.removed.json.txt"); + File file = new File("GML_BUSSTOP",REMOVED_FILE_NAME); assertThat(file.exists(), is(true)); try (Connection hsqldb = DatabaseTool.openDb(databaseName)) { int cnt1 = DbTest.getRecordCount(hsqldb, tableName, "REMOVED=TRUE"); System.out.println("'BUSSTOP REMOVED=TRUE' table count = " + cnt1); - assertThat(cnt1, is(12)); + assertThat(cnt1, is(REMOVED_COUNT)); } catch (Exception e) { fail(e.toString()); } - assertThat(getFileLineCount(file), is(12)); + assertThat(getFileLineCount(file), is(REMOVED_COUNT)); } - int getFileLineCount(File file) throws FileNotFoundException, IOException { - LineNumberReader reader = new LineNumberReader( - new InputStreamReader(new FileInputStream(file)) - ); - int cnt = 0; - while (reader.readLine() != null) { - cnt++; - } - return cnt; - } } diff --git a/test/osm/jp/coverage/fuel/CoverageTest.java b/test/osm/jp/coverage/fuel/CoverageTest.java index 8284b7a..a99805d 100644 --- a/test/osm/jp/coverage/fuel/CoverageTest.java +++ b/test/osm/jp/coverage/fuel/CoverageTest.java @@ -1,25 +1,32 @@ package osm.jp.coverage.fuel; -import java.io.IOException; -import java.sql.SQLException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; -import org.xml.sax.SAXException; +import org.junit.BeforeClass; public class CoverageTest { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_FUEL"; + + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } @Test - public void testMain() throws Exception { + @SuppressWarnings("UseSpecificCatch") + public void testFuelCoverage_main() throws Exception { try { - System.out.println("main"); - String[] args = new String[0]; + System.out.println("testFuelCoverage_main"); + String[] args = new String[]{}; Coverage.main(args); } - catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { + catch (Exception e) { fail("The test case is a prototype."); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/fuel/DbExistTest.java b/test/osm/jp/coverage/fuel/DbExistTest.java index f69b13e..7dca265 100644 --- a/test/osm/jp/coverage/fuel/DbExistTest.java +++ b/test/osm/jp/coverage/fuel/DbExistTest.java @@ -18,14 +18,6 @@ @FixMethodOrder (MethodSorters.NAME_ASCENDING) public class DbExistTest { - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - String databaseName = "database"; String tableName = "FUEL_EXIST"; diff --git a/test/osm/jp/coverage/fuel/DbFuelTest.java b/test/osm/jp/coverage/fuel/DbFuelTest.java index 13cde83..0f043a1 100644 --- a/test/osm/jp/coverage/fuel/DbFuelTest.java +++ b/test/osm/jp/coverage/fuel/DbFuelTest.java @@ -1,42 +1,52 @@ package osm.jp.coverage.fuel; +import hayashi.tools.files.DeleteDir; +import java.io.File; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jp.co.areaweb.tools.database.DatabaseTool; import static org.hamcrest.CoreMatchers.is; -import org.junit.After; import org.junit.AfterClass; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; import osm.jp.coverage.DbTest; +import tools.Copy; @FixMethodOrder (MethodSorters.NAME_ASCENDING) -public class DbFuelTest { +public class DbFuelTest extends DbTest { @BeforeClass public static void setUpClass() throws Exception { + DbTest.gmlFolderName = gmlFolderName; + DbTest.setUpClass(); + Copy.copyFile( + new File("data", REMOVED_FILE_NAME), + new File(gmlFolderName, REMOVED_FILE_NAME) + ); } @AfterClass public static void tearDownClass() throws Exception { + DbTest.gmlFolderName = gmlFolderName; + DbTest.tearDownClass(); + File file = new File(REMOVED_FILE_NAME); + if (file.exists()) { + DeleteDir.delete(file); + } } - @Before - public void setUp() throws Exception { - } - - @After - public void tearDown() throws Exception { - } - + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + public static String gmlFolderName = "GML_FUEL"; String databaseName = "database"; String tableName = "FUEL"; + static final int REMOVED_COUNT = 46; + static final String REMOVED_FILE_NAME = "P07-15.removed.json.txt"; /** * コマンド引数チェック @@ -124,7 +134,7 @@ @Test public void t25_main_import() throws Exception { try { - String[] args = new String[]{"-IMPORT", "GML_FUEL"}; + String[] args = new String[]{"-IMPORT", gmlFolderName}; DbFuel.main(args); } catch(Exception e) { @@ -152,8 +162,13 @@ */ @Test public void t30_main_removed() throws Exception { + File file = new File(gmlFolderName, REMOVED_FILE_NAME); + if (!file.exists()) { + Copy.copyFile(new File("data", REMOVED_FILE_NAME), file); // Apache common-io + } + try { - String[] args = new String[]{"-REMOVED", "GML_FUEL/P07-15.removed.json.txt"}; + String[] args = new String[]{"-REMOVED", gmlFolderName +"/" + REMOVED_FILE_NAME}; DbFuel.main(args); } catch(Exception e) { @@ -163,7 +178,7 @@ try (Connection hsqldb = DatabaseTool.openDb(databaseName)) { int cnt = DbTest.getRecordCount(hsqldb, tableName, "REMOVED=TRUE"); System.out.println("'FUEL REMOVED=TRUE' table count = " + cnt); - assertThat(cnt > 10, is(true)); + assertThat(cnt, is(REMOVED_COUNT)); } catch (Exception e) { fail(e.toString()); @@ -178,7 +193,7 @@ @Test public void t40_main_output() throws Exception { try { - String[] args = new String[]{"-OUTPUT", "GML_FUEL/P07-15.removed.txt"}; + String[] args = new String[]{"-OUTPUT", gmlFolderName +"/"+ REMOVED_FILE_NAME}; DbFuel.main(args); } catch(Exception e) { @@ -188,18 +203,33 @@ try (Connection hsqldb = DatabaseTool.openDb(databaseName)) { int cnt = DbTest.getRecordCount(hsqldb, tableName, "REMOVED=TRUE"); System.out.println("'FUEL REMOVED=TRUE' table count = " + cnt); - assertThat(cnt > 10, is(true)); + assertThat(cnt, is(REMOVED_COUNT)); // 35.5955359, 139.5096330 // node: "removed:amenity=fuel" (5338111023) https://www.openstreetmap.org/node/5338111023 // ノード: removed (5338111023) 場所: 35.4305614, 139.3662339 - PreparedStatement ps1 = hsqldb.prepareStatement("SELECT * FROM " + tableName); + PreparedStatement ps1 = hsqldb.prepareStatement( + String.format("SELECT * FROM %s", tableName) + ); try (ResultSet rset1 = ps1.executeQuery()) { while (rset1.next()) { if (DbTest.checkRenge(rset1, "35.5955359", "139.5096330", 0.001D)) { String gmlid = rset1.getString("gmlid"); + System.out.print("\t"); + assertNotNull(gmlid); + System.out.print(gmlid); + String idref = rset1.getString("idref"); - boolean rmd = rset1.getBoolean("removed"); + assertNotNull(idref); + System.out.print("\t"); + System.out.print(idref); + //assertThat(rset1.getString("idref"), is("5338111023")); + + boolean removed = rset1.getBoolean("removed"); + System.out.print("\t"); + System.out.print(removed); + assertThat(removed, is(true)); + System.out.println(); } } @@ -208,6 +238,7 @@ catch (Exception e) { fail(e.toString()); } + assertThat(getFileLineCount(new File(gmlFolderName, REMOVED_FILE_NAME)), is(REMOVED_COUNT)); } /** diff --git a/test/osm/jp/coverage/fuel/FuelTest.java b/test/osm/jp/coverage/fuel/FuelTest.java index 311e110..0e33186 100644 --- a/test/osm/jp/coverage/fuel/FuelTest.java +++ b/test/osm/jp/coverage/fuel/FuelTest.java @@ -14,7 +14,7 @@ import osm.jp.coverage.PoiTest; @FixMethodOrder (MethodSorters.NAME_ASCENDING) -public class FuelTest extends PoiTest{ +public class FuelTest extends PoiTest { @Before public void setUp() throws Exception { } @@ -91,7 +91,6 @@ } } catch(Exception e){ - e.printStackTrace(); fail(e.toString()); } finally { DatabaseTool.closeDb(hsqldb); diff --git a/test/osm/jp/coverage/police/Coverage2Test.java b/test/osm/jp/coverage/police/Coverage2Test.java index f3694a4..abf1cd7 100644 --- a/test/osm/jp/coverage/police/Coverage2Test.java +++ b/test/osm/jp/coverage/police/Coverage2Test.java @@ -6,14 +6,19 @@ import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.BeforeClass; import org.xml.sax.SAXException; -/** - * - * @author yuu - */ public class Coverage2Test { - + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_POLICE"; + + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } + @Test public void testMain() { System.out.println("Coverage2Test"); @@ -24,6 +29,8 @@ catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { fail("The test case is a prototype."); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/police/Coverage4Test.java b/test/osm/jp/coverage/police/Coverage4Test.java index 6013127..e1392b5 100644 --- a/test/osm/jp/coverage/police/Coverage4Test.java +++ b/test/osm/jp/coverage/police/Coverage4Test.java @@ -6,13 +6,18 @@ import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.BeforeClass; import org.xml.sax.SAXException; -/** - * - * @author yuu - */ public class Coverage4Test { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_POLICE"; + + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } @Test public void testMain() { @@ -24,6 +29,8 @@ catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { fail("The test case is a prototype."); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/police/Coverage5Test.java b/test/osm/jp/coverage/police/Coverage5Test.java index a829520..c998e8d 100644 --- a/test/osm/jp/coverage/police/Coverage5Test.java +++ b/test/osm/jp/coverage/police/Coverage5Test.java @@ -6,13 +6,18 @@ import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.BeforeClass; import org.xml.sax.SAXException; -/** - * - * @author yuu - */ public class Coverage5Test { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_POLICE"; + + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } @Test public void testMain() { @@ -24,6 +29,8 @@ catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { fail("The test case is a prototype."); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/police/Coverage6Test.java b/test/osm/jp/coverage/police/Coverage6Test.java index b2f9deb..1d56fb6 100644 --- a/test/osm/jp/coverage/police/Coverage6Test.java +++ b/test/osm/jp/coverage/police/Coverage6Test.java @@ -6,6 +6,7 @@ import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.BeforeClass; import org.xml.sax.SAXException; /** @@ -13,6 +14,14 @@ * @author yuu */ public class Coverage6Test { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_POLICE"; + + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } @Test public void testMain() { @@ -24,6 +33,8 @@ catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { fail("The test case is a prototype."); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } } diff --git a/test/osm/jp/coverage/police/DbPoliceTest.java b/test/osm/jp/coverage/police/DbPoliceTest.java index fb02c8a..40cb663 100644 --- a/test/osm/jp/coverage/police/DbPoliceTest.java +++ b/test/osm/jp/coverage/police/DbPoliceTest.java @@ -8,13 +8,11 @@ import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; -import javax.xml.parsers.ParserConfigurationException; import jp.co.areaweb.tools.database.DatabaseTool; import static org.hamcrest.CoreMatchers.is; import org.junit.*; import static org.junit.Assert.*; import org.junit.runners.MethodSorters; -import org.xml.sax.SAXException; /** * @@ -36,8 +34,7 @@ String[] args = new String[0]; DbPolice.main(args); } - catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | SAXException ex) { - ex.printStackTrace(); + catch (Exception ex) { fail(ex.toString()); } diff --git a/test/osm/jp/coverage/postoffice/CoverageTest.java b/test/osm/jp/coverage/postoffice/CoverageTest.java index 6ea2d63..3296ec3 100644 --- a/test/osm/jp/coverage/postoffice/CoverageTest.java +++ b/test/osm/jp/coverage/postoffice/CoverageTest.java @@ -1,25 +1,32 @@ package osm.jp.coverage.postoffice; -import java.io.IOException; -import java.sql.SQLException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.TransformerException; import org.junit.Test; import static org.junit.Assert.*; -import org.xml.sax.SAXException; +import org.junit.BeforeClass; public class CoverageTest { + @SuppressWarnings("FieldNameHidesFieldInSuperclass") + static String gmlFolderName = "GML_POSTOFFICE"; + @BeforeClass + public static void setUpClass() throws Exception { + osm.jp.coverage.CoverageTest.gmlFolderName = gmlFolderName; + osm.jp.coverage.CoverageTest.setUpClass(); + } + @Test + @SuppressWarnings("UseSpecificCatch") public void testMain() { try { System.out.println("main"); String[] args = new String[0]; Coverage.main(args); } - catch (IOException | ClassNotFoundException | SQLException | ParserConfigurationException | TransformerException | SAXException e) { - fail("The test case is a prototype."); + catch (Exception e) { + fail(e.toString()); } + + osm.jp.coverage.CoverageTest.testCoverage_main(); } }