Use a unique ID for posts
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 24 Jul 2015 13:39:22 +0000 (15:39 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 24 Jul 2015 18:47:51 +0000 (20:47 +0200)
src/main/java/net/pterodactylus/sone/core/Core.java
src/main/java/net/pterodactylus/sone/data/Post.java
src/main/java/net/pterodactylus/sone/data/impl/PostImpl.java
src/main/java/net/pterodactylus/sone/database/memory/MemoryPost.java
src/main/java/net/pterodactylus/sone/web/BookmarkPage.java
src/main/java/net/pterodactylus/sone/web/CreateReplyPage.java
src/main/java/net/pterodactylus/sone/web/DeletePostPage.java
src/main/java/net/pterodactylus/sone/web/LikePage.java
src/main/java/net/pterodactylus/sone/web/UnbookmarkPage.java
src/main/java/net/pterodactylus/sone/web/UnlikePage.java
src/main/resources/templates/insert/sone.xml

index d0b31d0..d442e69 100644 (file)
@@ -1476,7 +1476,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider,
                        int postCounter = 0;
                        for (Post post : sone.getPosts()) {
                                String postPrefix = sonePrefix + "/Posts/" + postCounter++;
-                               configuration.getStringValue(postPrefix + "/ID").setValue(post.getId());
+                               configuration.getStringValue(postPrefix + "/ID").setValue(post.getInternalId());
                                configuration.getStringValue(postPrefix + "/Recipient").setValue(post.getRecipientId().orNull());
                                configuration.getLongValue(postPrefix + "/Time").setValue(post.getTime());
                                configuration.getStringValue(postPrefix + "/Text").setValue(post.getText());
index 95abae6..d27d243 100644 (file)
@@ -62,6 +62,7 @@ public interface Post extends Identified {
         * @return The ID of the post
         */
        public String getId();
+       String getInternalId();
 
        /**
         * Returns whether this post has already been loaded.
@@ -144,6 +145,11 @@ public interface Post extends Identified {
                }
 
                @Override
+               public String getInternalId() {
+                       return id;
+               }
+
+               @Override
                public boolean isLoaded() {
                        return false;
                }
index 9dcd7d0..4442b3b 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.data.impl;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.database.SoneProvider;
@@ -31,6 +32,8 @@ import com.google.common.base.Optional;
  */
 public class PostImpl implements Post {
 
+       private final IdBuilder idBuilder = new IdBuilder();
+
        /** The Sone provider. */
        private final SoneProvider soneProvider;
 
@@ -86,6 +89,11 @@ public class PostImpl implements Post {
         */
        @Override
        public String getId() {
+               return idBuilder.buildId(soneId, id);
+       }
+
+       @Override
+       public String getInternalId() {
                return id;
        }
 
index 180cf6c..34e90f8 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.database.memory;
 
 import java.util.UUID;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.database.SoneProvider;
@@ -33,6 +34,8 @@ import com.google.common.base.Optional;
  */
 class MemoryPost implements Post {
 
+       private final IdBuilder idBuilder = new IdBuilder();
+
        /** The post database. */
        private final MemoryDatabase postDatabase;
 
@@ -91,6 +94,11 @@ class MemoryPost implements Post {
         */
        @Override
        public String getId() {
+               return idBuilder.buildId(soneId, id.toString());
+       }
+
+       @Override
+       public String getInternalId() {
                return id.toString();
        }
 
index c0a8907..b053b5e 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.template.Template;
@@ -53,7 +54,7 @@ public class BookmarkPage extends SoneTemplatePage {
        protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
                super.processTemplate(request, templateContext);
                if (request.getMethod() == Method.POST) {
-                       String id = request.getHttpRequest().getPartAsStringFailsafe("post", 36);
+                       String id = request.getHttpRequest().getPartAsStringFailsafe("post", IdBuilder.ID_STRING_LENGTH);
                        String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                        Optional<Post> post = webInterface.getCore().getPost(id);
                        if (post.isPresent()) {
index 55903d8..2e59de7 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.web;
 
 import com.google.common.base.Optional;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.text.TextFilter;
@@ -56,7 +57,7 @@ public class CreateReplyPage extends SoneTemplatePage {
        @Override
        protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
                super.processTemplate(request, templateContext);
-               String postId = request.getHttpRequest().getPartAsStringFailsafe("post", 36);
+               String postId = request.getHttpRequest().getPartAsStringFailsafe("post", IdBuilder.ID_STRING_LENGTH);
                String text = request.getHttpRequest().getPartAsStringFailsafe("text", 65536).trim();
                String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                if (request.getMethod() == Method.POST) {
index 5a309fa..c8e0af0 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.web;
 
 import com.google.common.base.Optional;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.template.Template;
@@ -64,7 +65,7 @@ public class DeletePostPage extends SoneTemplatePage {
                        templateContext.set("post", post.get());
                        templateContext.set("returnPage", returnPage);
                } else if (request.getMethod() == Method.POST) {
-                       String postId = request.getHttpRequest().getPartAsStringFailsafe("post", 36);
+                       String postId = request.getHttpRequest().getPartAsStringFailsafe("post", IdBuilder.ID_STRING_LENGTH);
                        String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                        Optional<Post> post = webInterface.getCore().getPost(postId);
                        if (!post.isPresent() || !post.get().getSone().isLocal()) {
index 7f08e65..30bf4f0 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.web.page.FreenetRequest;
@@ -55,7 +56,7 @@ public class LikePage extends SoneTemplatePage {
                super.processTemplate(request, templateContext);
                if (request.getMethod() == Method.POST) {
                        String type = request.getHttpRequest().getPartAsStringFailsafe("type", 16);
-                       String id = request.getHttpRequest().getPartAsStringFailsafe(type, 36);
+                       String id = request.getHttpRequest().getPartAsStringFailsafe(type, IdBuilder.ID_STRING_LENGTH);
                        String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                        Sone currentSone = getCurrentSone(request.getToadletContext());
                        if ("post".equals(type)) {
index 72ff2fc..3be06ae 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.web;
 
 import java.util.Set;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.template.Template;
@@ -55,7 +56,7 @@ public class UnbookmarkPage extends SoneTemplatePage {
        protected void processTemplate(FreenetRequest request, TemplateContext templateContext) throws RedirectException {
                super.processTemplate(request, templateContext);
                if (request.getMethod() == Method.POST) {
-                       String id = request.getHttpRequest().getPartAsStringFailsafe("post", 36);
+                       String id = request.getHttpRequest().getPartAsStringFailsafe("post", IdBuilder.ID_STRING_LENGTH);
                        String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                        Optional<Post> post = webInterface.getCore().getPost(id);
                        if (post.isPresent()) {
index 9254a42..16291bf 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.web;
 
+import net.pterodactylus.sone.data.IdBuilder;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.web.page.FreenetRequest;
@@ -55,7 +56,7 @@ public class UnlikePage extends SoneTemplatePage {
                super.processTemplate(request, templateContext);
                if (request.getMethod() == Method.POST) {
                        String type = request.getHttpRequest().getPartAsStringFailsafe("type", 16);
-                       String id = request.getHttpRequest().getPartAsStringFailsafe(type, 36);
+                       String id = request.getHttpRequest().getPartAsStringFailsafe(type, IdBuilder.ID_STRING_LENGTH);
                        String returnPage = request.getHttpRequest().getPartAsStringFailsafe("returnPage", 256);
                        Sone currentSone = getCurrentSone(request.getToadletContext());
                        if ("post".equals(type)) {
index 10e57eb..2dd9499 100644 (file)
@@ -30,7 +30,7 @@
        <posts>
                <%foreach currentSone.posts post>
                <post>
-                       <id><% post.id|xml></id>
+                       <id><% post.internalId|xml></id>
                        <recipient><%if post.recipientId.present><% post.recipientId.get|xml><%/if></recipient>
                        <time><% post.time></time>
                        <text><% post.text|xml></text>