}
/**
+ * Creates a new identity.
+ *
+ * @param nickname
+ * The nickname of the new identity
+ * @param context
+ * The context for the new identity
+ * @param publishTrustList
+ * {@code true} if the new identity should publish its trust list
+ * @return The new identity
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws FcpException
+ * if an FCP error occurs
+ */
+ public OwnIdentity createIdentity(String nickname, String context, boolean publishTrustList) throws IOException, FcpException {
+ return createIdentity(nickname, context, publishTrustList, null, null);
+ }
+
+ /**
+ * Creates a new identity from the given request and insert URI.
+ *
+ * @param nickname
+ * The nickname of the new identity
+ * @param context
+ * The context for the new identity
+ * @param publishTrustList
+ * {@code true} if the new identity should publish its trust list
+ * @param requestUri
+ * The request URI of the identity
+ * @param insertUri
+ * The insert URI of the identity
+ * @return The new identity
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws FcpException
+ * if an FCP error occurs
+ */
+ public OwnIdentity createIdentity(String nickname, String context, boolean publishTrustList, String requestUri, String insertUri) throws IOException, FcpException {
+ Map<String, String> parameters = new HashMap<String, String>();
+ parameters.put("Message", "CreateIdentity");
+ parameters.put("Nickname", nickname);
+ parameters.put("Context", context);
+ parameters.put("PublishTrustList", String.valueOf(publishTrustList));
+ if ((requestUri != null) && (insertUri != null)) {
+ parameters.put("RequestURI", requestUri);
+ parameters.put("InsertURI", insertUri);
+ }
+ Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", parameters);
+ if (!replies.get("Message").equals("IdentityCreated")) {
+ throw new FcpException("WebOfTrust Plugin did not reply with “IdentityCreated” message!");
+ }
+ String identifier = replies.get("ID");
+ String newRequestUri = replies.get("RequestURI");
+ String newInsertUri = replies.get("InsertURI");
+ return new OwnIdentity(identifier, nickname, newRequestUri, newInsertUri);
+ }
+
+ /**
* Returns all own identities of the web-of-trust plugins. Almost all other
* commands require an {@link OwnIdentity} to return meaningful values.
*
return ownIdentities;
}
+ /**
+ * Returns the trust given to the identity with the given identifier by the
+ * given own identity.
+ *
+ * @param ownIdentity
+ * The own identity that is used to calculate trust values
+ * @param identifier
+ * The identifier of the identity whose trust to get
+ * @return The request identity trust
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws FcpException
+ * if an FCP error occurs
+ */
+ public CalculatedTrust getIdentityTrust(OwnIdentity ownIdentity, String identifier) throws IOException, FcpException {
+ Map<String, String> 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!");
+ }
+ Byte trust = null;
+ try {
+ trust = Byte.valueOf(replies.get("Trust"));
+ } catch (NumberFormatException nfe1) {
+ /* ignore. */
+ }
+ Integer score = null;
+ try {
+ score = Integer.valueOf(replies.get("Score"));
+ } catch (NumberFormatException nfe1) {
+ /* ignore. */
+ }
+ Integer rank = null;
+ try {
+ rank = Integer.valueOf(replies.get("Rank"));
+ } catch (NumberFormatException nfe1) {
+ /* ignore. */
+ }
+ 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;
+ }
+
+ /**
+ * 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!");
+ }
+ }
+
//
// PRIVATE METHODS
//
}
/**
+ * 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 calculated score value. */
+ private final Integer score;
+
+ /** The calculated rank. */
+ private final Integer rank;
+
+ /**
+ * Creates a new calculated trust container.
+ *
+ * @param trust
+ * The calculated trust value
+ * @param score
+ * The calculated score value
+ * @param rank
+ * The calculated rank of the
+ */
+ public CalculatedTrust(Byte trust, Integer score, Integer rank) {
+ this.trust = trust;
+ this.score = score;
+ this.rank = rank;
+ }
+
+ /**
+ * Returns the calculated trust value.
+ *
+ * @return The calculated trust value, or {@code null} if the trust
+ * value is not known
+ */
+ public Byte getTrust() {
+ return trust;
+ }
+
+ /**
+ * Returns the calculated score value.
+ *
+ * @return The calculated score value, or {@code null} if the score
+ * value is not known
+ */
+ public Integer getScore() {
+ return score;
+ }
+
+ /**
+ * Returns the calculated rank.
+ *
+ * @return The calculated rank, or {@code null} if the rank is not known
+ */
+ public Integer getRank() {
+ return rank;
+ }
+
+ }
+
+ /**
* Wrapper around a web-of-trust own identity.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>