X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParser.java;h=9fcce7a734996cdb5a9daa5862dd42ceded7f4c0;hb=616d826774d0ac43e1152ec6a4f5c3c198b95483;hp=7194b89214dcb89743c6cd615e6cba69bf26a6f9;hpb=52c5e4136f8251b504941d662dba7b2ffc33863d;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java index 7194b89..9fcce7a 100644 --- a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java +++ b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java @@ -28,9 +28,11 @@ import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.data.impl.IdOnlySone; +import net.pterodactylus.sone.database.AlbumProvider; import net.pterodactylus.sone.database.PostProvider; import net.pterodactylus.sone.database.SoneProvider; import net.pterodactylus.util.io.Closer; @@ -66,7 +68,8 @@ public class SoneTextParser implements Parser { HTTP("http://", false), HTTPS("https://", false), SONE("sone://", false), - POST("post://", false); + POST("post://", false), + ALBUM("album://", false); private final String scheme; private final boolean freenetLink; @@ -91,23 +94,14 @@ public class SoneTextParser implements Parser { } - /** The Sone provider. */ private final SoneProvider soneProvider; - - /** The post provider. */ private final PostProvider postProvider; + private final AlbumProvider albumProvider; - /** - * Creates a new freenet link parser. - * - * @param soneProvider - * The Sone provider - * @param postProvider - * The post provider - */ - public SoneTextParser(SoneProvider soneProvider, PostProvider postProvider) { + public SoneTextParser(SoneProvider soneProvider, PostProvider postProvider, AlbumProvider albumProvider) { this.soneProvider = soneProvider; this.postProvider = postProvider; + this.albumProvider = albumProvider; } // @@ -206,7 +200,17 @@ public class SoneTextParser implements Parser { if (linkType == LinkType.POST) { Optional post = postProvider.getPost(link.substring(7)); if (post.isPresent()) { - parts.add(new PostPart(post.get())); + parts.add(new PostPart(post.get(), link.substring(7).equals(post.get().getInternalId()))); + } else { + parts.add(new PlainTextPart(link)); + } + line = line.substring(link.length()); + continue; + } + if (linkType == LinkType.ALBUM) { + Optional album = albumProvider.getAlbum(link.substring(linkType.getScheme().length())); + if (album.isPresent()) { + parts.add(new AlbumPart(album.get())); } else { parts.add(new PlainTextPart(link)); }