Fix calculation of project size.
[jSite.git] / src / de / todesbaum / jsite / application / Freenet7Interface.java
index 2bdff65..78250b2 100644 (file)
@@ -1,6 +1,5 @@
 /*
- * jSite - 
- * Copyright (C) 2006 David Roden
+ * jSite - Freenet7Interface.java - Copyright © 2006–2012 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
@@ -28,54 +27,102 @@ import de.todesbaum.util.freenet.fcp2.Message;
 import de.todesbaum.util.freenet.fcp2.Node;
 
 /**
+ * Interface for freenet-related operations.
+ *
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
  */
 public class Freenet7Interface {
 
+       /** Random number to differentiate several jSites. */
+       private static final int number = (int) (Math.random() * Integer.MAX_VALUE);
+
+       /** Counter. */
        private static int counter = 0;
 
+       /** The node to connect to. */
        private Node node;
+
+       /** The connection to the node. */
        private Connection connection;
 
+       /**
+        * Sets the hostname of the node. The default port for FCP2 connections ({@link Node#DEFAULT_PORT})
+        * is used.
+        *
+        * @param hostname
+        *            The hostname of the node
+        */
        public void setNodeAddress(String hostname) {
                node = new Node(hostname);
-               connection = new Connection(node, "connection-" + counter++);
+               connection = new Connection(node, "jSite-" + number + "-connection-" + counter++);
        }
 
+       /**
+        * Sets the hostname and the port of the node.
+        *
+        * @param hostname
+        *            The hostname of the node
+        * @param port
+        *            The port number of the node
+        */
        public void setNodeAddress(String hostname, int port) {
                node = new Node(hostname, port);
-               connection = new Connection(node, "connection-" + counter++);
+               connection = new Connection(node, "jSite-" + number + "-connection-" + counter++);
        }
-       
+
+       /**
+        * Sets hostname and port from the given node.
+        *
+        * @param node
+        *            The node to get the hostname and port from
+        */
        public void setNode(de.todesbaum.jsite.application.Node node) {
                if (node != null) {
                        this.node = new Node(node.getHostname(), node.getPort());
-                       connection = new Connection(node, "connection-" + counter++);
+                       connection = new Connection(node, "jSite-" + number + "-connection-" + counter++);
                } else {
                        this.node = null;
                        connection = null;
                }
        }
-       
+
+       /**
+        * Removes the current node from the interface.
+        */
        public void removeNode() {
                node = null;
                connection = null;
        }
 
        /**
-        * @return Returns the node.
+        * Returns the node this interface is connecting to.
+        *
+        * @return The node
         */
        public Node getNode() {
                return node;
        }
 
        /**
-        * @return Returns the connection.
+        * Creates a new connection to the current node with the given identifier.
+        *
+        * @param identifier
+        *            The identifier of the connection
+        * @return The connection to the node
         */
        public Connection getConnection(String identifier) {
                return new Connection(node, identifier);
        }
 
+       /**
+        * Checks whether the current node is connected. If the node is not
+        * connected, a connection will be tried.
+        *
+        * @return <code>true</code> if the node is connected, <code>false</code>
+        *         otherwise
+        * @throws IOException
+        *             if an I/O error occurs communicating with the node
+        */
        public boolean isNodePresent() throws IOException {
                if (!connection.isConnected()) {
                        return connection.connect();
@@ -83,9 +130,18 @@ public class Freenet7Interface {
                return true;
        }
 
+       /**
+        * Generates an SSK key pair.
+        *
+        * @return An array of strings, the first one being the generated private
+        *         (insert) URI and the second one being the generated public
+        *         (request) URI
+        * @throws IOException
+        *             if an I/O error occurs communicating with the node
+        */
        public String[] generateKeyPair() throws IOException {
                if (!isNodePresent()) {
-                       return null;
+                       throw new IOException("Node is offline.");
                }
                GenerateSSK generateSSK = new GenerateSSK();
                Client client = new Client(connection, generateSSK);
@@ -94,6 +150,8 @@ public class Freenet7Interface {
        }
 
        /**
+        * Checks whether the interface has already been configured with a node.
+        *
         * @return <code>true</code> if this interface already has a node set,
         *         <code>false</code> otherwise
         */