Testat Sammlung
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

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;
}
}