package net.pterodactylus.sone.web.ajax;
-import java.io.StringWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.template.SoneAccessor;
import net.pterodactylus.sone.web.WebInterface;
-import net.pterodactylus.util.io.Closer;
import net.pterodactylus.util.json.JsonArray;
import net.pterodactylus.util.json.JsonObject;
import net.pterodactylus.util.notify.Notification;
-import net.pterodactylus.util.template.Template;
-import net.pterodactylus.util.template.TemplateException;
/**
* The “get status” AJAX handler returns all information that is necessary to
/** Date formatter. */
private static final DateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy, HH:mm:ss");
- /** The template to render posts. */
- private final Template postTemplate;
-
- /** The template to render replies. */
- private final Template replyTemplate;
-
/**
* Creates a new “get status” AJAX handler.
*
* @param webInterface
* The Sone web interface
- * @param postTemplate
- * The template to render for posts
- * @param replyTemplate
- * The template to render for replies
*/
- public GetStatusAjaxPage(WebInterface webInterface, Template postTemplate, Template replyTemplate) {
+ public GetStatusAjaxPage(WebInterface webInterface) {
super("ajax/getStatus.ajax", webInterface);
- this.postTemplate = postTemplate;
- this.replyTemplate = replyTemplate;
}
/**
jsonRemovedNotifications.add(createJsonNotification(notification));
}
/* load new posts. */
- postTemplate.set("currentSone", getCurrentSone(request.getToadletContext()));
Set<Post> newPosts = webInterface.getNewPosts();
JsonArray jsonPosts = new JsonArray();
for (Post post : newPosts) {
- jsonPosts.add(createJsonPost(post));
+ jsonPosts.add(post.getId());
}
/* load new replies. */
- replyTemplate.set("currentSone", getCurrentSone(request.getToadletContext()));
Set<Reply> newReplies = webInterface.getNewReplies();
JsonArray jsonReplies = new JsonArray();
for (Reply reply : newReplies) {
- jsonReplies.add(createJsonReply(reply));
+ jsonReplies.add(reply.getId());
}
return createSuccessJsonObject().put("sones", jsonSones).put("notifications", jsonNotifications).put("removedNotifications", jsonRemovedNotifications).put("newPosts", jsonPosts).put("newReplies", jsonReplies);
}
}
/**
- * Creates a JSON object from the given post. The JSON object will only
- * contain the ID of the post, its time, and its rendered HTML code.
- *
- * @param post
- * The post to create a JSON object from
- * @return The JSON representation of the post
- */
- private JsonObject createJsonPost(Post post) {
- JsonObject jsonPost = new JsonObject();
- jsonPost.put("id", post.getId());
- jsonPost.put("time", post.getTime());
- StringWriter stringWriter = new StringWriter();
- postTemplate.set("post", post);
- try {
- postTemplate.render(stringWriter);
- } catch (TemplateException te1) {
- /* TODO - shouldn’t happen. */
- } finally {
- Closer.close(stringWriter);
- }
- return jsonPost.put("html", stringWriter.toString());
- }
-
- /**
- * Creates a JSON object from the given reply. The JSON object will only
- * contain the ID of the reply, the ID of its post, its time, and its
- * rendered HTML code.
- *
- * @param reply
- * The reply to create a JSON object from
- * @return The JSON representation of the reply
- */
- private JsonObject createJsonReply(Reply reply) {
- JsonObject jsonPost = new JsonObject();
- jsonPost.put("postId", reply.getPost().getId());
- jsonPost.put("id", reply.getId());
- jsonPost.put("time", reply.getTime());
- StringWriter stringWriter = new StringWriter();
- replyTemplate.set("reply", reply);
- try {
- replyTemplate.render(stringWriter);
- } catch (TemplateException te1) {
- /* TODO - shouldn’t happen. */
- } finally {
- Closer.close(stringWriter);
- }
- return jsonPost.put("html", stringWriter.toString());
- }
-
- /**
* Creates a JSON object from the given notification.
*
* @param notification