package com.quark.db;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.droid.carson.City;
import com.droid.carson.DBHelper;
import com.parttime.utils.CheckUtils;
import com.quark.utils.Logger;
public class CityService {
private static final String TAG = "CityService";
/**
* a-z排序
*/
private static Comparator comparator = new Comparator<City>() {
@Override
public int compare(City lhs, City rhs) {
String a = lhs.getPinyi().substring(0, 1);
String b = rhs.getPinyi().substring(0, 1);
int flag = a.compareTo(b);
if (flag == 0) {
return a.compareTo(b);
} else {
return flag;
}
}
};
public static ArrayList<City> getHotCity(Context context) {
SQLiteDatabase db = CityDatabase.openDatabase(context);
ArrayList<City> list = new ArrayList<>();
Cursor cursor = db.rawQuery("select * from area where hot=1 order by id asc", null);
int indexName = cursor.getColumnIndex("name");
City city;
while (cursor.moveToNext()) {
city = new City(cursor.getString(indexName), "");
list.add(city);
}
cursor.close();
db.close();
// Collections.sort(list, comparator);
return list;
}
/**
* 获取城市列表
*
* @param context
* @return
*/
public static ArrayList<City> getCityList(Context context) {
SQLiteDatabase db = CityDatabase.openDatabase(context);
ArrayList<City> list = new ArrayList<>();
Cursor cursor = db.rawQuery("select * from area where deep=1 or deep=2 order by id asc", null);
int indexName = cursor.getColumnIndex("name");
int indexPinyin = cursor.getColumnIndex("pinyin");
City city;
while (cursor.moveToNext()) {
city = new City(cursor.getString(indexName), cursor.getString(indexPinyin));
if (CheckUtils.isEmpty(city.getPinyi())) {
city.setPinyi(" ");
}
list.add(city);
}
cursor.close();
db.close();
Collections.sort(list, comparator);
return list;
}
/**
* 搜索城市
* @param context
* @param ccity
* @return
*/
public static ArrayList<City> getCityList(Context context, String ccity) {
SQLiteDatabase db = CityDatabase.openDatabase(context);
ArrayList<City> list = new ArrayList<>();
String sql = "select * from area where name like '%" + ccity + "%' and (deep=1 or deep=2)";
Cursor cursor = db.rawQuery(sql, null);
int indexName = cursor.getColumnIndex("name");
int indexPinyin = cursor.getColumnIndex("pinyin");
City city;
while (cursor.moveToNext()) {
city = new City(cursor.getString(indexName), cursor.getString(indexPinyin));
if (city.name.contains(ccity)) {
Logger.i(TAG, city.toString());
list.add(city);
}
}
if (list.size() > 0) {
list.add(new City("", "-"));
}
cursor.close();
db.close();
Collections.sort(list, comparator);
return list;
}
public static ArrayList<String> getSubCitys(Context context, String city) {
SQLiteDatabase mDbCity = CityDatabase.openDatabase(context);
ArrayList<String> mCountries = new ArrayList<>();
// 补充“全xxx”到第一条上
mCountries.add("全" + city);
int tempCityId = 1;
String sql = "select * from area where name='" + city + "' order by id asc";
Cursor cursor = mDbCity.rawQuery(sql, null);
if (cursor.getCount() > 0) {
// 必须使用moveToFirst方法将记录指针移动到第1条记录的位置
cursor.moveToFirst();
tempCityId = cursor.getInt(cursor.getColumnIndex("id"));
}
// **********根据parent_id 获取所有的区**************
sql = "select * from area where parent_id=?";
cursor = mDbCity.rawQuery(sql, new String[]{"" + tempCityId});
// 遍历Cursor
while (cursor.moveToNext()) {
mCountries.add(cursor.getString(cursor
.getColumnIndex("name")));
}
return mCountries;
}
}