package fr.devoxx.sentimental.infra.adapter;
import java.io.File;
import twitter4j.Status;
import com.twitter.hbc.twitter4j.handler.StatusStreamHandler;
import fr.devoxx.sentimental.domain.Sentiment;
import fr.devoxx.sentimental.domain.SentimentAnalysis;
import fr.devoxx.sentimental.infra.TwitterStream;
import fr.devoxx.sentimental.infra.TwitterStream.DefaultStatusStreamHandler;
import fr.devoxx.sentimental.infra.audio.SamplePlayer;
public class TwitterAdapter {
private final SamplePlayer samplePlayer;
private final SentimentAnalysis service;
private final TwitterStream twitterStream = new TwitterStream();
public TwitterAdapter(final SentimentAnalysis service, SamplePlayer samplePlayer) {
this.service = service;
this.samplePlayer = samplePlayer;
}
public void subscribe(final String... terms) {
final StatusStreamHandler listener = new DefaultStatusStreamHandler() {
public void onStatus(Status status) {
final Sentiment sentiment = service.sentimentOf(status.getText());
System.out.println("*********************");
System.out.println(status.getText() + " => " + sentiment);
final String sampleName = sentiment.toString().toLowerCase();
final File file = new File(sampleName + ".wav");
samplePlayer.play(file);
}
};
twitterStream.subscribe(listener, terms);
}
}