import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import cn.crane.application.shoppingguider.model.BrandInfo;
import cn.crane.application.shoppingguider.model.FoodInfo;
import cn.crane.application.shoppingguider.model.JoyInfo;
import cn.crane.application.shoppingguider.model.MallInfo;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper {
public DBOpenHelper myDbHelper;
public static Context context;
public static final String DATABASE_CHAT_NAME = "shopguider.db";
public static final String TABLE_BRAND = "brands";
public static final String TABLE_JOY = "joy";
public static final String TABLE_FOODS = "foods";
public static final String TABLE_SHOPINFO = "shopInfo";
// private SQLiteDatabase db;
public MyDatabaseHelper(Context context) {
MyDatabaseHelper.context = context;
copyDataBase(context, DATABASE_CHAT_NAME);
myDbHelper = new DBOpenHelper(context, DATABASE_CHAT_NAME, null, 2);
}
/**
* 获取商铺信息
*
* @return
*/
public List<MallInfo> getMalls() {
SQLiteDatabase db = myDbHelper.getReadableDatabase();
Cursor cursor = null;
cursor = db.query(TABLE_SHOPINFO, null, null, null, null, null, null);
List<MallInfo> arrMallInfos = new ArrayList<MallInfo>();
while (cursor.moveToNext()) {
MallInfo mallInfo = new MallInfo();
mallInfo.setId(cursor.getString(cursor.getColumnIndex(MallInfo.ID)));
mallInfo.setName(cursor.getString(cursor
.getColumnIndex(MallInfo.NAME)));
mallInfo.setMsg(cursor.getString(cursor
.getColumnIndex(MallInfo.MSG)));
mallInfo.setImages(cursor.getString(cursor
.getColumnIndex(MallInfo.IMAGES)));
mallInfo.setIsCollect(cursor.getString(cursor
.getColumnIndex(MallInfo.ISCOLLECT)));
mallInfo.setCategory(cursor.getString(cursor
.getColumnIndex(MallInfo.CATEGORY)));
arrMallInfos.add(mallInfo);
}
if (!(cursor.isClosed() || cursor == null)) {
cursor.close();
}
db.close();
return arrMallInfos;
}
/**
* 获取品牌信息
*
* @return
*/
public List<BrandInfo> getBrands(boolean isAll) {
SQLiteDatabase db = myDbHelper.getReadableDatabase();
Cursor cursor = null;
if (isAll) {
cursor = db.query(TABLE_BRAND, null, null, null, null, null, null);
} else {
cursor = db.query(TABLE_BRAND, null, "isCollect=?",
new String[] { BrandInfo.COLLECT_YES }, null, null, null);
}
List<BrandInfo> arrBrandInfos = new ArrayList<BrandInfo>();
while (cursor.moveToNext()) {
BrandInfo brandInfo = new BrandInfo();
brandInfo.setId(cursor.getString(cursor
.getColumnIndex(BrandInfo.ID)));
brandInfo.setBrand_name(cursor.getString(cursor
.getColumnIndex(BrandInfo.NAME)));
brandInfo.setMsg(cursor.getString(cursor
.getColumnIndex(BrandInfo.MSG)));
brandInfo.setImages(cursor.getString(cursor
.getColumnIndex(BrandInfo.IMAGES)));
brandInfo.setIsCollect(cursor.getString(cursor
.getColumnIndex(BrandInfo.ISCOLLECT)));
brandInfo.setAction(cursor.getString(cursor
.getColumnIndex(BrandInfo.ACTION)));
arrBrandInfos.add(brandInfo);
}
if (!(cursor.isClosed() || cursor == null)) {
cursor.close();
}
db.close();
return arrBrandInfos;
}
/**
* 获取餐饮信息
*
* @return
*/
public List<FoodInfo> getFoods() {
SQLiteDatabase db = myDbHelper.getReadableDatabase();
Cursor cursor = null;
cursor = db.query(TABLE_FOODS, null, null, null, null, null, null);
List<FoodInfo> arrFoodInfos = new ArrayList<FoodInfo>();
while (cursor.moveToNext()) {
FoodInfo foodInfo = new FoodInfo();
foodInfo.setId(cursor.getString(cursor.getColumnIndex(FoodInfo.ID)));
foodInfo.setName(cursor.getString(cursor
.getColumnIndex(FoodInfo.NAME)));
foodInfo.setImages(cursor.getString(cursor
.getColumnIndex(FoodInfo.IMAGES)));
foodInfo.setDetail(cursor.getString(cursor
.getColumnIndex(FoodInfo.DETAIL)));
arrFoodInfos.add(foodInfo);
}
if (!(cursor.isClosed() || cursor == null)) {
cursor.close();
}
db.close();
return arrFoodInfos;
}
/**
* 获取娱乐信息
*
* @return
*/
public List<JoyInfo> getJoys() {
SQLiteDatabase db = myDbHelper.getReadableDatabase();
Cursor cursor = null;
cursor = db.query(TABLE_JOY, null, null, null, null, null, null);
List<JoyInfo> arrJoyInfos = new ArrayList<JoyInfo>();
while (cursor.moveToNext()) {
JoyInfo joyInfo = new JoyInfo();
joyInfo.setId(cursor.getString(cursor.getColumnIndex(JoyInfo.ID)));
joyInfo.setName(cursor.getString(cursor
.getColumnIndex(JoyInfo.NAME)));
joyInfo.setImages(cursor.getString(cursor
.getColumnIndex(JoyInfo.IMAGES)));
joyInfo.setDetail(cursor.getString(cursor
.getColumnIndex(JoyInfo.DETAIL)));
arrJoyInfos.add(joyInfo);
}
if (!(cursor.isClosed() || cursor == null)) {
cursor.close();
}
db.close();
return arrJoyInfos;
}
public long updateBrandInfo(BrandInfo brandInfo) {
SQLiteDatabase db = myDbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(BrandInfo.ISCOLLECT, brandInfo.getIsCollect());
// 插入ContentValues中的数据
long l = db.update(TABLE_BRAND, cv, "id=?",
new String[] { brandInfo.getId() + "" });
return l;
}
/**
* copy DB
*/
public static void copyDataBase(Context context, String dbName) {
OutputStream os = null;
File dbFile = context.getDatabasePath(dbName);
if (dbFile.exists()) {
return;
}
File dirDatabase = new File(dbFile.getParent());
dirDatabase.mkdirs();
try {
dbFile.createNewFile();
os = new FileOutputStream(dbFile.getAbsolutePath());
InputStream open = context.getAssets().open(dbName);
byte[] b = new byte[1024 * 512];
int len;
while ((len = open.read(b)) > 0) {
os.write(b, 0, len);
}
os.flush();
open.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* SQLiteOpenHelper
*
* @author yurf
*
*/
private static class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
File file = context.getDatabasePath(DATABASE_CHAT_NAME);
file.delete();
copyDataBase(context, DATABASE_CHAT_NAME);
onCreate(db);
}
}
}