package com.banking.xc.utils.staticinfo; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import skytv_com.banking.enjoymovie.MyApplication; import android.text.TextUtils; import com.banking.xc.database.table.CityTable; import com.banking.xc.entity.CityInfoEntity; import com.banking.xc.entity.CityInfosResponse; import com.banking.xc.utils.HttpGroup; import com.banking.xc.utils.HttpGroupUtils; import com.banking.xc.utils.Log; import com.banking.xc.utils.HttpGroup.HttpError; import com.banking.xc.utils.HttpGroup.HttpResponse; import com.banking.xc.utils.HttpGroup.HttpSetting; import com.banking.xc.utils.HttpGroup.HttpSettingParams; import com.banking.xc.utils.webService.request.flight.flightproduct.FltGetCityInfoRequest; import com.banking.xc.utils.xml.flight.FlightCityInfoResponseXmlParseHandler; import com.banking.xc.utils.xml.frame.XmlParseListener; public class CityUtil { private final static String TAG = "CityUtil"; public static ArrayList<CityInfoEntity> cityList; public ArrayList<String> cityNames; public Map<String,String> cityNameCodeMap; /*public static ArrayList<CityInfoEntity> getCityList(){ return cityList; }*/ public void initializeFlightCity(){ } /** * 方法可能返回为空 * @return */ public ArrayList<String> getCityNameList(){ return cityNames; } /** * 可能返回为空 * @return */ public Map<String,String> getCityNameCodeMap(){ return cityNameCodeMap; } public static void saveCityToFile(){ if(!CityTable.isNeedSaveCity()){ return; } InputStream is = null; if(Log.D){ Log.d(TAG,"saveCityToFile()"); } try { is = MyApplication.getInstance().getResources().getAssets().open("city.txt"); } catch (IOException e) { e.printStackTrace(); } if(is==null){ return; } final FlightCityInfoResponseXmlParseHandler parseHandler = new FlightCityInfoResponseXmlParseHandler(new XmlParseListener() { @Override public void onParseStart() { } @Override public void onParseError(String reason) { if (Log.D) { Log.d(TAG, "getFlightList() Parse error"); } } @Override public void onParseSuccess(Object o) { if(Log.D){ Log.d(TAG,"Thread"+Thread.currentThread().getName()); } cityList = (ArrayList<CityInfoEntity>)o; CityTable.insertManyCity(cityList); if(Log.D&&cityList!=null){ Log.d(TAG, "cityList size()"+cityList.size()); } } }, is); new Thread(new Runnable() { @Override public void run() { parseHandler.parse(); } }).start(); } public String getCityCodeByCityName(String cityName){ for(Entry<String,String>set:cityNameCodeMap.entrySet()){ if(TextUtils.equals(cityName,set.getKey())){ return set.getValue(); } } return null; /*for(CityInfoEntity c :cityList){ if(TextUtils.equals(c.getCityName(), cityName)){ return c.getCityCode(); } } return "";*/ } public String getCityNameByCityCode(String cityCode){ for(Entry<String,String>set:cityNameCodeMap.entrySet()){ if(TextUtils.equals(cityCode,set.getValue())){ return set.getKey(); } } return null; /*if(cityList==null){ return ""; } for(CityInfoEntity c :cityList){ if(TextUtils.equals(c.getCityCode(), cityCode)){ return c.getCityName(); } } return "";*/ } /** * 相对于枚举实现,asset中导入数据库,这种方法最优化. * 这个方法没必要,只需要根据城市汉字得到.可以记住热门的 */ public void productCityMapByCode(){ cityNameCodeMap = null; cityNameCodeMap = new HashMap<String, String>(); cityNameCodeMap.put("北京","BJS"); cityNameCodeMap.put("上海","SHA"); cityNameCodeMap.put("天津","TSN"); cityNameCodeMap.put("重庆","CKG"); cityNameCodeMap.put("哈尔滨","HRB"); cityNameCodeMap.put("西安","SIA"); cityNameCodeMap.put("昆明","KMG"); cityNameCodeMap.put("南京","NKG"); cityNameCodeMap.put("苏州","SZV"); cityNameCodeMap.put("杭州","HGH"); cityNameCodeMap.put("扬州","YTY"); cityNameCodeMap.put("长沙","CSX");// cityNameCodeMap.put("厦门","XMN");// cityNameCodeMap.put("张家界","DYG"); cityNameCodeMap.put("成都","CTU"); cityNameCodeMap.put("广州","CAN"); cityNameCodeMap.put("深圳","SZX"); cityNameCodeMap.put("郑州","CGO");// cityNameCodeMap.put("三亚","SYX");// cityNameCodeMap.put("济南","TNA");// cityNameCodeMap.put("福州","FOC");// cityNameCodeMap.put("九寨沟","JZH");// cityNameCodeMap.put("泰安","454");//? cityNameCodeMap.put("泰山","145");//? cityNameCodeMap.put("黄山","TXN");//? cityNameCodeMap.put("林芝","LZY");//? cityNameCodeMap.put("大连","DLC"); cityNameCodeMap.put("青岛","TAO"); cityNameCodeMap.put("敦煌","DNH"); cityNameCodeMap.put("曲阜","143"); } public void productCityNameListByCode(){ cityNames = null; cityNames = new ArrayList<String>(); cityNames.add("北京"); cityNames.add("上海"); cityNames.add("天津"); cityNames.add("重庆"); cityNames.add("哈尔滨"); cityNames.add("西安"); cityNames.add("昆明"); cityNames.add("南京"); cityNames.add("苏州"); cityNames.add("扬州"); cityNames.add("杭州"); cityNames.add("长沙"); cityNames.add("厦门"); cityNames.add("张家界"); cityNames.add("成都"); cityNames.add("广州"); cityNames.add("深圳"); cityNames.add("郑州"); cityNames.add("三亚"); cityNames.add("济南"); cityNames.add("福州"); cityNames.add("九寨沟"); cityNames.add("泰山"); cityNames.add("泰安"); cityNames.add("黄山"); cityNames.add("林芝"); cityNames.add("大连"); cityNames.add("青岛"); cityNames.add("敦煌"); cityNames.add("曲阜"); } }