+ return new CalculatedTrust(trust, score, rank);
+ }
+
+ /**
+ * Adds a new identity by its request URI.
+ *
+ * @param requestUri
+ * The request URI of the identity to add
+ * @return The added identity
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws FcpException
+ * if an FCP error occurs
+ */
+ public Identity addIdentity(String requestUri) throws IOException, FcpException {
+ Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "AddIdentity", "RequestURI", requestUri));
+ if (!replies.get("Message").equals("IdentityAdded")) {
+ throw new FcpException("WebOfTrust Plugin did not reply with “IdentityAdded” message!");
+ }
+ String identifier = replies.get("ID");
+ String nickname = replies.get("Nickname");
+ return new Identity(identifier, nickname, requestUri);
+ }
+
+ /**
+ * Returns identities by the given score.
+ *
+ * @param ownIdentity
+ * The own identity
+ * @param context
+ * The context to get the identities for
+ * @param positive
+ * {@code null} to return neutrally trusted identities, {@code
+ * true} to return positively trusted identities, {@code false}
+ * for negatively trusted identities
+ * @return The trusted identites
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws FcpException
+ * if an FCP error occurs
+ */
+ public Set<Identity> getIdentitesByScore(OwnIdentity ownIdentity, String context, Boolean positive) throws IOException, FcpException {
+ Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetIdentitesByScore", "TreeOwner", ownIdentity.getIdentifier(), "Context", context, "Selection", ((positive == null) ? "0" : (positive ? "+" : "-"))));
+ if (!replies.get("Message").equals("Identities")) {
+ throw new FcpException("WebOfTrust Plugin did not reply with “Identities” message!");
+ }
+ Set<Identity> identities = new HashSet<Identity>();
+ 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);
+ identities.add(new Identity(identifier, nickname, requestUri));
+ }
+ 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<Identity, IdentityTrust> getTrusters(Identity identity, String context) throws IOException, FcpException {
+ Map<String, String> 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<Identity, IdentityTrust> identityTrusts = new HashMap<Identity, IdentityTrust>();
+ 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<Identity, IdentityTrust> getTrustees(Identity identity, String context) throws IOException, FcpException {
+ Map<String, String> 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<Identity, IdentityTrust> identityTrusts = new HashMap<Identity, IdentityTrust>();
+ 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<String, String> 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<String, String> 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<String, String> 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!");
+ }