database cleanup

This commit is contained in:
NudeDude 2018-08-15 20:17:11 +02:00
parent d8f2a68ce8
commit 04e0785aae
5 changed files with 55 additions and 49 deletions

View File

@ -25,7 +25,7 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -52,6 +52,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
private String usernameStr, scrNameStr, tweetStr, dateString; private String usernameStr, scrNameStr, tweetStr, dateString;
private String repliedUsername, apiName, profile_pb; private String repliedUsername, apiName, profile_pb;
private String medialinks[]; private String medialinks[];
private String prefix;
private boolean retweeted, favorited, toggleImg, verified; private boolean retweeted, favorited, toggleImg, verified;
private long tweetReplyID, replyUserId; private long tweetReplyID, replyUserId;
private int rtCount, favCount; private int rtCount, favCount;
@ -73,6 +74,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
answerAdapter = (TimelineRecycler) replyList.getAdapter(); answerAdapter = (TimelineRecycler) replyList.getAdapter();
database = new DatabaseAdapter(context); database = new DatabaseAdapter(context);
errorLog = new ErrorLog(context); errorLog = new ErrorLog(context);
prefix = context.getString(R.string.sent_from);
if(answerAdapter == null) { if(answerAdapter == null) {
answerAdapter = new TimelineRecycler(ui.get()); answerAdapter = new TimelineRecycler(ui.get());
replyList.setAdapter(answerAdapter); replyList.setAdapter(answerAdapter);
@ -115,7 +117,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
usernameStr = tweet.user.username; usernameStr = tweet.user.username;
scrNameStr = tweet.user.screenname; scrNameStr = tweet.user.screenname;
apiName = formatString(tweet.source); apiName = prefix + tweet.source;
rtCount = tweet.retweet; rtCount = tweet.retweet;
favCount = tweet.favorit; favCount = tweet.favorit;
retweeted = tweet.retweeted; retweeted = tweet.retweeted;
@ -313,14 +315,6 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
} }
private String formatString(String text) {
String prefix = ui.get().getString(R.string.sent_from);
text = text.substring(text.indexOf('>') + 1);
text = text.substring(0, text.indexOf('<'));
return prefix + text;
}
private Spannable highlight(String tweet) { private Spannable highlight(String tweet) {
Spannable sTweet = new SpannableStringBuilder(tweet); Spannable sTweet = new SpannableStringBuilder(tweet);
int start = 0; int start = 0;

View File

@ -547,9 +547,13 @@ public class TwitterEngine {
retweet = status.getRetweetCount(); retweet = status.getRetweetCount();
favorite = status.getFavoriteCount(); favorite = status.getFavoriteCount();
} }
String api = status.getSource();
api = api.substring(api.indexOf('>') + 1);
api = api.substring(0, api.indexOf('<'));
return new Tweet(status.getId(), retweet, favorite, user, status.getText(), return new Tweet(status.getId(), retweet, favorite, user, status.getText(),
status.getCreatedAt().getTime(), status.getInReplyToScreenName(), status.getInReplyToUserId(), status.getCreatedAt().getTime(), status.getInReplyToScreenName(), status.getInReplyToUserId(),
getMediaLinks(status), status.getSource(), status.getInReplyToStatusId(), getMediaLinks(status), api, status.getInReplyToStatusId(),
retweetedStat, status.getCurrentUserRetweetId(), status.isRetweeted(), status.isFavorited()); retweetedStat, status.getCurrentUserRetweetId(), status.isRetweeted(), status.isFavorited());
} }

View File

