Skip to content

Commit 989e600

Browse files
author
caodongping
committed
Favorite to db
1 parent f9f717f commit 989e600

File tree

4 files changed

+104
-77
lines changed

4 files changed

+104
-77
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.github.mzule.androidweekly.dao;
2+
3+
import android.content.ContentValues;
4+
import android.database.Cursor;
5+
import android.database.sqlite.SQLiteDatabase;
6+
import android.database.sqlite.SQLiteOpenHelper;
7+
8+
import com.github.mzule.androidweekly.App;
9+
import com.github.mzule.androidweekly.entity.Article;
10+
import com.github.mzule.androidweekly.entity.Favorite;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
/**
16+
* Created by CaoDongping on 4/2/16.
17+
*/
18+
public class FavoriteDao extends SQLiteOpenHelper {
19+
private static final String NAME = "favorite";
20+
private static final int VERSION = 1;
21+
22+
public FavoriteDao() {
23+
super(App.getInstance(), NAME, null, VERSION);
24+
}
25+
26+
public List<Favorite> read() {
27+
List<Favorite> favorites = new ArrayList<>();
28+
Cursor cursor = getReadableDatabase().rawQuery("SELECT * FROM FAVORITE ORDER BY TIME DESC", null);
29+
while (cursor.moveToNext()) {
30+
Article article = new Article();
31+
article.setTitle(cursor.getString(1));
32+
article.setBrief(cursor.getString(2));
33+
article.setLink(cursor.getString(3));
34+
article.setImageUrl(cursor.getString(4));
35+
article.setDomain(cursor.getString(5));
36+
article.setIssue(cursor.getString(6));
37+
article.setSection(cursor.getString(7));
38+
Favorite favorite = new Favorite(article);
39+
favorite.setTime(cursor.getLong(9));
40+
favorites.add(favorite);
41+
}
42+
cursor.close();
43+
return favorites;
44+
}
45+
46+
public boolean contains(Article article) {
47+
Cursor cursor = getReadableDatabase().rawQuery("SELECT COUNT(*) FROM FAVORITE WHERE LINK=? AND ISSUE=?", new String[]{article.getLink(), article.getIssue()});
48+
cursor.moveToNext();
49+
int count = cursor.getInt(0);
50+
cursor.close();
51+
return count > 0;
52+
}
53+
54+
public void save(Article article) {
55+
if (!contains(article)) {
56+
ContentValues cv = new ContentValues();
57+
cv.put("TITLE", article.getTitle());
58+
cv.put("BRIEF", article.getBrief());
59+
cv.put("LINK", article.getLink());
60+
cv.put("IMAGE_URL", article.getImageUrl());
61+
cv.put("DOMAIN", article.getDomain());
62+
cv.put("ISSUE", article.getIssue());
63+
cv.put("SECTION", article.getSection());
64+
cv.put("TYPE", 0);// TODO add type for article
65+
cv.put("TIME", System.currentTimeMillis());
66+
getWritableDatabase().insert("FAVORITE", null, cv);
67+
}
68+
}
69+
70+
public void delete(Article article) {
71+
getWritableDatabase().delete("FAVORITE", "LINK=? AND ISSUE=?", new String[]{article.getLink(), article.getIssue()});
72+
}
73+
74+
@Override
75+
public void onCreate(SQLiteDatabase db) {
76+
// 不创建一个与Article的外键引用是因为Article表是cache,可能会被清除。
77+
db.execSQL("CREATE TABLE IF NOT EXISTS FAVORITE(" +
78+
"ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
79+
"TITLE VARCHAR(255), " +
80+
"BRIEF TEXT, " +
81+
"LINK VARCHAR(255), " +
82+
"IMAGE_URL VARCHAR(255), " +
83+
"DOMAIN VARCHAR(255), " +
84+
"ISSUE VARCHAR(255), " +
85+
"SECTION VARCHAR(255), " +
86+
"TYPE INTEGER, " +
87+
"TIME INTEGER)");
88+
}
89+
90+
@Override
91+
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
92+
93+
}
94+
}

