diff --git a/src/busstop.activity.violet.html b/src/busstop.activity.violet.html index a1eb766..c0f923e 100644 --- a/src/busstop.activity.violet.html +++ b/src/busstop.activity.violet.html @@ -144,7 +144,7 @@ - HSQL.DB.BUSSTOP_EXIST + HSQL.DB.OSM_EXIST 255 @@ -884,915 +884,914 @@ ]]>

- embedded diagram image + embedded diagram image \ No newline at end of file diff --git a/src/coverage_busstop_update.sh b/src/coverage_busstop_update.sh index 4c7eb09..856da48 100755 --- a/src/coverage_busstop_update.sh +++ b/src/coverage_busstop_update.sh @@ -6,6 +6,8 @@ #java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar:hsqldb_2.2.9.jar osm.jp.coverage.busstop.DbBusstop -DROP java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar:hsqldb_2.2.9.jar osm.jp.coverage.busstop.DbBusstop +java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar:hsqldb_2.2.9.jar osm.jp.coverage.busstop.DbExistBusstop + java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar:hsqldb_2.2.9.jar osm.jp.coverage.busstop.Busstop -update java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar osm.jp.postgis.Do_sqlfiles -update java -cp .:osmCoverage.jar:hayashi_0225.jar:postgresql-9.4.1212.jar:hsqldb_2.2.9.jar osm.jp.coverage.busstop.Coverage coverage.csv diff --git a/src/db.busstop.class.violet.html b/src/db.busstop.class.violet.html index 0827313..b45b5c1 100644 --- a/src/db.busstop.class.violet.html +++ b/src/db.busstop.class.violet.html @@ -154,11 +154,10 @@
- table.BUSSTOP_EXIST + table.OSM_EXIST - * osmid: VARCHAR(12) NOT NULL -+ name: VARCHAR(128) + * idref: VARCHAR(12) NOT NULL * lat: DOUBLE * lon: DOUBLE + score: INT @@ -434,820 +433,792 @@

