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>
</option>
</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" />
</component>
<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 repliedUsername, apiName, profile_pb;
private String medialinks[];
private String prefix;
private boolean retweeted, favorited, toggleImg, verified;
private long tweetReplyID, replyUserId;
private int rtCount, favCount;
@ -73,6 +74,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
answerAdapter = (TimelineRecycler) replyList.getAdapter();
database = new DatabaseAdapter(context);
errorLog = new ErrorLog(context);
prefix = context.getString(R.string.sent_from);
if(answerAdapter == null) {
answerAdapter = new TimelineRecycler(ui.get());
replyList.setAdapter(answerAdapter);
@ -115,7 +117,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
usernameStr = tweet.user.username;
scrNameStr = tweet.user.screenname;
apiName = formatString(tweet.source);
apiName = prefix + tweet.source;
rtCount = tweet.retweet;
favCount = tweet.favorit;
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) {
Spannable sTweet = new SpannableStringBuilder(tweet);
int start = 0;

View File

@ -547,9 +547,13 @@ public class TwitterEngine {
retweet = status.getRetweetCount();
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(),
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());
}

View File

@ -7,15 +7,14 @@ import android.database.sqlite.SQLiteOpenHelper;
public class AppDatabase extends SQLiteOpenHelper
{
private static final String userTable = "CREATE TABLE IF NOT EXISTS user ("+
"userID INTEGER PRIMARY KEY, username TEXT, fullpb TEXT," +
"scrname TEXT, pbLink TEXT, banner TEXT, bio TEXT,"+
"location TEXT, link TEXT, verify INTEGER, locked INTEGER," +
"userID INTEGER PRIMARY KEY, username VARCHAR(50),scrname VARCHAR(15)," +
"pbLink TEXT,banner TEXT,bio TEXT,location TEXT,link TEXT,userregister INTEGER," +
"createdAt INTEGER, following INTEGER, follower INTEGER);";
private static final String tweetTable = "CREATE TABLE IF NOT EXISTS tweet ("+
"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,"+
"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 (" +
"ownerID INTEGER, tweetID INTEGER PRIMARY KEY," +

View File

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