/*
- * Sone - SearchPage.java - Copyright © 2010 David Roden
+ * Sone - SearchPage.java - Copyright © 2010–2012 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import java.util.logging.Logger;
import net.pterodactylus.sone.data.Post;
+import net.pterodactylus.sone.data.PostReply;
import net.pterodactylus.sone.data.Profile;
import net.pterodactylus.sone.data.Profile.Field;
import net.pterodactylus.sone.data.Reply;
import net.pterodactylus.util.cache.DefaultCacheItem;
import net.pterodactylus.util.cache.MemoryCache;
import net.pterodactylus.util.cache.ValueRetriever;
-import net.pterodactylus.util.collection.Mapper;
-import net.pterodactylus.util.collection.Mappers;
import net.pterodactylus.util.collection.Pagination;
import net.pterodactylus.util.collection.TimedMap;
-import net.pterodactylus.util.filter.Filter;
-import net.pterodactylus.util.filter.Filters;
+import net.pterodactylus.util.collection.filter.Filter;
+import net.pterodactylus.util.collection.filter.Filters;
+import net.pterodactylus.util.collection.mapper.Mapper;
+import net.pterodactylus.util.collection.mapper.Mappers;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.number.Numbers;
import net.pterodactylus.util.template.Template;
/** Short-term cache. */
private final Cache<List<Phrase>, Set<Hit<Post>>> hitCache = new MemoryCache<List<Phrase>, Set<Hit<Post>>>(new ValueRetriever<List<Phrase>, Set<Hit<Post>>>() {
+ @Override
@SuppressWarnings("synthetic-access")
public CacheItem<Set<Hit<Post>>> retrieve(List<Phrase> phrases) throws CacheException {
Set<Post> posts = new HashSet<Post>();
* @return The score of the expression
*/
private double calculateScore(List<Phrase> phrases, String expression) {
- logger.log(Level.FINEST, "Calculating Score for “%s”…", expression);
+ logger.log(Level.FINEST, String.format("Calculating Score for “%s”…", expression));
double optionalHits = 0;
double requiredHits = 0;
int forbiddenHits = 0;
}
score += Math.pow(1 - position / (double) expression.length(), 2);
index = position + phraseString.length();
- logger.log(Level.FINEST, "Got hit at position %d.", position);
+ logger.log(Level.FINEST, String.format("Got hit at position %d.", position));
++matches;
}
- logger.log(Level.FINEST, "Score: %f", score);
+ logger.log(Level.FINEST, String.format("Score: %f", score));
if (matches == 0) {
continue;
}
if (post.getRecipient() != null) {
postString.append(' ').append(SoneStringGenerator.NAME_GENERATOR.generateString(post.getRecipient()));
}
- for (Reply reply : Filters.filteredList(webInterface.getCore().getReplies(post), Reply.FUTURE_REPLIES_FILTER)) {
+ for (PostReply reply : Filters.filteredList(webInterface.getCore().getReplies(post), Reply.FUTURE_REPLY_FILTER)) {
postString.append(' ').append(SoneStringGenerator.NAME_GENERATOR.generateString(reply.getSone()));
postString.append(' ').append(reply.getText());
}
if (!(object instanceof Phrase)) {
return false;
}
- @SuppressWarnings("hiding")
Phrase phrase = (Phrase) object;
return (this.optionality == phrase.optionality) && this.phrase.equals(phrase.phrase);
}