Fetch Tweets of a User using Twitter4J API and show in af:table in ADF & Java

Sharing is Caring

In the previous blogs, we learned about posting tweets on twitter timeline using Twitter4J API and sending direct messages to followers using the same API
This post is next in the series and about how to fetch tweets of a user and showing in ADF Table, For this requirement, we need to use same Consumer Key+ Secret and Access Token+Secret (Refer previous posts for this)

And In same way after authentication, we can fetch a user tweets by using its Twitter handle. So for this requirement, I have added a button to fetch tweets and a POJO based table to show fetched tweets in page

 

See the code to fetch tweets using user’s twitter handle and it’s retweets and favourites count, We can get tweets by passing page number as parameter and it returns a list of tweets


    //ArrayList to poplate data in af:table
    List<TweetList> tweets = new ArrayList();

public void setTweets(List<TweetList> tweets) {
this.tweets = tweets;
}

public List<TweetList> getTweets() {
return tweets;
}

    /**Send direct message to your followers using their twitter handle
     * @param actionEvent
     */
    public void retrieveTweetsFromTimeline(ActionEvent actionEvent) {
        if (twitterHandleBind.getValue() != null) {
            try {
                //Get Twitter Factory instance
                Twitter twitter = new TwitterFactory().getInstance();
                //Authorize app using consumer key and secret and Access token,Secret
                twitter.setOAuthConsumer(consumerKey, consumerSecret);
                AccessToken accessToken = new AccessToken(token, tokenSecret);
                twitter.setOAuthAccessToken(accessToken);

//First param of Paging() is the page number, and in same way we can get tweets for all pages
Paging paging = new Paging(1, 100);
//Put all tweets in a list
List<Status> statuses;

statuses = twitter.getUserTimeline(twitterHandleBind.getValue().toString(), paging);
//Iterate over list to get tweet text and other properties and add to list
for (Status status : statuses) {
tweets.add(new TweetList(status.getText(), status.getRetweetCount(), status.getFavoriteCount()));

}
} catch (TwitterException e) {
}
} else {
FacesMessage errMsg = new FacesMessage(“Please Enter Twitter Handle to fetch tweets”);
errMsg.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, errMsg);
}
}

Now to show these tweets in af:table we need a POJO class to capture all columns of af:table
For detailed post – Populate af:table programmatically from managead bean using POJO

public class TweetList {

public TweetList(String tweetText, int rtCnt, int fvrtCnt) {
super();
this.tweetText = tweetText;
this.rtCnt = rtCnt;
this.fvrtCnt = fvrtCnt;
}

//Tweet
private String tweetText;
//Retweet Count
private int rtCnt;
//Favourite Count
private int fvrtCnt;

public void setRtCnt(int rtCnt) {
this.rtCnt = rtCnt;
}

public int getRtCnt() {
return rtCnt;
}

public void setFvrtCnt(int fvrtCnt) {
this.fvrtCnt = fvrtCnt;
}

public int getFvrtCnt() {
return fvrtCnt;
}

public void setTweetText(String tweetText) {
this.tweetText = tweetText;
}

public String getTweetText() {
return tweetText;
}
}

All done now run and check application

Fetch Tweets of a User

Sample ADF Application- Download
Cheers 🙂 Happy Learning

Related Posts

I’m an Oracle ACE, Blogger, Reviewer,
Technical Lead working on Oracle ADF

Leave a Reply

Your email address will not be published. Required fields are marked *