database bugfix

This commit is contained in:
NudeDude 2018-08-18 17:56:18 +02:00
parent aeec71ebd8
commit 13b21a9067
1 changed files with 90 additions and 65 deletions

View File

@ -44,8 +44,26 @@ public class DatabaseAdapter {
*/
public void storeUser(TwitterUser user) {
SQLiteDatabase db = dataHelper.getWritableDatabase();
ContentValues userColumn = new ContentValues();
int userRegister = 0;
if (user.isVerified)
userRegister |= verifiedMask;
if (user.isLocked)
userRegister |= lockedMask;
userColumn.put("userID", user.userID);
userColumn.put("username", user.username);
userColumn.put("scrname", user.screenname.substring(1));
userColumn.put("pbLink", user.profileImg);
userColumn.put("userregister", userRegister);
userColumn.put("bio", user.bio);
userColumn.put("link", user.link);
userColumn.put("location", user.location);
userColumn.put("banner", user.bannerImg);
userColumn.put("createdAt", user.created);
userColumn.put("following", user.following);
userColumn.put("follower", user.follower);
db.beginTransaction();
storeUser(user, db);
db.insertWithOnConflict("user", null, userColumn, CONFLICT_REPLACE);
commit(db);
}
@ -126,12 +144,24 @@ public class DatabaseAdapter {
/**
* Speichere Tweet in Favoriten Tabelle
* @param tweet Tweet
* @param tweetID Tweet ID
*/
public void storeFavorite(Tweet tweet) {
public void storeFavorite(long tweetID) {
SQLiteDatabase db = dataHelper.getWritableDatabase();
ContentValues favTable = new ContentValues();
ContentValues status = new ContentValues();
int register = getStatRegister(db, tweetID);
register |= favoritedMask;
favTable.put("tweetID", tweetID);
favTable.put("ownerID", homeId);
status.put("statusregister", register);
db.beginTransaction();
storeStatus(tweet, favoritedMask, db);
db.insertWithOnConflict("favorit", null, favTable, CONFLICT_IGNORE);
db.update("tweet", status, "tweet.tweetID=" + tweetID, null);
commit(db);
}
@ -293,7 +323,6 @@ public class DatabaseAdapter {
*/
public void updateStatus(Tweet tweet) {
SQLiteDatabase db = dataHelper.getWritableDatabase();
db.beginTransaction();
ContentValues status = new ContentValues();
int register = getStatRegister(db,tweet.tweetID);
if (tweet.retweeted)
@ -305,10 +334,11 @@ public class DatabaseAdapter {
register |= favoritedMask;
else
register &= ~favoritedMask;
status.put("retweet",tweet.retweet);
status.put("favorite",tweet.favorit);
status.put("statusregister",register);
db.beginTransaction();
db.update("tweet",status,"tweet.tweetID="+tweet.tweetID,null);
commit(db);
}
@ -321,6 +351,7 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getWritableDatabase();
db.beginTransaction();
db.delete("tweet","tweetID="+id,null);
db.delete("favorit", "tweetID=" + id + " AND ownerID=" + homeId, null);
commit(db);
}
@ -331,14 +362,13 @@ public class DatabaseAdapter {
*/
public void removeFavorite(long tweetId) {
SQLiteDatabase db = dataHelper.getWritableDatabase();
db.beginTransaction();
db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null);
int register = getStatRegister(db, tweetId);
register &= ~favoritedMask;
ContentValues status = new ContentValues();
status.put("statusregister", register);
db.beginTransaction();
db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null);
db.update("tweet", status, "tweet.tweetID=" + tweetId, null);
commit(db);
}
@ -358,7 +388,6 @@ public class DatabaseAdapter {
}
private Tweet getStatus(Cursor cursor) {
int index;
index = cursor.getColumnIndex("time");
@ -436,7 +465,7 @@ public class DatabaseAdapter {
private void storeStatus(Tweet tweet, int newStatusRegister, SQLiteDatabase db) {
ContentValues status = new ContentValues();
TwitterUser mUser = tweet.user;
TwitterUser user = tweet.user;
Tweet rtStat = tweet.embedded;
long rtId = 1L;
@ -445,58 +474,7 @@ public class DatabaseAdapter {
rtId = rtStat.tweetID;
}
storeUser(mUser,db);
status.put("tweetID", tweet.tweetID);
status.put("userID", mUser.userID);
status.put("time", tweet.time);
status.put("tweet", tweet.tweet);
status.put("retweetID", rtId);
status.put("source", tweet.source);
status.put("replyID", tweet.replyID);
status.put("replyname", tweet.replyName);
status.put("retweet", tweet.retweet);
status.put("favorite", tweet.favorit);
status.put("retweeterID", tweet.retweetId);
status.put("replyUserID", tweet.replyUserId);
String[] medialinks = tweet.media;
StringBuilder media = new StringBuilder();
for(String link : medialinks) {
media.append(link);
media.append(";");
}
status.put("media",media.toString());
int statusregister = getStatRegister(db,tweet.tweetID);
statusregister |= newStatusRegister;
if (tweet.favorized)
statusregister |= favoritedMask;
else
statusregister &= ~favoritedMask;
if (tweet.retweeted)
statusregister |= retweetedMask;
else
statusregister &= ~retweetedMask;
status.put("statusregister", statusregister);
db.insertWithOnConflict("tweet", null, status, CONFLICT_REPLACE);
}
private int getStatRegister(SQLiteDatabase db, long tweetID) {
String query = "SELECT statusregister FROM tweet WHERE tweetID="+tweetID+" LIMIT 1;";
Cursor c = db.rawQuery(query,null);
int result = 0;
if(c.moveToFirst()) {
int pos = c.getColumnIndex("statusregister");
result = c.getInt(pos);
}
c.close();
return result;
}
private void storeUser(TwitterUser user, SQLiteDatabase db) {
ContentValues userColumn = new ContentValues();
ContentValues userColumn = new ContentValues();
int userRegister = 0;
if (user.isVerified)
userRegister |= verifiedMask;
@ -515,9 +493,56 @@ public class DatabaseAdapter {
userColumn.put("createdAt", user.created);
userColumn.put("following", user.following);
userColumn.put("follower", user.follower);
db.insertWithOnConflict("user",null, userColumn, CONFLICT_REPLACE);
status.put("tweetID", tweet.tweetID);
status.put("userID", user.userID);
status.put("time", tweet.time);
status.put("tweet", tweet.tweet);
status.put("retweetID", rtId);
status.put("source", tweet.source);
status.put("replyID", tweet.replyID);
status.put("replyname", tweet.replyName);
status.put("retweet", tweet.retweet);
status.put("favorite", tweet.favorit);
status.put("retweeterID", tweet.retweetId);
status.put("replyUserID", tweet.replyUserId);
String[] mediaLinks = tweet.media;
StringBuilder media = new StringBuilder();
for (String link : mediaLinks) {
media.append(link);
media.append(";");
}
status.put("media",media.toString());
int statusRegister = getStatRegister(db, tweet.tweetID);
statusRegister |= newStatusRegister;
if (tweet.favorized)
statusRegister |= favoritedMask;
else
statusRegister &= ~favoritedMask;
if (tweet.retweeted)
statusRegister |= retweetedMask;
else
statusRegister &= ~retweetedMask;
status.put("statusregister", statusRegister);
db.insertWithOnConflict("user", null, userColumn, CONFLICT_IGNORE);
db.insertWithOnConflict("tweet", null, status, CONFLICT_REPLACE);
}
private int getStatRegister(SQLiteDatabase db, long tweetID) {
String query = "SELECT statusregister FROM tweet WHERE tweetID="+tweetID+" LIMIT 1;";
Cursor c = db.rawQuery(query,null);
int result = 0;
if(c.moveToFirst()) {
int pos = c.getColumnIndex("statusregister");
result = c.getInt(pos);
}
c.close();
return result;
}
private void commit(SQLiteDatabase db) {
db.setTransactionSuccessful();
db.endTransaction();