package test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.china317.publicclass.common.HttpClientDownload;
import com.china317.publicclass.database.ConnectionPool;
import com.china317.rrs.cache.NewAreaCache;
public class FindNewArea {
static final String key = "******************";
static String provinceCode = "320000";
static final int[] provinceCodeList = {120000, 450000, 140000, 710000, 630000, 440000, 430000, 620000, 640000, 230000, 410000, 330000, 510000, 810000, 210000, 530000, 130000, 340000, 820000, 500000, 350000, 320000, 220000, 310000, 650000, 150000, 610000, 540000, 360000, 420000, 520000, 370000, 110000, 460000};
static int batchCount = 0;
public static void find(){
Connection conn = null;
String sql = "insert into NEWEST_AREA (areaid,areaname,parentid) values (?,?,?)";
try {
HttpClientDownload httpDown ;
conn =ConnectionPool.getConnection();
conn.setAutoCommit(false);
String adcode ;
String name ;
String parentid = "0";
PreparedStatement ps = conn.prepareStatement(sql);
for(int code : provinceCodeList){
provinceCode = String.valueOf(code);
httpDown = new HttpClientDownload();
httpDown.setFileUrl(geturl(provinceCode));
if (httpDown.download()) {
byte[] httpb = httpDown.getData();
String data = new String(httpb, "utf-8");
if(data!=null && !"".equals(data)){
Map map = (Map) JSON.parse(data);
if (map.get("status") != null&& !map.get("status").equals("")) {
if (map.get("status").equals("1")) {
JSONArray provinceArry = (JSONArray)map.get("districts");
JSONObject provinceObj = provinceArry.getJSONObject(0);
if(provinceArry != null){
adcode = provinceObj.getString("adcode");
name = provinceObj.getString("name");
addBatch(adcode, name, parentid, ps);
JSONArray cityArray = (JSONArray) provinceObj.get("districts");
System.out.println("省: "+adcode+"--"+name);
for(Object cityObj : cityArray){
JSONObject cityJSON = (JSONObject)cityObj;
adcode = cityJSON.getString("adcode");
name = cityJSON.getString("name");
addBatch(adcode, name, provinceCode, ps);
parentid = adcode;
System.out.println("市: "+adcode+"--"+name);
JSONArray districtArray = (JSONArray) cityJSON.get("districts");
for(Object districtObj : districtArray){
JSONObject districtJSON = (JSONObject)districtObj;
adcode = districtJSON.getString("adcode");
name = districtJSON.getString("name");
addBatch(adcode, name, parentid, ps);
System.out.println("区: "+adcode+"--"+name);
}
}
}
}
}
}
}
}
if(batchCount%50==0){
ps.executeBatch(); // insert remaining records
ps.clearBatch();
}
conn.commit();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static String geturl(String provinceCode){
return "http://restapi.amap.com/v3/config/district?subdistrict=2&extensions=base&key="+key+"&s=rsv3&level=province&keywords="+provinceCode+"&platform=JS&logversion=2.0&sdkversion=1.3";
}
public static void addBatch(String adcode , String name , String parentid ,PreparedStatement ps) throws SQLException{
ps.setString(1, adcode);
ps.setString(2, name);
ps.setString(3, parentid);
ps.addBatch();
batchCount++;
if(batchCount%50==0){
ps.executeBatch(); // insert remaining records
ps.clearBatch();
}
}
public static void main(String[] args) {
FindNewArea.find();
}
}