package com.maalaang.omtwitter.text;
import com.maalaang.omtwitter.model.OMTweet;
public class FilterHashtagUsage implements TweetFilter {
private boolean filtered = false;
public FilterHashtagUsage() {
}
public void initialize() {
}
public void next(OMTweet tweet, OMTweetToken[] tokenList) {
filtered = false;
String query = tweet.getQuery();
if (query.charAt(0) != '#') {
return;
}
int idx = 0;
for (OMTweetToken tok : tokenList) {
if (tok.getType() == OMTweetToken.TOKEN_TYPE_HASHTAG && tok.getText().equalsIgnoreCase(query)) {
break;
}
idx++;
}
if (idx == tokenList.length) {
throw new IllegalStateException("cannot find query hashtag in the tweet - query=" + query + ", tweet=" + tweet.getText());
}
int prevTokType;
if (idx > 0) {
prevTokType = tokenList[idx-1].getType();
} else {
prevTokType = OMTweetToken.TOKEN_TYPE_NONE;
}
int nextTokType;
if (idx < tokenList.length - 1) {
nextTokType = tokenList[idx+1].getType();
} else {
nextTokType = OMTweetToken.TOKEN_TYPE_NONE;
}
switch (nextTokType) {
case OMTweetToken.TOKEN_TYPE_NONE:
case OMTweetToken.TOKEN_TYPE_URL:
case OMTweetToken.TOKEN_TYPE_USER:
case OMTweetToken.TOKEN_TYPE_HASHTAG:
filtered = true;
}
switch (prevTokType) {
case OMTweetToken.TOKEN_TYPE_URL:
case OMTweetToken.TOKEN_TYPE_HASHTAG:
filtered = true;
}
}
public boolean isFilteredOut() {
return filtered;
}
public void close() {
}
}