X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FFreenetLinkPart.java;h=feb83532b333bba8a96e2ccd591f56b16883f526;hb=852bb107b491884ed09a1a223c67ea05a5de73b9;hp=2efb3806dfe8aee9b860449ba99564e926ee3598;hpb=ab7fada54ed08b0a8d9ce9c606cbea29c3c3f819;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/text/FreenetLinkPart.java b/src/main/java/net/pterodactylus/sone/text/FreenetLinkPart.java index 2efb380..feb8353 100644 --- a/src/main/java/net/pterodactylus/sone/text/FreenetLinkPart.java +++ b/src/main/java/net/pterodactylus/sone/text/FreenetLinkPart.java @@ -1,5 +1,5 @@ /* - * Sone - FreenetLinkPart.java - Copyright © 2011 David Roden + * Sone - FreenetLinkPart.java - Copyright © 2011–2013 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,26 +17,89 @@ package net.pterodactylus.sone.text; +import static com.google.common.base.Objects.equal; +import static java.lang.String.format; + +import com.google.common.base.Objects; + /** - * TODO + * {@link LinkPart} implementation that stores an additional attribute: if the + * link is an SSK or USK link and the post was created by an identity that owns + * the keyspace in question. * * @author David ‘Bombe’ Roden */ public class FreenetLinkPart extends LinkPart { + /** Whether the link is trusted. */ private final boolean trusted; + /** + * Creates a new freenet link part. + * + * @param link + * The link of the part + * @param text + * The text of the part + * @param trusted + * {@code true} if the link is trusted, {@code false} otherwise + */ public FreenetLinkPart(String link, String text, boolean trusted) { this(link, text, text, trusted); } + /** + * Creates a new freenet link part. + * + * @param link + * The link of the part + * @param text + * The text of the part + * @param title + * The title of the part + * @param trusted + * {@code true} if the link is trusted, {@code false} otherwise + */ public FreenetLinkPart(String link, String text, String title, boolean trusted) { super(link, text, title); this.trusted = trusted; } + // + // ACCESSORS + // + + /** + * Returns whether the link is trusted. + * + * @return {@code true} if the link is trusted, {@code false} otherwise + */ public boolean isTrusted() { return trusted; } + @Override + public boolean isFreenetLink() { + return true; + } + + @Override + public int hashCode() { + return (getLink().hashCode() << 16) ^ (getText().hashCode() << 8 ) ^ getTitle().hashCode() ^ (isTrusted() ? -1 : 0); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof FreenetLinkPart)) { + return false; + } + FreenetLinkPart freenetLinkPart = (FreenetLinkPart) object; + return equal(getLink(), freenetLinkPart.getLink()) && equal(getText(), freenetLinkPart.getText()) && equal(getTitle(), freenetLinkPart.getTitle()) && (isTrusted() == freenetLinkPart.isTrusted()); + } + + @Override + public String toString() { + return format("FreenetLink(link=%s, text=%s, title=%s, trusted=%s)", getLink(), getText(), getTitle(), isTrusted()); + } + }