diff --git a/src/osm/jp/postgis/CoverageAll.java b/src/osm/jp/postgis/CoverageAll.java index 5c0015d..ac0ea04 100644 --- a/src/osm/jp/postgis/CoverageAll.java +++ b/src/osm/jp/postgis/CoverageAll.java @@ -69,9 +69,25 @@ this.tableName = tableName; } + /** + * useually : load(conPost, conHsql, null); + * + * @param conPost + * @param conHsql + * @throws ClassNotFoundException + * @throws SQLException + * @throws IOException + */ public void load(Connection conPost, Connection conHsql) throws ClassNotFoundException, SQLException, IOException { + load(conPost, conHsql, null); + } + + + public void load(Connection conPost, Connection conHsql, String where) + throws ClassNotFoundException, SQLException, IOException + { // 都道府県名(name)の設定 for (int i=0; i < Japan.areaArgs.length; i++) { Coverage cover = new Coverage(i, Japan.areaArgs[i], DbPostoffice.TABLE_NAME); @@ -79,14 +95,17 @@ // 分母(denominator)、分子(molecule)、Lv を記入 // 全国の設定 if (i == 0) { - PreparedStatement ps2 = conPost.prepareStatement("SELECT COUNT(*) FROM t_"+ tableName); + // 全国の総計 + String whereStr = ((where == null) ? "" : String.format("WHERE (%s)", where)); + PreparedStatement ps2 = conPost.prepareStatement(String.format("SELECT COUNT(*) FROM t_%s %s", tableName, whereStr)); ResultSet rset2 = ps2.executeQuery(); if (rset2.next()) { cover.denominator = rset2.getLong(1); } rset2.close(); - ps2 = conPost.prepareStatement("SELECT COUNT(*) FROM t_"+ tableName +" WHERE fixed > 0;"); + whereStr = "WHERE (fixed > 0)" + ((where == null) ? "" : String.format(" and (%s)", where)); + ps2 = conPost.prepareStatement(String.format("SELECT COUNT(*) FROM t_%s %s", tableName, whereStr)); rset2 = ps2.executeQuery(); if (rset2.next()) { cover.molecule = rset2.getLong(1); @@ -94,7 +113,9 @@ rset2.close(); } else { - PreparedStatement ps2 = conPost.prepareStatement("SELECT COUNT(*) FROM t_"+ tableName +" WHERE (area=?);"); + // 都道府県毎の小計 + String whereStr = "WHERE (area=?)" + ((where == null) ? "" : String.format(" and (%s)", where)); + PreparedStatement ps2 = conPost.prepareStatement(String.format("SELECT COUNT(*) FROM t_%s %s", tableName, whereStr)); ps2.setInt(1, i); ResultSet rset2 = ps2.executeQuery(); if (rset2.next()) { @@ -102,7 +123,8 @@ } rset2.close(); - ps2 = conPost.prepareStatement("SELECT COUNT(*) FROM t_"+ tableName +" WHERE (fixed > 0) and (area=?);"); + whereStr = "WHERE (fixed > 0) and (area=?)" + ((where == null) ? "" : String.format(" and (%s)", where)); + ps2 = conPost.prepareStatement("SELECT COUNT(*) FROM t_"+ tableName +" WHERE (fixed > 0) and (area=?)"); ps2.setInt(1, i); rset2 = ps2.executeQuery(); if (rset2.next()) {