package com.pets.dao; import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import com.pets.bean.DailyShareImg; import com.pets.bean.DailyShareSubject; import com.pets.bean.User; @SuppressLint("SimpleDateFormat") public class DailySubjectDao extends BaseDao<DailyShareSubject> { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final String TABLE = "pet_daily_subject"; public DailySubjectDao(Context context, CursorFactory factory) { super(context, factory); } @Override public DailyShareSubject get(Serializable id) { if (null == id) { throw new IllegalArgumentException("id counld not be null "); } Cursor cursor = null; try { db = getReadableDatabase(); cursor = db.query(TABLE, new String[] { "id", "username", "user_img", "datetime(create_date,'localtime')", "type", "agree", "disagree", "allow", "content", "useable", "back_reason", "img_url" }, "id=?", new String[] { String.valueOf(id) }, null, null, null); if (cursor.moveToNext()) { DailyShareSubject subject = wrapSubjectFromDB(cursor); return subject; } } catch (Exception e) { // Log.e("error", e.getMessage()); throw new IllegalArgumentException(e); } finally { if (null != cursor) cursor.close(); db.close(); } return null; } @Override public Serializable insert(DailyShareSubject t) { if (t == null) { throw new IllegalArgumentException( "insert object counld not be null "); } db = getWritableDatabase(); db.beginTransaction(); ContentValues values = new ContentValues(); values.put("id", t.getId()); values.put("username", t.getUsername()); values.put("create_date", format.format(t.getCreateDate())); values.put("type", t.getType()); values.put("agree", t.getAgree()); values.put("disagree", t.getDisagree()); values.put("allow", t.isAllow()); values.put("content", t.getContent()); values.put("useable", t.isUseable()); values.put("back_reason", t.getBackReason()); values.put("img_url", t.getShareImg().getUrl()); values.put("user_img", t.getUser().getUsername()); long id = db.insert(TABLE, null, values); db.setTransactionSuccessful(); db.endTransaction(); db.close(); return id; } @Override public Serializable update(DailyShareSubject t) { return null; } @Override public Serializable delete(Serializable id) { return null; } @Override public List<DailyShareSubject> getAll(int limit) { if (limit < 0) { throw new IllegalArgumentException("limit must be positive "); } Cursor cursor = null; try { db = getReadableDatabase(); cursor = db.rawQuery("select * from " + TABLE + " limit ?", new String[] { String.valueOf(limit) }); // cursor = db.query(TABLE, new String[] { "id", "username", // "user_img", "datetime(create_date,'localtime')", "type", // "agree", "disagree", "allow", "content", "useable", // "back_reason", "img_url" }, "limit ? OFFSET 0", // new String[] { String.valueOf(limit) }, null, null, null); List<DailyShareSubject> subjects = new ArrayList<DailyShareSubject>(); while (cursor.moveToNext()) { DailyShareSubject subject = wrapSubjectFromDB(cursor); subjects.add(subject); } return subjects; } catch (Exception e) { throw new IllegalArgumentException(e); } finally { if (null != cursor) cursor.close(); db.close(); } } private DailyShareSubject wrapSubjectFromDB(Cursor cursor) throws ParseException { DailyShareSubject subject = new DailyShareSubject(); subject.setId(cursor.getInt(cursor.getColumnIndex("id"))); subject.setUsername(cursor.getString(cursor.getColumnIndex("username"))); subject.setType(cursor.getInt(cursor.getColumnIndex("type"))); subject.setAgree(cursor.getInt(cursor.getColumnIndex("agree"))); subject.setDisagree(cursor.getInt(cursor.getColumnIndex("disagree"))); subject.setAllow(cursor.getInt(cursor.getColumnIndex("allow")) == 1); subject.setContent(cursor.getString(cursor.getColumnIndex("content"))); subject.setUseable(cursor.getInt(cursor.getColumnIndex("useable")) == 1); subject.setBackReason(cursor.getString(cursor .getColumnIndex("back_reason"))); DailyShareImg img = new DailyShareImg(); img.setUrl(cursor.getString(cursor.getColumnIndex("img_url"))); subject.setShareImg(img); User user = new User(); user.setUsername(subject.getUsername()); subject.setUser(user); String createTime = cursor.getString(cursor .getColumnIndex("datetime(create_date,'localtime')")); if (null != createTime) { subject.setCreateDate(format.parse(createTime)); } return subject; } }