app/src/main/java/com/github/mzule/androidweekly/dao/FavoriteKeeper.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

app/src/main/java/com/github/mzule/androidweekly/ui/activity/ArticleActivity.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import android.webkit.WebViewClient;
1212

1313
import com.github.mzule.androidweekly.R;
14-
import com.github.mzule.androidweekly.dao.FavoriteKeeper;
14+
import com.github.mzule.androidweekly.dao.FavoriteDao;
1515
import com.github.mzule.androidweekly.dao.TextZoomKeeper;
1616
import com.github.mzule.androidweekly.entity.Article;
1717
import com.github.mzule.androidweekly.ui.view.ProgressView;
@@ -35,6 +35,7 @@ public class ArticleActivity extends BaseActivity {
3535
private Article article;
3636
private WebSettings settings;
3737
private boolean changed;
38+
private FavoriteDao favoriteDao;
3839

3940
public static Intent makeIntent(Context context, Article article) {
4041
Intent intent = new Intent(context, ArticleActivity.class);
@@ -47,9 +48,9 @@ void favorite(View v) {
4748
changed = true;
4849
v.setSelected(!v.isSelected());
4950
if (v.isSelected()) {
50-
FavoriteKeeper.save(article);
51+
favoriteDao.save(article);
5152
} else {
52-
FavoriteKeeper.delete(article);
53+
favoriteDao.delete(article);
5354
}
5455
drawerLayout.closeDrawers();
5556
}
@@ -83,6 +84,7 @@ void share() {
8384
@SuppressLint("SetJavaScriptEnabled")
8485
@Override
8586
protected void afterInject() {
87+
favoriteDao = new FavoriteDao();
8688
article = (Article) getIntent().getSerializableExtra("article");
8789
settings = webView.getSettings();
8890
webView.loadUrl(article.getLink());
@@ -94,7 +96,7 @@ public void onPageFinished(WebView view, String url) {
9496
});
9597
settings.setTextZoom(TextZoomKeeper.read(settings.getTextZoom()));
9698
settings.setJavaScriptEnabled(true);
97-
favoriteButton.setSelected(FavoriteKeeper.contains(article));
99+
favoriteButton.setSelected(favoriteDao.contains(article));
98100
}
99101

100102
@Override

app/src/main/java/com/github/mzule/androidweekly/ui/activity/FavoriteActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import android.widget.ListView;
88

99
import com.github.mzule.androidweekly.R;
10-
import com.github.mzule.androidweekly.dao.FavoriteKeeper;
10+
import com.github.mzule.androidweekly.dao.FavoriteDao;
1111
import com.github.mzule.androidweekly.entity.Article;
1212
import com.github.mzule.androidweekly.entity.Favorite;
1313
import com.github.mzule.androidweekly.ui.adapter.ArticleAdapter;
@@ -26,6 +26,7 @@ public class FavoriteActivity extends BaseActivity {
2626
private static final int REQUEST_CODE_OPEN_ARTICLE = 0x1;
2727
@Bind(R.id.listView)
2828
ListView listView;
29+
private FavoriteDao favoriteDao;
2930
private ArticleAdapter adapter;
3031

3132
public static Intent makeIntent(Context context) {
@@ -40,13 +41,14 @@ void onItemClick(AdapterView<?> parent, View view, int position, long id) {
4041

4142
@Override
4243
protected void afterInject() {
44+
favoriteDao = new FavoriteDao();
4345
adapter = new ArticleAdapter(this);
4446
listView.setAdapter(adapter);
4547
renderFavorites();
4648
}
4749

4850
private void renderFavorites() {
49-
List<Favorite> favorites = FavoriteKeeper.read();
51+
List<Favorite> favorites = favoriteDao.read();
5052
adapter.clear();
5153
adapter.addAndNotify(extract(favorites));
5254
}

0 commit comments

Comments
 (0)