Skip to content

Commit 69c14bb

Browse files
committed
use db to save data
1 parent 0c85c06 commit 69c14bb

File tree

12 files changed

+259
-199
lines changed

12 files changed

+259
-199
lines changed

app/src/main/java/com/brian/csdnblog/activity/BlogContentActivity.java

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import com.brian.csdnblog.manager.DataFetcher;
2929
import com.brian.csdnblog.manager.DataFetcher.OnFetchDataListener;
3030
import com.brian.csdnblog.manager.DataFetcher.Result;
31-
import com.brian.csdnblog.manager.FavoBlogManager;
31+
import com.brian.csdnblog.manager.DataManager;
3232
import com.brian.csdnblog.manager.HistoryBlogManager;
3333
import com.brian.csdnblog.manager.ShareManager;
3434
import com.brian.csdnblog.manager.ThreadManager;
@@ -121,22 +121,16 @@ protected void onCreate(Bundle savedInstanceState) {
121121
mTitleBar.setTitle(mBlogInfo.title);
122122
mCurrentTitle = mBlogInfo.title;
123123

124-
if (FavoBlogManager.getInstance().isFavo(mCurrentUrl)) {
125-
mBtnFavo.setSelected(true);
126-
} else {
127-
mBtnFavo.setSelected(false);
128-
}
129-
130124
// 开始请求数据
131125
if (TypeManager.getWebType(mBlogInfo.type) == TypeManager.TYPE_WEB_JCC) {
132-
DataFetcher.getInstance().fetchString(mCurrentUrl, "GB2312", this);
126+
HistoryBlogManager.getInstance().fetchBlogContent(mCurrentUrl, "GB2312", this);
133127
} else {
134-
DataFetcher.getInstance().fetchString(mCurrentUrl, this);
128+
HistoryBlogManager.getInstance().fetchBlogContent(mCurrentUrl, this);
135129
}
136130

137131
mProgressBar.setVisibility(View.VISIBLE);
138132

139-
HistoryBlogManager.getInstance().addBlog(mBlogInfo);
133+
HistoryBlogManager.getInstance().saveBlog(mBlogInfo);
140134
}
141135

142136
private void initBlogInfo() {
@@ -250,11 +244,7 @@ public void onClick(View v) {
250244
@Override
251245
public void onClick(View v) {
252246
boolean hasFavoed = mBtnFavo.isSelected();
253-
if (!hasFavoed) {
254-
FavoBlogManager.getInstance().addBlog(mBlogInfo);
255-
} else {
256-
FavoBlogManager.getInstance().removeBlog(mCurrentUrl);
257-
}
247+
HistoryBlogManager.getInstance().doFavo(mBlogInfo, !hasFavoed);
258248
mBtnFavo.setSelected(!hasFavoed);
259249
}
260250
});
@@ -306,7 +296,7 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
306296
toggleAdShow(true);
307297

