/*
* Copyright (C) 2013 YROM.NET
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tv.acfun.a63.db;
import java.util.ArrayList;
import java.util.List;
import tv.acfun.a63.api.entity.Article;
import tv.acfun.a63.api.entity.Content;
import tv.acfun.a63.api.entity.User;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
* @author Yrom
*
*/
public final class DB {
private DBOpenHelper helper;
public DB(Context context){
helper = new DBOpenHelper(context);
}
@Override
protected void finalize() throws Throwable {
helper.close();
super.finalize();
}
public void saveUser(User user){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("INSERT INTO "+DBOpenHelper.TABLE_USER + " (uid, name, avatar, signature, cookies, time) VALUES(?,?,?,?,?,?)",
new Object[] { user.id, user.name, user.avatar,user.signature, user.cookies, user.savedTime});
db.close();
}
public User getUser(){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor query = db.rawQuery("SELECT * FROM "+DBOpenHelper.TABLE_USER, null);
User user = null;
if (query.moveToFirst()) {
user = new User();
user.id = query.getInt(query.getColumnIndex("uid"));
user.name = query.getString(query.getColumnIndex("name"));
user.avatar = query.getString(query.getColumnIndex("avatar"));
user.signature = query.getString(query.getColumnIndex("signature"));
user.cookies = query.getString(query.getColumnIndex("cookies"));
user.savedTime = query.getLong(query.getColumnIndex("time"));
}
query.close();
db.close();
return user;
}
public void logout() {
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("DELETE FROM " + DBOpenHelper.TABLE_USER);
db.close();
}
// TODO : fav
public void addFav(Article article){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("INSERT INTO "+DBOpenHelper.TABLE_FAV + " (aid, title, description,channelId,stows,time) VALUES(?,?,?,?,?,?)", new Object[]{article.id, article.title, article.description,article.channelId,article.stows,System.currentTimeMillis()});
db.close();
}
public boolean deleteFav(int aid){
SQLiteDatabase db = helper.getWritableDatabase();
int delete = db.delete(DBOpenHelper.TABLE_FAV, "aid=?", new String[]{String.valueOf(aid)});
db.close();
return delete >0;
}
public boolean isFav(int aid){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor query = db.rawQuery("SELECT time FROM "+DBOpenHelper.TABLE_FAV+" where aid=?", new String[]{String.valueOf(aid)});
boolean isFav = query.getCount() >0;
query.close();
db.close();
return isFav;
}
public List<Content> getFavList(){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor query = db.rawQuery("SELECT * FROM "+ DBOpenHelper.TABLE_FAV,null);
if(query.getCount() <=0){
query.close();
db.close();
return null;
}
List<Content> cs = new ArrayList<Content>(query.getCount());
while(query.moveToNext()){
Content c = new Content();
c.aid = query.getInt(query.getColumnIndex("aid"));
c.title = query.getString(query.getColumnIndex("title"));
c.description = query.getString(query.getColumnIndex("description"));
c.channelId = query.getInt(query.getColumnIndex("channelId"));
c.stows = query.getInt(query.getColumnIndex("stows"));
c.releaseDate = query.getLong(query.getColumnIndex("time"));
cs.add(c);
}
query.close();
db.close();
return cs;
}
}