protected void onUrlClick(AjaxRequestTarget target, String name) {
JetwickQuery q;
if (lastQuery != null)
q = lastQuery;
else
q = new TweetQuery(true);
if (name == null) {
q.removeFilterQueries(ElasticTweetSearch.FIRST_URL_TITLE);
} else
q.addFilterQuery(ElasticTweetSearch.FIRST_URL_TITLE, name);
doSearch(q, 0, true);
updateAfterAjax(target, false);
}
@Override
protected void onDirectUrlClick(AjaxRequestTarget target, String name) {
if (lastQuery == null || name == null || name.isEmpty())
return;
TweetQuery q = new TweetQuery(true);
q.addFilterQuery(ElasticTweetSearch.FIRST_URL_TITLE, name);
try {
List<JTweet> tweets = getTweetSearch().collectObjects(getTweetSearch().query(q.setSize(1)));
if (tweets.size() > 0 && tweets.get(0).getUrlEntries().size() > 0) {
// TODO there could be more than 1 url!
UrlEntry entry = tweets.get(0).getUrlEntries().iterator().next();
getRequestCycle().setRequestTarget(new RedirectRequestTarget(entry.getResolvedUrl()));
}
} catch (Exception ex) {
logger.error("Error while executing onDirectUrlClick", ex);
}
}
};
add(urlTrends.setOutputMarkupId(true));
ssPanel = new SavedSearchPanel("savedSearches") {
@Override
public void onClick(AjaxRequestTarget target, long ssId) {
String searchType = parameters.getString("search");
if (searchType != null && !searchType.isEmpty() && !SearchBox.ALL.equals(searchType)) {
warn("Removed user filter when executing your saved search");
searchBox.setSearchType(SearchBox.ALL);
}
JUser user = getMySession().getUser();
SavedSearch ss = user.getSavedSearch(ssId);
if (ss != null) {
doSearch(ss.getQuery(), 0, true);
uindexProvider.get().save(user, true);
}
updateSSCounts(target);
updateAfterAjax(target, true);
}
@Override
public void onRemove(AjaxRequestTarget target, long ssId) {
JUser user = getMySession().getUser();
user.removeSavedSearch(ssId);
uindexProvider.get().save(user, true);
updateSSCounts(target);
}
@Override
public void onSave(AjaxRequestTarget target, long ssId) {
if (lastQuery == null)
return;
SavedSearch ss = new SavedSearch(ssId, lastQuery);
JUser user = getMySession().getUser();
user.addSavedSearch(ss);
uindexProvider.get().save(user, true);
updateSSCounts(target);
}
@Override
public void updateSSCounts(AjaxRequestTarget target) {
try {
JUser user = getMySession().getUser();
if (user != null) {
StopWatch sw = new StopWatch().start();
update(getTweetSearch().updateSavedSearches(user.getSavedSearches()));
if (target != null)
target.addComponent(ssPanel);
logger.info("Updated saved search counts for " + user.getScreenName() + " " + sw.stop().getSeconds());
}
} catch (Exception ex) {
logger.error("Error while searching in savedSearches", ex);
}
}
@Override
public String translate(long id) {
SavedSearch ss = getMySession().getUser().getSavedSearch(id);
return ss.getName();
}
};
add(ssPanel.setOutputMarkupId(true));
add(new UserPanel("userPanel", this) {
@Override
public void onLogout() {
getMySession().logout(uindexProvider.get(), (WebResponse) getResponse(), true);
setResponsePage(TweetSearchPage.class, parameters);
}
@Override
public void updateAfterAjax(AjaxRequestTarget target) {
TweetSearchPage.this.updateAfterAjax(target, false);
}
@Override
public void onHomeline(AjaxRequestTarget target, String user) {
searchBox.setSearchType(SearchBox.FRIENDS);
doSearch(createFriendQuery(""), 0, false);
TweetSearchPage.this.updateAfterAjax(target, true);
}
@Override
public void onShowTweets(AjaxRequestTarget target, String userName) {
searchBox.setSearchType(SearchBox.USER);
doSearch(new TweetQuery(true).addUserFilter(userName).setSort(ElasticTweetSearch.DATE, "desc"), 0, false);
TweetSearchPage.this.updateAfterAjax(target, true);
}
@Override
protected Collection<String> getUserChoices(String input) {