X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Ffcp%2Fplugin%2FWebOfTrustPlugin.java;h=189689451e7f0cb511ac0de515d403b988064e98;hb=74fe9fe074dc290124ae270e0ab9be851c716436;hp=7e1861cacce716c41b69641c863ab90417ba4b83;hpb=cec51ec9ea3ad613345021c72bb2eae187b8639f;p=jFCPlib.git diff --git a/src/net/pterodactylus/fcp/plugin/WebOfTrustPlugin.java b/src/net/pterodactylus/fcp/plugin/WebOfTrustPlugin.java index 7e1861c..1896894 100644 --- a/src/net/pterodactylus/fcp/plugin/WebOfTrustPlugin.java +++ b/src/net/pterodactylus/fcp/plugin/WebOfTrustPlugin.java @@ -147,7 +147,7 @@ public class WebOfTrustPlugin { * @throws FcpException * if an FCP error occurs */ - public IdentityTrust getIdentityTrust(OwnIdentity ownIdentity, String identifier) throws IOException, FcpException { + public CalculatedTrust getIdentityTrust(OwnIdentity ownIdentity, String identifier) throws IOException, FcpException { Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetIdentity", "TreeOwner", ownIdentity.getIdentifier(), "Identity", identifier)); if (!replies.get("Message").equals("Identity")) { throw new FcpException("WebOfTrust Plugin did not reply with “Identity” message!"); @@ -170,7 +170,7 @@ public class WebOfTrustPlugin { } catch (NumberFormatException nfe1) { /* ignore. */ } - return new IdentityTrust(trust, score, rank); + return new CalculatedTrust(trust, score, rank); } /** @@ -226,6 +226,127 @@ public class WebOfTrustPlugin { return identities; } + /** + * Returns the identities that trust the given identity. + * + * @param identity + * The identity to get the trusters for + * @param context + * The context to get the trusters for + * @return The identities and their trust values + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public Map getTrusters(Identity identity, String context) throws IOException, FcpException { + Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetTrusters", "Identity", identity.getIdentifier(), "Context", context)); + if (!replies.get("Message").equals("Identities")) { + throw new FcpException("WebOfTrust Plugin did not reply with “Identities” message!"); + } + Map identityTrusts = new HashMap(); + for (int identityIndex = 1; replies.containsKey("Identity" + identityIndex); identityIndex++) { + String identifier = replies.get("Identity" + identityIndex); + String nickname = replies.get("Nickname" + identityIndex); + String requestUri = replies.get("RequestURI" + identityIndex); + byte trust = Byte.parseByte(replies.get("Value" + identityIndex)); + String comment = replies.get("Comment" + identityIndex); + identityTrusts.put(new Identity(identifier, nickname, requestUri), new IdentityTrust(trust, comment)); + } + return identityTrusts; + } + + /** + * Returns the identities that given identity trusts. + * + * @param identity + * The identity to get the trustees for + * @param context + * The context to get the trustees for + * @return The identities and their trust values + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public Map getTrustees(Identity identity, String context) throws IOException, FcpException { + Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetTrustees", "Identity", identity.getIdentifier(), "Context", context)); + if (!replies.get("Message").equals("Identities")) { + throw new FcpException("WebOfTrust Plugin did not reply with “Identities” message!"); + } + Map identityTrusts = new HashMap(); + for (int identityIndex = 1; replies.containsKey("Identity" + identityIndex); identityIndex++) { + String identifier = replies.get("Identity" + identityIndex); + String nickname = replies.get("Nickname" + identityIndex); + String requestUri = replies.get("RequestURI" + identityIndex); + byte trust = Byte.parseByte(replies.get("Value" + identityIndex)); + String comment = replies.get("Comment" + identityIndex); + identityTrusts.put(new Identity(identifier, nickname, requestUri), new IdentityTrust(trust, comment)); + } + return identityTrusts; + } + + /** + * Sets the trust given to the given identify by the given own identity. + * + * @param ownIdentity + * The identity that gives the trust + * @param identity + * The identity that receives the trust + * @param trust + * The trust value (ranging from {@code -100} to {@code 100} + * @param comment + * The comment for setting the trust + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public void setTrust(OwnIdentity ownIdentity, Identity identity, byte trust, String comment) throws IOException, FcpException { + Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "SetTrust", "Truster", ownIdentity.getIdentifier(), "Trustee", identity.getIdentifier(), "Value", String.valueOf(trust), "Comment", comment)); + if (!replies.get("Message").equals("TrustSet")) { + throw new FcpException("WebOfTrust Plugin did not reply with “TrustSet” message!"); + } + } + + /** + * Adds the given context to the given identity. + * + * @param ownIdentity + * The identity to add the context to + * @param context + * The context to add + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public void addContext(OwnIdentity ownIdentity, String context) throws IOException, FcpException { + Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "AddContext", "Identity", ownIdentity.getIdentifier(), "Context", context)); + if (!replies.get("Message").equals("ContextAdded")) { + throw new FcpException("WebOfTrust Plugin did not reply with “ContextAdded” message!"); + } + } + + /** + * Removes the given context from the given identity. + * + * @param ownIdentity + * The identity to remove the context from + * @param context + * The context to remove + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public void removeContext(OwnIdentity ownIdentity, String context) throws IOException, FcpException { + Map replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "RemoveContext", "Identity", ownIdentity.getIdentifier(), "Context", context)); + if (!replies.get("Message").equals("ContextRemoved")) { + throw new FcpException("WebOfTrust Plugin did not reply with “ContextRemoved” message!"); + } + } + // // PRIVATE METHODS // @@ -310,62 +431,108 @@ public class WebOfTrustPlugin { } /** - * Container that stores the trust given to an identity. + * Container for the trust given from one identity to another. * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public static class IdentityTrust { - /** The identity’s trust value. */ + /** The trust given to the identity. */ + private final byte trust; + + /** The command for the trust value. */ + private final String comment; + + /** + * Creates a new identity trust container. + * + * @param trust + * The trust given to the identity + * @param comment + * The comment for the trust value + */ + public IdentityTrust(byte trust, String comment) { + this.trust = trust; + this.comment = comment; + } + + /** + * Returns the trust value given to the identity. + * + * @return The trust value + */ + public byte getTrust() { + return trust; + } + + /** + * Returns the comment for the trust value. + * + * @return The comment for the trust value + */ + public String getComment() { + return comment; + } + + } + + /** + * Container that stores the trust that is calculated by taking all trustees + * and their trust lists into account. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + */ + public static class CalculatedTrust { + + /** The calculated trust value. */ private final Byte trust; - /** The identity’s score value. */ + /** The calculated score value. */ private final Integer score; - /** The identity’s rank. */ + /** The calculated rank. */ private final Integer rank; /** - * Creates a new identity trust container. + * Creates a new calculated trust container. * * @param trust - * The trust value of the identity + * The calculated trust value * @param score - * The score value of the identity + * The calculated score value * @param rank - * The rank of the identity + * The calculated rank of the */ - public IdentityTrust(Byte trust, Integer score, Integer rank) { + public CalculatedTrust(Byte trust, Integer score, Integer rank) { this.trust = trust; this.score = score; this.rank = rank; } /** - * Returns the trust value of this identity. + * Returns the calculated trust value. * - * @return This identity’s trust value, or {@code null} if this - * identity’s trust value is not known + * @return The calculated trust value, or {@code null} if the trust + * value is not known */ public Byte getTrust() { return trust; } /** - * Returns the score value of this identity. + * Returns the calculated score value. * - * @return This identity’s score value, or {@code null} if this - * identity’s score value is not known + * @return The calculated score value, or {@code null} if the score + * value is not known */ public Integer getScore() { return score; } /** - * Returns the rank of this identity. + * Returns the calculated rank. * - * @return This identity’s rank, or {@code null} if this identity’s rank - * is not known + * @return The calculated rank, or {@code null} if the rank is not known */ public Integer getRank() { return rank;