308298
mCurrentUrl = blogUrl;
309-
DataFetcher.getInstance().fetchString(blogUrl, BlogContentActivity.this);
299+
HistoryBlogManager.getInstance().fetchBlogContent(blogUrl, BlogContentActivity.this);
310300
return true;
311301
}
312302
return false;
@@ -381,6 +371,7 @@ public boolean handleMessage(Message msg) {
381371
mProgressBar.setVisibility(View.GONE);
382372

383373
mBtnFavo.setVisibility(View.VISIBLE);
374+
mBtnFavo.setSelected(HistoryBlogManager.getInstance().isFavo(mBlogInfo));
384375
mWebView.setVisibility(View.VISIBLE);
385376
String content = (String) msg.obj;
386377
mWebView.loadDataWithBaseURL(mBlogParser.getBlogBaseUrl(), content,
@@ -411,12 +402,14 @@ public void run() {
411402
FileUtil.writeFile("/sdcard/blogBefore", response.data);
412403
}
413404
String contentHtml = mBlogParser.getBlogContent(mBlogInfo.type, response.data);
414-
if (Config.isDebug) {
415-
FileUtil.writeFile("/sdcard/blogAfter", contentHtml);
416-
}
417-
418405
if (TextUtils.isEmpty(contentHtml)) { // 解析失败则直接显示原网页
419-
contentHtml = response.data;
406+
contentHtml = response.data;
407+
}
408+
if (response.url.equalsIgnoreCase(mBlogInfo.link)) {
409+
String cachePath = DataManager.getBlogCachePath(mBlogInfo.blogId);
410+
mBlogInfo.localPath = cachePath;
411+
FileUtil.writeFile(cachePath, contentHtml);
412+
HistoryBlogManager.getInstance().saveBlog(mBlogInfo);
420413
}
421414

422415
mBlogStack.push(contentHtml);

app/src/main/java/com/brian/csdnblog/activity/BlogListActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import com.brian.common.view.TitleBar;
1111
import com.brian.csdnblog.R;
12-
import com.brian.csdnblog.manager.FavoBlogManager;
1312
import com.brian.csdnblog.manager.HistoryBlogManager;
1413
import com.brian.csdnblog.manager.TypeManager;
1514

@@ -61,7 +60,7 @@ public void onClick(View view) {
6160
@Override
6261
public void onClick(View v) {
6362
if (mType == TYPE_FAVO) {
64-
FavoBlogManager.getInstance().clear();
63+
HistoryBlogManager.getInstance().clearByType(TYPE_FAVO);
6564
} else if (mType == TYPE_HISTORY) {
6665
HistoryBlogManager.getInstance().clear();
6766
}

app/src/main/java/com/brian/csdnblog/activity/BlogListFrag.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.brian.csdnblog.manager.DataFetcher;
2424
import com.brian.csdnblog.manager.DataFetcher.OnFetchDataListener;
2525
import com.brian.csdnblog.manager.DataFetcher.Result;
26-
import com.brian.csdnblog.manager.FavoBlogManager;
2726
import com.brian.csdnblog.manager.HistoryBlogManager;
2827
import com.brian.csdnblog.manager.ThreadManager;
2928
import com.brian.csdnblog.manager.TypeManager;
@@ -166,7 +165,7 @@ public void onClick(View v) {
166165
});
167166

168167
if (TypeManager.getWebType(mType) == TypeManager.TYPE_WEB_FAVO) {
169-
mAdapter.addDatas(FavoBlogManager.getInstance().getFavoBlogList());
168+
mAdapter.addDatas(HistoryBlogManager.getInstance().getFavoBlogList());
170169
mRefreshable = false;
171170
} else if (TypeManager.getWebType(mType) == TypeManager.TYPE_WEB_HISTORY) {
172171
mAdapter.addDatas(HistoryBlogManager.getInstance().getHistoryBlogList());

app/src/main/java/com/brian/csdnblog/datacenter/database/BaseTable.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public abstract class BaseTable<T> {
2323
/**
2424
* 插入一行数据前,判断数据库中是否已经存在,如果存在就更新它,不存在就插入
2525
*/
26-
protected boolean insertOrUpdate(String tableName, String selection, String[] selectionArgs, ContentValues values) {
26+
protected boolean insertOrUpdate(String tableName, String selection, String[] selectionArgs, ContentValues values, boolean isForceUpdate) {
2727
boolean flag = false;
2828
synchronized (DataBaseHelper.getInstance().getLock()) {
2929
SQLiteDatabase database = DataBaseHelper.getInstance().getWritableDatabase();
@@ -34,6 +34,46 @@ protected boolean insertOrUpdate(String tableName, String selection, String[] se
3434
// 不存在则写入数据库
3535
if (cursor == null || !cursor.moveToFirst()) {
3636
flag = database.insert(tableName, null, values) >= 0;
37+
} else {
38+
if (isForceUpdate) {
39+
flag = database.update(tableName, values, selection, selectionArgs) > 0;
40+
} else {
41+
flag = true;
42+
}
43+
}
44+
} catch (Exception e) {
45+
if (DEBUG) {
46+
e.printStackTrace();
47+
}
48+
flag = false;
49+
} finally {
50+
if (cursor != null) {
51+
cursor.close();
52+
}
53+
54+
if (database.isOpen()) {
55+
database.close();
56+
}
57+
}
58+
}
59+
LogUtil.log("result : " + flag);
60+
return flag;
61+
}
62+
63+
/**
64+
* 更新数据
65+
*/
66+
protected boolean update(String tableName, String selection, String[] selectionArgs, ContentValues values) {
67+
boolean flag = false;
68+
synchronized (DataBaseHelper.getInstance().getLock()) {
69+
SQLiteDatabase database = DataBaseHelper.getInstance().getWritableDatabase();
70+
Cursor cursor = null;
71+
try {
72+
cursor = database.query(tableName, null, selection, selectionArgs, null, null, null);
73+
74+
// 不存在则标记更新失败
75+
if (cursor == null || !cursor.moveToFirst()) {
76+
flag = false;
3777
} else {
3878
flag = database.update(tableName, values, selection, selectionArgs) > 0;
3979
}

app/src/main/java/com/brian/csdnblog/datacenter/database/BlogInfoTable.java

Lines changed: 61 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,31 @@ public class BlogInfoTable extends BaseTable<BlogInfo> {
2727
public static final String TITLE = "title";
2828
public static final String LINK = "link";
2929
public static final String BLOGER_ID = "bloger_id";
30+
public static final String BLOGER_JSON = "bloger_json";
3031
public static final String SUMMARY = "summary";
3132
public static final String LOACAL_PATH = "local_path";
3233
public static final String DATESTAMP = "datestamp";
34+
public static final String VISITTIME = "visit_time";
3335
public static final String EXTRA_MSG = "extra_msg";
3436
public static final String TYPE = "type";
37+
public static final String FAVO = "isFavo";
3538

3639

3740
// 创建帖子表的sql语言
3841
protected static final String SQL_CREATE_TABLE = "create table if not exists " + TABLE_NAME
3942
+ " ( "
4043
+ ID + " integer primary key autoincrement, "
41-
+ BLOG_ID + " text, "
44+
+ BLOG_ID + " text UNIQUE, "
4245
+ TITLE + " text, "
4346
+ LINK + " text, "
4447
+ BLOGER_ID + " text, "
48+
+ BLOGER_JSON + " text, "
4549
+ SUMMARY + " text, "
4650
+ LOACAL_PATH + " text, "
51+
+ VISITTIME + " integer, "
4752
+ DATESTAMP + " text, "
4853
+ EXTRA_MSG + " text, "
54+
+ FAVO + " integer, "
4955
+ TYPE + " integer "
5056
+ " ) ";
5157

@@ -74,19 +80,19 @@ public static void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
7480
// TODO 实现升级逻辑
7581
}
7682

77-
public void saveAsyc(final BlogInfo info) {
83+
public void saveBlogAsyc(final BlogInfo info) {
7884
ThreadManager.getPoolProxy().execute(new Runnable() {
7985
@Override
8086
public void run() {
81-
save(info);
87+
saveBlog(info);
8288
}
8389
});
8490
}
8591

8692
/**
8793
* 插入新的消息
8894
*/
89-
public boolean save(BlogInfo info) {
95+
public boolean saveBlog(BlogInfo info) {
9096
if (info == null) {
9197
return false;
9298
}
@@ -95,9 +101,30 @@ public boolean save(BlogInfo info) {
95101
String[] selectionArgs = new String[]{info.blogId};
96102

97103
ContentValues values = toContentValues(info);
98-
return insertOrUpdate(TABLE_NAME, selection, selectionArgs, values);
104+
return insertOrUpdate(TABLE_NAME, selection, selectionArgs, values, false);
99105
}
100106

107+
public boolean doFavo(BlogInfo info) {
108+
if (info == null) {
109+
return false;
110+
}
111+
112+
ContentValues values = new ContentValues();
113+
values.put(FAVO, info.isFavo);
114+
return update(info.blogId, values);
115+
}
116+
117+
private boolean update(String blogID, ContentValues values) {
118+
if (values == null || TextUtils.isEmpty(blogID)) {
119+
return false;
120+
}
121+
122+
String selection = BLOG_ID + " = ? ";
123+
String[] selectionArgs = new String[]{blogID};
124+
return update(TABLE_NAME, selection, selectionArgs, values);
125+
}
126+
127+
101128
public boolean delete(BlogInfo info) {
102129
if (info == null) {
103130
return false;
@@ -163,6 +190,26 @@ public BlogInfo queryByBlogerId(String blogerId) {
163190
return query(TABLE_NAME, selection, selectionArgs);
164191
}
165192

193+
public List<BlogInfo> getFavoList() {
194+
String orderBy = VISITTIME + " desc ";
195+
String selection = FAVO + " = ? ";
196+
String[] selectionArgs = new String[]{String.valueOf(1)};
197+
198+
String limit = null;
199+
200+
return queryList(TABLE_NAME, selection, selectionArgs, orderBy, limit);
201+
}
202+
203+
public List<BlogInfo> getHistoryList() {
204+
String orderBy = VISITTIME + " desc ";
205+
String selection = FAVO + " != ? ";
206+
String[] selectionArgs = new String[]{String.valueOf(1)};
207+
208+
String limit = null;
209+
210+
return queryList(TABLE_NAME, selection, selectionArgs, orderBy, limit);
211+
}
212+
166213
public List<BlogInfo> queryList(int type) {
167214
return queryList(type, 0, 0);
168215
}
@@ -175,11 +222,9 @@ public List<BlogInfo> queryList(int type, int startIndex, int num) {
175222
return null;
176223
}
177224

178-
String orderBy = DATESTAMP + " desc ";
179-
String selection = null;
180-
String[] selectionArgs = null;
181-
// String selection = TYPE + " = ? ";
182-
// String[] selectionArgs = new String[]{String.valueOf(type)};
225+
String orderBy = VISITTIME + " desc ";
226+
String selection = TYPE + " = ? ";
227+
String[] selectionArgs = new String[]{String.valueOf(type)};
183228

184229
String limit = null;
185230
if (num > 0) {
@@ -197,11 +242,14 @@ protected ContentValues toContentValues(BlogInfo info) {
197242
values.put(TITLE, info.title);
198243
values.put(LINK, info.link);
199244
values.put(BLOGER_ID, info.blogerID);
245+
values.put(BLOGER_JSON, info.blogerJson);
200246
values.put(SUMMARY, info.summary);
201247
values.put(LOACAL_PATH, info.localPath);
202248
values.put(DATESTAMP, info.dateStamp);
249+
values.put(VISITTIME, info.visitTime);
203250
values.put(EXTRA_MSG, info.extraMsg);
204251
values.put(TYPE, info.type);
252+
values.put(FAVO, info.isFavo?1:0);
205253
return values;
206254
}
207255
return null;
@@ -217,11 +265,14 @@ protected void readCursor(ArrayList<BlogInfo> list, Cursor cursor) throws JSONEx
217265
blogInfo.title = cursor.getString(cursor.getColumnIndex(TITLE));
218266
blogInfo.link = cursor.getString(cursor.getColumnIndex(LINK));
219267
blogInfo.blogerID = cursor.getString(cursor.getColumnIndex(BLOGER_ID));
268+
blogInfo.blogerJson = cursor.getString(cursor.getColumnIndex(BLOGER_JSON));
220269
blogInfo.summary = cursor.getString(cursor.getColumnIndex(SUMMARY));
221270
blogInfo.localPath = cursor.getString(cursor.getColumnIndex(LOACAL_PATH));
222271
blogInfo.dateStamp = cursor.getString(cursor.getColumnIndex(DATESTAMP));
272+
blogInfo.visitTime = cursor.getInt(cursor.getColumnIndex(VISITTIME));
223273
blogInfo.extraMsg = cursor.getString(cursor.getColumnIndex(EXTRA_MSG));
224274
blogInfo.type = cursor.getInt(cursor.getColumnIndex(TYPE));
275+
blogInfo.isFavo = cursor.getInt(cursor.getColumnIndex(TYPE)) == 1;
225276
list.add(blogInfo);
226277
} while (cursor.moveToNext());
227278
}

0 commit comments

Comments
 (0)