You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.5 KiB
88 lines
2.5 KiB
package G2_solution;
|
|
|
|
import G2.ATweetGenerator;
|
|
import twitter.TweetObject;
|
|
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class TweetGenerator extends ATweetGenerator {
|
|
|
|
private Set<TweetObject> tweetObjects;
|
|
private Map<String, Integer> wordMap;
|
|
|
|
public TweetGenerator() {
|
|
tweetObjects = new HashSet<>();
|
|
wordMap = new HashMap<>();
|
|
}
|
|
|
|
@Override
|
|
public TweetObject addTweetCSV(String csvTweed) {
|
|
if(csvTweed == null) {return null;}
|
|
String[] parts = csvTweed.split(";");
|
|
if(parts.length != 4) {return null;}
|
|
TweetObject tweetObject = new TweetObject(parts[0], parts[1], parts[2]);
|
|
tweetObject.setUser(parts[3]);
|
|
tweetObject.setTags(super.extractTags(parts[2]));
|
|
return tweetObject;
|
|
}
|
|
|
|
|
|
@Override
|
|
public int addTweet(TweetObject tweet) {
|
|
if(tweet == null) {return 0;}
|
|
if(tweet.getText().length() == 0) {return 0;}
|
|
if(this.tweetObjects.add(tweet)) {
|
|
String[] parts = tweet.getText().split(" ");
|
|
Integer wordCount = this.wordMap.get(tweet.getUser());
|
|
if(wordCount == null) {wordCount = 0;}
|
|
this.wordMap.put(tweet.getUser(), wordCount + parts.length);
|
|
tweet.setWordCount(parts.length);
|
|
return parts.length;
|
|
}
|
|
else {return 0;}
|
|
}
|
|
|
|
@Override
|
|
public int getNrOfWords() {
|
|
return this.wordMap.values().stream().collect(Collectors.summingInt(value -> value));
|
|
}
|
|
|
|
@Override
|
|
public int getNrOfWords(String user) {
|
|
Integer wordCount = this.wordMap.get(user);
|
|
if(wordCount == null) {wordCount = 0;}
|
|
return wordCount;
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(TweetObject tweet) {
|
|
return this.tweetObjects.contains(tweet);
|
|
}
|
|
|
|
@Override
|
|
public int remove(TweetObject tweet) {
|
|
Integer wordCount = 0;
|
|
if(this.tweetObjects.remove(tweet)) {
|
|
String user = tweet.getUser();
|
|
wordCount = this.wordMap.get(user) - tweet.getWordCount();
|
|
this.wordMap.put(user,wordCount);
|
|
|
|
}
|
|
return wordCount;
|
|
}
|
|
|
|
@Override
|
|
public int postTweets(ITwitterConnector connector) {
|
|
if(connector==null) return 0;
|
|
if(connector.testConnection()){
|
|
if(connector.postTweets(this.tweetObjects)){
|
|
int nrOfWords = getNrOfWords();
|
|
this.tweetObjects.clear();
|
|
this.wordMap.clear();
|
|
return nrOfWords;
|
|
};
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
|