package com.emop.client.provider.model; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.provider.BaseColumns; import android.util.Log; import com.emop.client.Constants; import com.emop.client.provider.QueryParam; /* * 围脖数据 */ public class Item { public static final String DB_TABLE_NAME = "item"; public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.fmei.items"; public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.fmei.item"; public static final String LOCAL_CATE = "local_cate"; public static final String SHORT_KEY = "short_key"; public static final String WEIBO_ID = "weibo_id"; public static final String MESSAGE = "message"; public static final String PIC_URL = "pic_url"; public static final String ROOT_CATE = "root_cate"; public static final String ITEM_CONTENT_TYPE = "content_type"; public static final String NUM_IID = "num_iid"; public static final String SHOP_ID = "shop_id"; public static final String PRICE = "price"; public static final String TITLE = "title"; public static final String STATUS = "status"; public static final String UPDATE_TIME = "update_time"; public static final String LOCAL_UPDATE_TIME = "local_update"; public static final String WEIGHT = "weight"; //长宽比例. public static final String RECT_RATE = "rect_rate"; public static void buildQuery(SQLiteQueryBuilder builder, Uri uri, QueryParam param){ builder.setTables(DB_TABLE_NAME); List<String> seg = uri.getPathSegments(); String cate = seg.get(0) + "_" + seg.get(1); builder.appendWhere(LOCAL_CATE + "='" + cate + "'"); builder.appendWhere(" and " + STATUS + "='0'"); param.sortOrder = UPDATE_TIME + " " + "desc"; } public static void buildShopQuery(SQLiteQueryBuilder builder, Uri uri, QueryParam param){ builder.setTables(DB_TABLE_NAME); List<String> seg = uri.getPathSegments(); builder.appendWhere(SHOP_ID + "='" + seg.get(1) + "'"); builder.appendWhere(" and " + STATUS + "='0'"); param.sortOrder = UPDATE_TIME + " " + "desc"; } public static void buildQueryId(SQLiteQueryBuilder builder, Uri uri, QueryParam param){ builder.setTables(DB_TABLE_NAME); List<String> seg = uri.getPathSegments(); builder.appendWhere(BaseColumns._ID + "='" + seg.get(1) + "'"); } public static Uri insert(SQLiteDatabase db, ContentValues values){ return null; }; public static Uri update(SQLiteDatabase db, Uri uri, ContentValues values){ String taskId = values.getAsString("id"); if(taskId == null){ updateItem(db, uri, values); }else { values.remove("id"); List<String> seg = uri.getPathSegments(); //.get(1); values.put(LOCAL_CATE, seg.get(0) + "_" + seg.get(1)); values.put(LOCAL_UPDATE_TIME, System.currentTimeMillis()); int count = db.update(DB_TABLE_NAME, values, BaseColumns._ID + "=?", new String[]{taskId}); if(count == 0){ //Log.d(Constants.TAG_EMOP, String.format("insert new item '%s:%s, shop:%s'", taskId, // values.getAsString(WEIBO_ID), values.getAsString(SHOP_ID))); values.put(BaseColumns._ID, taskId); db.insert(DB_TABLE_NAME, WEIBO_ID, values); }else { //Log.d(Constants.TAG_EMOP, String.format("update item '%s:%s, shop:%s'", taskId, // values.getAsString(WEIBO_ID), values.getAsString(SHOP_ID))); } } return null; }; public static Uri updateItem(SQLiteDatabase db, Uri uri, ContentValues values){ String taskId = values.getAsString("num_iid"); if(taskId != null){ values.remove("num_iid"); Log.d(Constants.TAG_EMOP, "Update item by num id:" + taskId); List<String> seg = uri.getPathSegments(); //.get(1); db.update(DB_TABLE_NAME, values, NUM_IID + "=?", new String[]{taskId}); } return null; }; public static ContentValues convertJson(JSONObject obj){ ContentValues v = new ContentValues(); try{ if(obj.has("id")){ v.put("id", obj.getInt("id")); } if(obj.has("short_url_key")){ v.put(SHORT_KEY, obj.getString("short_url_key")); } if(obj.has("item_id")){ v.put(WEIBO_ID, obj.getString("item_id")); } if(obj.has("text")){ v.put(MESSAGE, obj.getString("text")); } if(obj.has(PIC_URL)){ v.put(PIC_URL, obj.getString(PIC_URL)); } if(obj.has(ITEM_CONTENT_TYPE)){ v.put(ITEM_CONTENT_TYPE, obj.getString(ITEM_CONTENT_TYPE)); } if(obj.has(UPDATE_TIME)){ v.put(UPDATE_TIME, obj.getString(UPDATE_TIME)); } if(obj.has(PRICE)){ v.put(PRICE, obj.getString(PRICE)); } if(obj.has(NUM_IID)){ v.put(NUM_IID, obj.getString(NUM_IID)); } if(obj.has(SHOP_ID)){ v.put(SHOP_ID, obj.getString(SHOP_ID)); } if(obj.has(STATUS)){ v.put(STATUS, obj.getString(STATUS)); } if(obj.has(RECT_RATE)){ v.put(RECT_RATE, obj.getString(RECT_RATE)); } if(obj.has(WEIGHT)){ v.put(WEIGHT, obj.getString(WEIGHT)); } }catch (JSONException e) { Log.e(Constants.TAG_EMOP, e.toString()); } return v; } }