embedded diagram image +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" /> \ No newline at end of file diff --git a/src/osm/jp/api/HttpPOST.java b/src/osm/jp/api/HttpPOST.java index c2eaec3..844d7e1 100644 --- a/src/osm/jp/api/HttpPOST.java +++ b/src/osm/jp/api/HttpPOST.java @@ -18,6 +18,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import osm.jp.coverage.busstop.DbBusstop; +import static osm.jp.coverage.busstop.DbExistBusstop.DROP; /** * Java HTTP クライアントサンプル - HttpURLConnection 版 - @@ -52,7 +54,16 @@ * @throws SQLException */ public static void create(Connection con) throws SQLException { + create(con, false); + } + + public static void create(Connection con, boolean withdrop) throws SQLException { String createSt; + + if (withdrop) { + DbBusstop.drop(con, HttpPOST.TABLE_NAME); + DbBusstop.drop(con, "AREA_NODE"); + } // 'table.FUEL_EXIST'を新規に作る createSt = "CREATE TABLE "+ HttpPOST.TABLE_NAME +" (idref VARCHAR(12) NOT NULL, lat DOUBLE, lon DOUBLE, score INT, PRIMARY KEY(idref));"; @@ -97,67 +108,76 @@ do { HttpURLConnection urlconn = (HttpURLConnection)url.openConnection(); - urlconn.setRequestMethod("POST"); - urlconn.setDoOutput(true); // POSTのデータを後ろに付ける - urlconn.setInstanceFollowRedirects(false); // 勝手にリダイレクトさせない - urlconn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3"); - urlconn.setRequestProperty("Content-Type","text/xml;charset=utf-8"); - urlconn.connect(); - - try (PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(urlconn.getOutputStream(), "utf-8")))) { - outputWriter(pw, queryText); - pw.flush(); - } - try { - TimeUnit.SECONDS.sleep(1); - } catch (InterruptedException e) {} + urlconn.setRequestMethod("POST"); + urlconn.setDoOutput(true); // POSTのデータを後ろに付ける + urlconn.setInstanceFollowRedirects(false); // 勝手にリダイレクトさせない + urlconn.setRequestProperty("Accept-Language", "ja;q=0.7,en;q=0.3"); + urlconn.setRequestProperty("Content-Type","text/xml;charset=utf-8"); + urlconn.connect(); - responsecode = urlconn.getResponseCode(); - System.out.println("レスポンスコード[" + responsecode + "] " + - "レスポンスメッセージ[" + urlconn.getResponseMessage() + "]"); - Map> headers = urlconn.getHeaderFields(); - for (Map.Entry> bar : headers.entrySet()) { - System.out.print("\t" + bar.getKey() +"\t: "); // キーを取得 - List vals = bar.getValue(); // 値を取得 - for(String str : vals) { - System.out.print("["+ str +"],"); + try (PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(urlconn.getOutputStream(), "utf-8")))) { + outputWriter(pw, queryText); + pw.flush(); } - System.out.println(); - } - if ((responsecode == 429) || (responsecode == 504) || (responsecode == 500)) { - // レスポンスコード[429] レスポンスメッセージ[Too Many Requests] - // レスポンスコード[500] レスポンスメッセージ[Internal server error] - // レスポンスコード[504] レスポンスメッセージ[Gateway Timeout] + try { - TimeUnit.MINUTES.sleep(5); + TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) {} - } - else { - System.out.println("\n---- ボディ ----"); - - File oFile = new File(HttpPOST.EXIST_FILE); - oFile.deleteOnExit(); - try (BufferedWriter hw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(oFile), "UTF-8"))) { - try (BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"))) { - while (true) { - String line = reader.readLine(); - if (line == null) { - break; + + responsecode = urlconn.getResponseCode(); + System.out.println("レスポンスコード[" + responsecode + "] " + + "レスポンスメッセージ[" + urlconn.getResponseMessage() + "]"); + Map> headers = urlconn.getHeaderFields(); + for (Map.Entry> bar : headers.entrySet()) { + System.out.print("\t" + bar.getKey() +"\t: "); // キーを取得 + List vals = bar.getValue(); // 値を取得 + for(String str : vals) { + System.out.print("["+ str +"],"); + } + System.out.println(); + } + if ((responsecode == 429) || (responsecode == 504) || (responsecode == 500)) { + // レスポンスコード[429] レスポンスメッセージ[Too Many Requests] + // レスポンスコード[500] レスポンスメッセージ[Internal server error] + // レスポンスコード[504] レスポンスメッセージ[Gateway Timeout] + try { + TimeUnit.MINUTES.sleep(5); + } catch (InterruptedException e) {} + } + else { + System.out.println("\n---- ボディ ----"); + + File oFile = new File(HttpPOST.EXIST_FILE); + oFile.deleteOnExit(); + try (BufferedWriter hw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(oFile), "UTF-8"))) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"))) { + while (true) { + String line = reader.readLine(); + if (line == null) { + break; + } + hw.write(line); + hw.newLine(); } - hw.write(line); - hw.newLine(); + hw.flush(); } - hw.flush(); } } + } - urlconn.disconnect(); + catch (java.net.ConnectException e) { + // レスポンスコード[600] レスポンスメッセージ[接続がタイムアウトしました (Connection timed out)] + responsecode = 600; + } + finally { + urlconn.disconnect(); + } try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) {} } - while ((responsecode == 429) || (responsecode == 504)); + while ((responsecode == 429) || (responsecode == 504) || (responsecode == 600)); } public static void outputWriter(PrintWriter pw, String text) { diff --git a/src/osm/jp/coverage/busstop/DbBusstop.java b/src/osm/jp/coverage/busstop/DbBusstop.java index c1fb0f6..9c083b8 100644 --- a/src/osm/jp/coverage/busstop/DbBusstop.java +++ b/src/osm/jp/coverage/busstop/DbBusstop.java @@ -507,7 +507,7 @@ //create(conHsql, createSt); } - static void create(Connection con, String createsql) throws SQLException { + public static void create(Connection con, String createsql) throws SQLException { System.out.println(createsql); try (PreparedStatement ps = con.prepareStatement(createsql)) { ps.executeUpdate(); diff --git a/src/osm/jp/coverage/busstop/DbExistBusstop.java b/src/osm/jp/coverage/busstop/DbExistBusstop.java index 23c34ee..f436d1d 100644 --- a/src/osm/jp/coverage/busstop/DbExistBusstop.java +++ b/src/osm/jp/coverage/busstop/DbExistBusstop.java @@ -61,10 +61,7 @@ Connection conHsql = null; try { conHsql = DatabaseTool.openDb("database"); - if (DROP) { - DbBusstop.drop(conHsql, HttpPOST.TABLE_NAME); - } - HttpPOST.create(conHsql); + HttpPOST.create(conHsql, DROP); /** * 既存のOSMバス停を読み込む diff --git a/src/osm/jp/coverage/fuel/DbExist.java b/src/osm/jp/coverage/fuel/DbExist.java index fbc25e2..492d365 100644 --- a/src/osm/jp/coverage/fuel/DbExist.java +++ b/src/osm/jp/coverage/fuel/DbExist.java @@ -30,7 +30,7 @@ try { // DB.tableを作成 con = DatabaseTool.openDb("database"); - HttpPOST.create(con); + HttpPOST.create(con, false); /** * 既存のOSMガソリンスタンドを読み込む