@ -7,15 +7,14 @@ import android.database.sqlite.SQLiteOpenHelper;
public class AppDatabase extends SQLiteOpenHelper public class AppDatabase extends SQLiteOpenHelper
{ {
private static final String userTable = "CREATE TABLE IF NOT EXISTS user ("+ private static final String userTable = "CREATE TABLE IF NOT EXISTS user ("+
"userID INTEGER PRIMARY KEY, username TEXT, fullpb TEXT," + "userID INTEGER PRIMARY KEY, username VARCHAR(50),scrname VARCHAR(15)," +
"scrname TEXT, pbLink TEXT, banner TEXT, bio TEXT,"+ "pbLink TEXT,banner TEXT,bio TEXT,location TEXT,link TEXT,userregister INTEGER," +
"location TEXT, link TEXT, verify INTEGER, locked INTEGER," +
"createdAt INTEGER, following INTEGER, follower INTEGER);"; "createdAt INTEGER, following INTEGER, follower INTEGER);";
private static final String tweetTable = "CREATE TABLE IF NOT EXISTS tweet ("+ private static final String tweetTable = "CREATE TABLE IF NOT EXISTS tweet ("+
"tweetID INTEGER PRIMARY KEY, userID INTEGER, retweetID INTEGER, replyID INTEGER, retweeterID INTEGER,"+ "tweetID INTEGER PRIMARY KEY, userID INTEGER, retweetID INTEGER, replyID INTEGER, retweeterID INTEGER,"+
"replyname TEXT, replyUserID INTEGER, time INTEGER, tweet TEXT, media TEXT, retweet INTEGER, favorite INTEGER,"+ "replyname TEXT, replyUserID INTEGER, time INTEGER, tweet TEXT, media TEXT, retweet INTEGER, favorite INTEGER,"+
"statusregister INTEGER, source TEXT, FOREIGN KEY (userID) REFERENCES user(userID));"; "statusregister INTEGER, source VARCHAR(32), FOREIGN KEY (userID) REFERENCES user(userID));";
private static final String favoriteTable = "CREATE TABLE IF NOT EXISTS favorit (" + private static final String favoriteTable = "CREATE TABLE IF NOT EXISTS favorit (" +
"ownerID INTEGER, tweetID INTEGER PRIMARY KEY," + "ownerID INTEGER, tweetID INTEGER PRIMARY KEY," +

View File

@ -19,12 +19,15 @@ import static android.database.sqlite.SQLiteDatabase.CONFLICT_REPLACE;
public class DatabaseAdapter { public class DatabaseAdapter {
private final int LIMIT = 100; private final int LIMIT = 100;
private final int favoritedmask = 1; private final int favoritedMask = 1;
private final int retweetedmask = 1 << 1; private final int retweetedMask = 1 << 1;
private final int hometlmask = 1 << 2; private final int homeMask = 1 << 2;
private final int mentionmask = 1 << 3; private final int mentionMask = 1 << 3;
private final int usertweetmask = 1 << 4; private final int usertweetMask = 1 << 4;
private final int replymask = 1 << 5; private final int replyMask = 1 << 5;
private final int verifiedMask = 1;
private final int lockedMask = 1 << 1;
private AppDatabase dataHelper; private AppDatabase dataHelper;
private long homeId; private long homeId;
@ -53,7 +56,7 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getWritableDatabase(); SQLiteDatabase db = dataHelper.getWritableDatabase();
for (int pos = 0; pos < home.size(); pos++) { for (int pos = 0; pos < home.size(); pos++) {
Tweet tweet = home.get(pos); Tweet tweet = home.get(pos);
storeStatus(tweet, hometlmask, db); storeStatus(tweet, homeMask, db);
} }
db.close(); db.close();
} }
@ -66,7 +69,7 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getWritableDatabase(); SQLiteDatabase db = dataHelper.getWritableDatabase();
for (int pos = 0; pos < mentions.size(); pos++) { for (int pos = 0; pos < mentions.size(); pos++) {
Tweet tweet = mentions.get(pos); Tweet tweet = mentions.get(pos);
storeStatus(tweet, mentionmask, db); storeStatus(tweet, mentionMask, db);
} }
db.close(); db.close();
} }
@ -79,7 +82,7 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getWritableDatabase(); SQLiteDatabase db = dataHelper.getWritableDatabase();
for(int pos = 0; pos < stats.size(); pos++) { for(int pos = 0; pos < stats.size(); pos++) {
Tweet tweet = stats.get(pos); Tweet tweet = stats.get(pos);
storeStatus(tweet,usertweetmask,db); storeStatus(tweet, usertweetMask, db);
} }
db.close(); db.close();
} }
@ -110,7 +113,7 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getWritableDatabase(); SQLiteDatabase db = dataHelper.getWritableDatabase();
for(int pos = 0; pos < replies.size(); pos++) { for(int pos = 0; pos < replies.size(); pos++) {
Tweet tweet = replies.get(pos); Tweet tweet = replies.get(pos);
storeStatus(tweet,replymask,db); storeStatus(tweet, replyMask, db);
} }
db.close(); db.close();
} }
@ -121,7 +124,7 @@ public class DatabaseAdapter {
*/ */
public void storeFavorite(Tweet tweet) { public void storeFavorite(Tweet tweet) {
SQLiteDatabase db = dataHelper.getWritableDatabase(); SQLiteDatabase db = dataHelper.getWritableDatabase();
storeStatus(tweet, favoritedmask, db); storeStatus(tweet, favoritedMask, db);
db.close(); db.close();
} }
@ -153,7 +156,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>(); List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " + String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " + "INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&"+hometlmask+">0 "+ "WHERE statusregister&" + homeMask + ">0 " +
"ORDER BY tweetID DESC LIMIT "+LIMIT; "ORDER BY tweetID DESC LIMIT "+LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME,null); Cursor cursor = db.rawQuery(SQL_GET_HOME,null);
if(cursor.moveToFirst()) { if(cursor.moveToFirst()) {
@ -176,7 +179,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>(); List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " + String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " + "INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&"+mentionmask+">0 "+ "WHERE statusregister&" + mentionMask + ">0 " +
"ORDER BY tweetID DESC LIMIT "+LIMIT; "ORDER BY tweetID DESC LIMIT "+LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME,null); Cursor cursor = db.rawQuery(SQL_GET_HOME,null);
if(cursor.moveToFirst()) { if(cursor.moveToFirst()) {
@ -200,7 +203,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>(); List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet "+ String SQL_GET_HOME = "SELECT * FROM tweet "+
"INNER JOIN user ON tweet.userID = user.userID " + "INNER JOIN user ON tweet.userID = user.userID " +
"WHERE statusregister&"+usertweetmask+">0 "+ "WHERE statusregister&" + usertweetMask + ">0 " +
"AND user.userID ="+userID+" ORDER BY tweetID DESC LIMIT "+LIMIT; "AND user.userID ="+userID+" ORDER BY tweetID DESC LIMIT "+LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME,null); Cursor cursor = db.rawQuery(SQL_GET_HOME,null);
@ -225,8 +228,8 @@ public class DatabaseAdapter {
SQLiteDatabase db = dataHelper.getReadableDatabase(); SQLiteDatabase db = dataHelper.getReadableDatabase();
List<Tweet> tweetList = new ArrayList<>(); List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " + String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"INNER JOIN favorit on tweet.tweetID = favorit.tweetID " + "INNER JOIN favorit on tweet.tweetID = favorit.tweetID " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE favorit.ownerID =" + userID + " ORDER BY tweetID DESC LIMIT "+LIMIT; "WHERE favorit.ownerID =" + userID + " ORDER BY tweetID DESC LIMIT "+LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME,null); Cursor cursor = db.rawQuery(SQL_GET_HOME,null);
if(cursor.moveToFirst()) { if(cursor.moveToFirst()) {
@ -270,7 +273,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>(); List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " + String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " + "INNER JOIN user ON tweet.userID = user.userID " +
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + replymask + ">0 " + "WHERE tweet.replyID=" + tweetId + " AND statusregister&" + replyMask + ">0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT; "ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null); Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
@ -293,14 +296,14 @@ public class DatabaseAdapter {
ContentValues status = new ContentValues(); ContentValues status = new ContentValues();
int register = getStatRegister(db,tweet.tweetID); int register = getStatRegister(db,tweet.tweetID);
if (tweet.retweeted) if (tweet.retweeted)
register |= retweetedmask; register |= retweetedMask;
else else
register &= ~retweetedmask; register &= ~retweetedMask;
if (tweet.favorized) if (tweet.favorized)
register |= favoritedmask; register |= favoritedMask;
else else
register &= ~favoritedmask; register &= ~favoritedMask;
status.put("retweet",tweet.retweet); status.put("retweet",tweet.retweet);
status.put("favorite",tweet.favorit); status.put("favorite",tweet.favorit);
@ -329,7 +332,7 @@ public class DatabaseAdapter {
db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null); db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null);
int register = getStatRegister(db, tweetId); int register = getStatRegister(db, tweetId);
register &= ~favoritedmask; register &= ~favoritedMask;
ContentValues status = new ContentValues(); ContentValues status = new ContentValues();
status.put("statusregister", register); status.put("statusregister", register);
@ -382,8 +385,8 @@ public class DatabaseAdapter {
long replyUserId = cursor.getLong(index); long replyUserId = cursor.getLong(index);
index = cursor.getColumnIndex("statusregister"); index = cursor.getColumnIndex("statusregister");
int statusregister = cursor.getInt(index); int statusregister = cursor.getInt(index);
boolean favorited = (statusregister & 1) == favoritedmask; boolean favorited = (statusregister & favoritedMask) > 0;
boolean retweeted = (statusregister & 2) == retweetedmask; boolean retweeted = (statusregister & retweetedMask) > 0;
String[] medias = parseMedia(medialinks); String[] medias = parseMedia(medialinks);
@ -403,10 +406,8 @@ public class DatabaseAdapter {
String username = cursor.getString(index); String username = cursor.getString(index);
index = cursor.getColumnIndex("scrname"); index = cursor.getColumnIndex("scrname");
String screenname = cursor.getString(index); String screenname = cursor.getString(index);
index = cursor.getColumnIndex("verify"); index = cursor.getColumnIndex("userregister");
boolean isVerified = cursor.getInt(index) == 1; int userRegister = cursor.getInt(index);
index = cursor.getColumnIndex("locked");
boolean locked = cursor.getInt(index) == 1;
index = cursor.getColumnIndex("pbLink"); index = cursor.getColumnIndex("pbLink");
String profileImg = cursor.getString(index); String profileImg = cursor.getString(index);
index = cursor.getColumnIndex("bio"); index = cursor.getColumnIndex("bio");
@ -423,8 +424,11 @@ public class DatabaseAdapter {
int following = cursor.getInt(index); int following = cursor.getInt(index);
index = cursor.getColumnIndex("follower"); index = cursor.getColumnIndex("follower");
int follower = cursor.getInt(index); int follower = cursor.getInt(index);
boolean isVerified = (userRegister & verifiedMask) > 0;
boolean isLocked = (userRegister & lockedMask) > 0;
return new TwitterUser(userId, username,screenname,profileImg,bio, return new TwitterUser(userId, username,screenname,profileImg,bio,
location,isVerified,locked,link,banner,createdAt,following,follower); location, isVerified, isLocked, link, banner, createdAt, following, follower);
} }
@ -462,14 +466,14 @@ public class DatabaseAdapter {
int statusregister = getStatRegister(db,tweet.tweetID); int statusregister = getStatRegister(db,tweet.tweetID);
statusregister |= newStatusRegister; statusregister |= newStatusRegister;
if (tweet.favorized) if (tweet.favorized)
statusregister |= favoritedmask; statusregister |= favoritedMask;
else else
statusregister &= ~favoritedmask; statusregister &= ~favoritedMask;
if (tweet.retweeted) if (tweet.retweeted)
statusregister |= retweetedmask; statusregister |= retweetedMask;
else else
statusregister &= ~retweetedmask; statusregister &= ~retweetedMask;
status.put("statusregister", statusregister); status.put("statusregister", statusregister);
db.insertWithOnConflict("tweet", null, status, CONFLICT_REPLACE); db.insertWithOnConflict("tweet", null, status, CONFLICT_REPLACE);
@ -491,12 +495,17 @@ public class DatabaseAdapter {
private void storeUser(TwitterUser user, SQLiteDatabase db) { private void storeUser(TwitterUser user, SQLiteDatabase db) {
ContentValues userColumn = new ContentValues(); ContentValues userColumn = new ContentValues();
int userRegister = 0;
if (user.isVerified)
userRegister |= verifiedMask;
if (user.isLocked)
userRegister |= lockedMask;
userColumn.put("userID", user.userID); userColumn.put("userID", user.userID);
userColumn.put("username", user.username); userColumn.put("username", user.username);
userColumn.put("scrname", user.screenname.substring(1)); userColumn.put("scrname", user.screenname.substring(1));
userColumn.put("pbLink", user.profileImg); userColumn.put("pbLink", user.profileImg);
userColumn.put("verify", user.isVerified); userColumn.put("userregister", userRegister);
userColumn.put("locked", user.isLocked);
userColumn.put("bio", user.bio); userColumn.put("bio", user.bio);
userColumn.put("link", user.link); userColumn.put("link", user.link);
userColumn.put("location", user.location); userColumn.put("location", user.location);