From a40d769128517a76c2576893d8d85f42db81705d Mon Sep 17 00:00:00 2001 From: NudeDude Date: Sat, 9 Dec 2017 14:00:59 +0100 Subject: [PATCH] initial commit --- .../twidda/DataBase/AppDatabase.java | 11 ++- .../twidda/engine/TrendDatabase.java | 96 +++++++++++++++++++ .../twidda/engine/TweetDatabase.java | 49 +++++----- .../twidda/engine/TwitterEngine.java | 14 +-- .../engine/ViewAdapter/TrendsAdapter.java | 23 ++--- app/src/main/res/values/strings.xml | 12 ++- 6 files changed, 155 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/org/nuclearfog/twidda/engine/TrendDatabase.java diff --git a/app/src/main/java/org/nuclearfog/twidda/DataBase/AppDatabase.java b/app/src/main/java/org/nuclearfog/twidda/DataBase/AppDatabase.java index b615fe01..90313dd5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/DataBase/AppDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/DataBase/AppDatabase.java @@ -17,16 +17,19 @@ public class AppDatabase extends SQLiteOpenHelper @Override public void onCreate(SQLiteDatabase db) { - String uQuery = c.getString(R.string.user_table); - String tQuery = c.getString(R.string.tweet_table); + String uQuery = c.getString(R.string.user_table); + String tQuery = c.getString(R.string.tweet_table); + String trQuery = c.getString(R.string.trend_table); db.execSQL(uQuery); db.execSQL(tQuery); + db.execSQL(trQuery); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - db.execSQL("DROP TABLE IF EXISTS " + "user_table"); - db.execSQL("DROP TABLE IF EXISTS " + "tweet_table"); + db.execSQL("DROP TABLE IF EXISTS " + "user"); + db.execSQL("DROP TABLE IF EXISTS " + "tweet"); + db.execSQL("DROP TABLE IF EXISTS " + "trend"); onCreate(db); } diff --git a/app/src/main/java/org/nuclearfog/twidda/engine/TrendDatabase.java b/app/src/main/java/org/nuclearfog/twidda/engine/TrendDatabase.java new file mode 100644 index 00000000..6f804a34 --- /dev/null +++ b/app/src/main/java/org/nuclearfog/twidda/engine/TrendDatabase.java @@ -0,0 +1,96 @@ +package org.nuclearfog.twidda.engine; + + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +import org.nuclearfog.twidda.DataBase.AppDatabase; +import org.nuclearfog.twidda.R; + +import java.util.ArrayList; +import java.util.List; + +import twitter4j.Trend; +import twitter4j.Trends; + +public class TrendDatabase { + + private AppDatabase dataHelper; + private List trendName; + private List trendLink; + private List trendpos; + private Trends trends; + private int size = 0; + private Context c; + + public TrendDatabase(Trends trends, Context c) { + this.trends = trends; + this.c=c; + init(); + setup(); + store(); + } + + public TrendDatabase(Context c){ + this.c = c; + init(); + load(); + } + + public String getTrendname(int pos){ return trendName.get(pos); } + public String getTrendlink(int pos){return trendLink.get(pos);} + public int getTrendpos(int pos){ return trendpos.get(pos); } + public int getSize(){ + if(trendName != null) + return trendName.size(); + else + return size; + } + + private void load(){ + SQLiteDatabase data = dataHelper.getReadableDatabase(); + String SQL_TREND = c.getString(R.string.SQL_TRENS); + Cursor cursor = data.rawQuery(SQL_TREND,null); + int index; + if(cursor.moveToFirst()) { + do { + index = cursor.getColumnIndex("trendpos"); // trendpos + trendpos.add(cursor.getInt(index)); + index = cursor.getColumnIndex("trendname"); // trendname + trendName.add(cursor.getString(index)); + index = cursor.getColumnIndex("trendlink"); // trendlink + trendLink.add(cursor.getString(index)); + } while(cursor.moveToNext()); + } + cursor.close(); + data.close(); + } + + private void store(){ + SQLiteDatabase data = dataHelper.getWritableDatabase(); + ContentValues trend = new ContentValues(); + for(int pos = 0; pos < getSize(); pos++) { + trend.put("trendpos", getTrendpos(pos)); + trend.put("trendname", getTrendname(pos)); + trend.put("trendlink", getTrendlink(pos)); + data.insert("trend",null, trend); + } + } + + private void init(){ + dataHelper = AppDatabase.getInstance(c); + trendpos = new ArrayList<>(); + trendName = new ArrayList<>(); + trendLink = new ArrayList<>(); + } + + private void setup() { + for(Trend trend : trends.getTrends()) { + trendName.add(trend.getName()); + trendLink.add(trend.getURL()); + trendpos.add(++size); + } + } +} diff --git a/app/src/main/java/org/nuclearfog/twidda/engine/TweetDatabase.java b/app/src/main/java/org/nuclearfog/twidda/engine/TweetDatabase.java index f5e651e2..3ec99b3c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/engine/TweetDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/engine/TweetDatabase.java @@ -58,8 +58,8 @@ public class TweetDatabase ContentValues tl = new ContentValues(); Status stat; User user; - for(int pos = stats.size()-1 ;pos >=0; pos--) { - // USER + for(int pos = 0; pos < getSize(); pos++) { + // USER TODO UNIQUE usr.put("userID", getUserID(pos)); usr.put("username", getUsername(pos)); usr.put("pbLink", getPbImg(pos)); @@ -77,32 +77,35 @@ public class TweetDatabase } private void load() { - SQLiteDatabase data = dataHelper.getReadableDatabase();//TODO + SQLiteDatabase data = dataHelper.getReadableDatabase(); int index; String SQL_GET_HOME = c.getString(R.string.SQL_HOME_TL); Cursor cursor = data.rawQuery(SQL_GET_HOME,null); cursor.moveToFirst(); - while( cursor.moveToNext()) { - index = cursor.getColumnIndex("time"); // time - newDate.add(longToDate(cursor.getLong(index))); - index = cursor.getColumnIndex("tweet"); // tweet - tweet.add( cursor.getString(index) ); - index = cursor.getColumnIndex("retweet"); // retweet - noRT.add( cursor.getString(index) ); - index = cursor.getColumnIndex("favorite"); // favorite - noFav.add( cursor.getString(index) ); - index = cursor.getColumnIndex("answers"); // answers - noAns.add( cursor.getString(index) ); - index = cursor.getColumnIndex("username"); // user - user.add(cursor.getString(index) ); - index = cursor.getColumnIndex("pbLink"); // image - pbLink.add(cursor.getString(index) ); - index = cursor.getColumnIndex("userID"); // UserID - userId.add(cursor.getLong(index) ); - index = cursor.getColumnIndex("tweetID"); // tweetID - tweetId.add(cursor.getLong(index) ); - size++; + if(cursor.moveToFirst()) { + do { + index = cursor.getColumnIndex("time"); // time + newDate.add(longToDate(cursor.getLong(index))); + index = cursor.getColumnIndex("tweet"); // tweet + tweet.add( cursor.getString(index) ); + index = cursor.getColumnIndex("retweet"); // retweet + noRT.add( cursor.getString(index) ); + index = cursor.getColumnIndex("favorite"); // favorite + noFav.add( cursor.getString(index) ); + index = cursor.getColumnIndex("answers"); // answers + noAns.add( cursor.getString(index) ); + index = cursor.getColumnIndex("username"); // user + user.add(cursor.getString(index) ); + index = cursor.getColumnIndex("pbLink"); // image + pbLink.add(cursor.getString(index) ); + index = cursor.getColumnIndex("userID"); // UserID + userId.add(cursor.getLong(index) ); + index = cursor.getColumnIndex("tweetID"); // tweetID + tweetId.add(cursor.getLong(index) ); + size++; + } while(cursor.moveToNext()); } + cursor.close(); data.close(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/engine/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/engine/TwitterEngine.java index 0a2e15de..3a5d52ea 100644 --- a/app/src/main/java/org/nuclearfog/twidda/engine/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/engine/TwitterEngine.java @@ -11,7 +11,6 @@ import android.widget.Toast; import android.content.Context; import android.os.AsyncTask; -import twitter4j.Trends; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; @@ -28,8 +27,8 @@ public class TwitterEngine extends AsyncTask private static Twitter twitter; private Context context; private ListView list; - private static TimelineAdapter timelineAdapter; - private static TrendsAdapter trendsAdapter; + private TimelineAdapter timelineAdapter; + private TrendsAdapter trendsAdapter; private SwipeRefreshLayout refresh; public TwitterEngine(Context context, ListView list) { @@ -59,8 +58,8 @@ public class TwitterEngine extends AsyncTask break; case(1): // Trends - Trends trend = twitter.getPlaceTrends(1); - trendsAdapter = new TrendsAdapter(context,R.layout.tweet,trend.getTrends()); + TrendDatabase trend = new TrendDatabase(twitter.getPlaceTrends(23424829),context); //Germany by default + trendsAdapter = new TrendsAdapter(context,R.layout.tweet,trend); break; case(2): // Mentions @@ -70,7 +69,10 @@ public class TwitterEngine extends AsyncTask case(3): // Get TIMELINE TweetDatabase tweetDeck = new TweetDatabase(context); timelineAdapter = new TimelineAdapter(context,R.layout.tweet,tweetDeck); - + break; + case(4): // GET TRENDS + TrendDatabase trendDeck = new TrendDatabase(context); + trendsAdapter = new TrendsAdapter(context,R.layout.tweet,trendDeck); break; } } catch (TwitterException e) { diff --git a/app/src/main/java/org/nuclearfog/twidda/engine/ViewAdapter/TrendsAdapter.java b/app/src/main/java/org/nuclearfog/twidda/engine/ViewAdapter/TrendsAdapter.java index 8c743402..face63e9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/engine/ViewAdapter/TrendsAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/engine/ViewAdapter/TrendsAdapter.java @@ -1,5 +1,8 @@ package org.nuclearfog.twidda.engine.ViewAdapter; +import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.engine.TrendDatabase; + import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -7,33 +10,25 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; -import org.nuclearfog.twidda.R; - -import java.util.List; - -import twitter4j.Location; -import twitter4j.ResponseList; -import twitter4j.Trend; -import twitter4j.Trends; public class TrendsAdapter extends ArrayAdapter { - private Trend[] list; + private TrendDatabase trend; private Context c; - public TrendsAdapter(Context c, int layout, Trend[] list) { + public TrendsAdapter(Context c, int layout, TrendDatabase trend) { super(c, layout); - this.list = list; + this.trend = trend; this.c = c; } @Override public int getCount() { - return list.length; + return trend.getSize(); } @Override public Object getItem(int position) { - return list[position]; + return trend.getTrendname(position); } @Override @@ -43,7 +38,7 @@ public class TrendsAdapter extends ArrayAdapter { LayoutInflater inf=(LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inf.inflate(R.layout.trend, null); } - String trendName = list[position].getName(); + String trendName = trend.getTrendname(position); ((TextView) v.findViewById(R.id.trendname)).setText(trendName); return v; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3e32933e..67baaf56 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,7 +12,6 @@ Link zur Anmeldung - CREATE TABLE IF NOT EXISTS user ( userID INTEGER PRIMARY KEY, @@ -32,12 +31,19 @@ FOREIGN KEY (userID) REFERENCES user_table(userID) ); + + CREATE TABLE IF NOT EXISTS trend ( + trendpos INTEGER, + trendname TEXT, + trendlink TEXT ); + + "SELECT * FROM tweet INNER JOIN user ON user.userID = tweet.userID ORDER BY time DESC" - - {"tweetID","time","tweet","retweet","favorite","answers","userID"} + + "SELECT * FROM trend ORDER BY trendpos DESC" timeline.db