package net.pterodactylus.sone.web.ajax;
+import static com.fasterxml.jackson.databind.node.JsonNodeFactory.instance;
+
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.pterodactylus.sone.data.PostReply;
import net.pterodactylus.sone.web.WebInterface;
import net.pterodactylus.sone.web.page.FreenetRequest;
-import net.pterodactylus.util.json.JsonObject;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Optional;
/**
* Ajax page that returns a formatted, relative timestamp for replies or posts.
* {@inheritDoc}
*/
@Override
- protected JsonObject createJsonObject(FreenetRequest request) {
+ protected JsonReturnObject createJsonObject(FreenetRequest request) {
String allIds = request.getHttpRequest().getParam("posts");
- JsonObject postTimes = new JsonObject();
+ ObjectNode postTimes = new ObjectNode(instance);
if (allIds.length() > 0) {
String[] ids = allIds.split(",");
for (String id : ids) {
- Post post = webInterface.getCore().getPost(id);
- if (post == null) {
+ Optional<Post> post = webInterface.getCore().getPost(id);
+ if (!post.isPresent()) {
continue;
}
- JsonObject postTime = new JsonObject();
- Time time = getTime(post.getTime());
+ ObjectNode postTime = new ObjectNode(instance);
+ Time time = getTime(post.get().getTime());
postTime.put("timeText", time.getText());
postTime.put("refreshTime", TimeUnit.MILLISECONDS.toSeconds(time.getRefresh()));
synchronized (dateFormat) {
- postTime.put("tooltip", dateFormat.format(new Date(post.getTime())));
+ postTime.put("tooltip", dateFormat.format(new Date(post.get().getTime())));
}
postTimes.put(id, postTime);
}
}
- JsonObject replyTimes = new JsonObject();
+ ObjectNode replyTimes = new ObjectNode(instance);
allIds = request.getHttpRequest().getParam("replies");
if (allIds.length() > 0) {
String[] ids = allIds.split(",");
for (String id : ids) {
- PostReply reply = webInterface.getCore().getPostReply(id, false);
- if (reply == null) {
+ Optional<PostReply> reply = webInterface.getCore().getPostReply(id);
+ if (!reply.isPresent()) {
continue;
}
- JsonObject replyTime = new JsonObject();
- Time time = getTime(reply.getTime());
+ ObjectNode replyTime = new ObjectNode(instance);
+ Time time = getTime(reply.get().getTime());
replyTime.put("timeText", time.getText());
replyTime.put("refreshTime", TimeUnit.MILLISECONDS.toSeconds(time.getRefresh()));
synchronized (dateFormat) {
- replyTime.put("tooltip", dateFormat.format(new Date(reply.getTime())));
+ replyTime.put("tooltip", dateFormat.format(new Date(reply.get().getTime())));
}
replyTimes.put(id, replyTime);
}
text = webInterface.getL10n().getString("View.Time.AWeekAgo");
refresh = TimeUnit.DAYS.toMillis(1);
} else if (age < TimeUnit.DAYS.toMillis(28)) {
- text = webInterface.getL10n().getString("View.Time.XWeeksAgo", "week", String.valueOf((TimeUnit.MILLISECONDS.toHours(age) + 84) / 24));
+ text = webInterface.getL10n().getString("View.Time.XWeeksAgo", "week", String.valueOf((TimeUnit.MILLISECONDS.toHours(age) + 84) / (7 * 24)));
refresh = TimeUnit.DAYS.toMillis(1);
} else if (age < TimeUnit.DAYS.toMillis(42)) {
text = webInterface.getL10n().getString("View.Time.AMonthAgo");