X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2FViewSonePage.java;h=f2c9c91ebd010999111976e99d5fa16e9b922fc4;hp=830a394ac3cf8bbf2cb1e5fc1ad7dec2b2288ce0;hb=9acbc5bdec4ccb752e0856a501568b0bb6161579;hpb=d5efb086bee8f103cbe90c7a953ffbb7ff27b689 diff --git a/src/main/java/net/pterodactylus/sone/web/ViewSonePage.java b/src/main/java/net/pterodactylus/sone/web/ViewSonePage.java index 830a394..f2c9c91 100644 --- a/src/main/java/net/pterodactylus/sone/web/ViewSonePage.java +++ b/src/main/java/net/pterodactylus/sone/web/ViewSonePage.java @@ -1,5 +1,5 @@ /* - * Sone - ViewSonePage.java - Copyright © 2010–2013 David Roden + * Sone - ViewSonePage.java - Copyright © 2010–2016 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 @@ -17,6 +17,8 @@ package net.pterodactylus.sone.web; +import static net.pterodactylus.sone.utils.NumberParsers.parseInt; + import java.net.URI; import java.util.ArrayList; import java.util.Collections; @@ -36,7 +38,6 @@ import net.pterodactylus.util.template.Template; import net.pterodactylus.util.template.TemplateContext; import com.google.common.base.Optional; -import com.google.common.primitives.Ints; /** * Lets the user browser another Sone. @@ -67,9 +68,9 @@ public class ViewSonePage extends SoneTemplatePage { @Override protected String getPageTitle(FreenetRequest request) { String soneId = request.getHttpRequest().getParam("sone"); - Sone sone = webInterface.getCore().getSone(soneId, false); - if ((sone != null) && (sone.getTime() > 0)) { - String soneName = SoneAccessor.getNiceName(sone); + Optional sone = webInterface.getCore().getSone(soneId); + if (sone.isPresent()) { + String soneName = SoneAccessor.getNiceName(sone.get()); return soneName + " - " + webInterface.getL10n().getString("Page.ViewSone.Title"); } return webInterface.getL10n().getString("Page.ViewSone.Page.TitleWithoutSone"); @@ -79,29 +80,28 @@ public class ViewSonePage extends SoneTemplatePage { * {@inheritDoc} */ @Override - protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException { - super.processTemplate(request, templateContext); + protected void handleRequest(FreenetRequest request, TemplateContext templateContext) throws RedirectException { String soneId = request.getHttpRequest().getParam("sone"); - Sone sone = webInterface.getCore().getSone(soneId, false); - templateContext.set("sone", sone); + Optional sone = webInterface.getCore().getSone(soneId); + templateContext.set("sone", sone.orNull()); templateContext.set("soneId", soneId); - if (sone == null) { + if (!sone.isPresent()) { return; } - List sonePosts = sone.getPosts(); - sonePosts.addAll(webInterface.getCore().getDirectedPosts(sone)); - Collections.sort(sonePosts, Post.TIME_COMPARATOR); - Pagination postPagination = new Pagination(sonePosts, webInterface.getCore().getPreferences().getPostsPerPage()).setPage(Optional.fromNullable(Ints.tryParse(request.getHttpRequest().getParam("postPage"))).or(0)); + List sonePosts = sone.get().getPosts(); + sonePosts.addAll(webInterface.getCore().getDirectedPosts(sone.get().getId())); + Collections.sort(sonePosts, Post.NEWEST_FIRST); + Pagination postPagination = new Pagination(sonePosts, webInterface.getCore().getPreferences().getPostsPerPage()).setPage(parseInt(request.getHttpRequest().getParam("postPage"), 0)); templateContext.set("postPagination", postPagination); templateContext.set("posts", postPagination.getItems()); - Set replies = sone.getReplies(); + Set replies = sone.get().getReplies(); final Map> repliedPosts = new HashMap>(); for (PostReply reply : replies) { - Post post = reply.getPost(); - if (repliedPosts.containsKey(post) || sone.equals(post.getSone()) || (sone.equals(post.getRecipient()))) { + Optional post = reply.getPost(); + if (!post.isPresent() || repliedPosts.containsKey(post.get()) || sone.get().equals(post.get().getSone()) || (sone.get().getId().equals(post.get().getRecipientId().orNull()))) { continue; } - repliedPosts.put(post, webInterface.getCore().getReplies(post)); + repliedPosts.put(post.get(), webInterface.getCore().getReplies(post.get().getId())); } List posts = new ArrayList(repliedPosts.keySet()); Collections.sort(posts, new Comparator() { @@ -113,7 +113,7 @@ public class ViewSonePage extends SoneTemplatePage { }); - Pagination repliedPostPagination = new Pagination(posts, webInterface.getCore().getPreferences().getPostsPerPage()).setPage(Optional.fromNullable(Ints.tryParse(request.getHttpRequest().getParam("repliedPostPage"))).or(0)); + Pagination repliedPostPagination = new Pagination(posts, webInterface.getCore().getPreferences().getPostsPerPage()).setPage(parseInt(request.getHttpRequest().getParam("repliedPostPage"), 0)); templateContext.set("repliedPostPagination", repliedPostPagination); templateContext.set("repliedPosts", repliedPostPagination.getItems()); }