package osm.jp.postgis; import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class PostgisItems extends ArrayList<PostgisItem> { String geom = ""; String gmlid = ""; String idref = ""; int area = 0; int fixed = 0; int code = 0; double lat = 0.0D; double lon = 0.0D; public static void main() { @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") PostgisItems items = new PostgisItems(); items.add(new PostgisItem("gmlid", "gmlid")); items.add(new PostgisItem("idref", "idref")); items.add(new PostgisItem("area", "area")); items.add(new PostgisItem("fixed", "fixed1")); items.add(new PostgisItem("code", "code")); } public PostgisItems() { super(); } public void setResuit(ResultSet rset) throws SQLException { for (PostgisItem item : this) { switch (item.postName) { case "gmlid": gmlid = rset.getString(item.localName); break; case "idref": idref = rset.getString(item.localName); break; case "area": area = rset.getInt(item.localName); break; case "fixed": fixed = rset.getInt(item.localName); break; case "code": code = rset.getInt(item.localName); break; default: break; } } lat = rset.getDouble("lat"); lon = rset.getDouble("lon"); } public void setPostResuit(ResultSet rset) throws SQLException { for (PostgisItem item : this) { switch (item.postName) { case "gmlid": gmlid = rset.getString(item.postName); break; case "idref": idref = rset.getString(item.postName); break; case "area": area = rset.getInt(item.postName); break; case "fixed": fixed = rset.getInt(item.postName); break; case "code": code = rset.getInt(item.postName); break; case "geom": geom = rset.getString(item.postName); break; case "lat": lat = rset.getDouble(item.postName); break; case "lon": lon = rset.getDouble(item.postName); break; default: break; } } } public String getSqlStr(String tableName) { StringBuilder sb = new StringBuilder(); sb.append("SELECT "); for (PostgisItem item : this) { sb.append(item.localName); sb.append(","); } sb.append("lat,lon FROM "); sb.append(tableName); return sb.toString(); } public String getValue() { StringBuilder sb = new StringBuilder(); boolean top = true; for (PostgisItem item : this) { if (top) { top = false; } else { sb.append(","); } switch (item.postName) { case "gmlid": sb.append(gmlid); break; case "idref": sb.append(idref); break; case "area": sb.append(area); break; case "fixed": sb.append(fixed); break; case "code": sb.append(code); break; case "geom": sb.append(geom); break; case "lat": sb.append(lat); break; case "lon": sb.append(lon); break; default: break; } } return sb.toString(); } public String getPostSqlStr(String tableName) { StringBuilder sb = new StringBuilder(); sb.append("SELECT "); boolean top = true; for (PostgisItem item : this) { if (top) { top = false; } else { sb.append(","); } switch (item.postName) { case "lat": sb.append("ST_Y(geom) AS lat"); break; case "lon": sb.append("ST_X(geom) AS lon"); break; default: sb.append(item.postName); break; } } sb.append(" FROM t_"); sb.append(tableName); sb.append(" ORDER BY area, gmlid"); return sb.toString(); } public String getCsvHeader() { StringBuilder sb = new StringBuilder(); boolean top = true; for (PostgisItem item : this) { if (top) { top = false; } else { sb.append(","); } sb.append(item.postName); } return sb.toString(); } public String getGeomStr() { return String.format( "ST_GeomFromText('POINT(%s %s)', 4612)", BigDecimal.valueOf(lon).toPlainString(), BigDecimal.valueOf(lat).toPlainString() ); } }