package G2_solution; import G2.ATweetGenerator; import twitter.TweetObject; import java.util.*; import java.util.stream.Collectors; public class TweetGenerator extends ATweetGenerator { private Set tweetObjects; private Map 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; } }