Newer
Older
osmCoverage / src / osm / jp / postgis / PostgisItems.java
@hayashi hayashi on 7 Jul 2018 2 KB ToPostgisの構造を大改造
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 gmlid = "";
    String idref = "";
    int area = 0;
    int fixed = 0;
    int code = 0;
    double lat = 0.0D;
    double lon = 0.0D;
    
    public static void main() {
        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 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 "+ tableName);
        return sb.toString();
    }
    
    public String getGeomStr() {
        return String.format(
            "ST_GeomFromText('POINT(%s %s)', 4612)", 
            BigDecimal.valueOf(lon).toPlainString(), 
            BigDecimal.valueOf(lat).toPlainString()
        );
    }
}