Add Fingerprintable interface.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Sone.java
index a0f87b2..c145b82 100644 (file)
@@ -40,7 +40,7 @@ import freenet.keys.FreenetURI;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Sone {
+public class Sone implements Fingerprintable {
 
        /** comparator that sorts Sones by their nice name. */
        public static final Comparator<Sone> NICE_NAME_COMPARATOR = new Comparator<Sone>() {
@@ -81,6 +81,9 @@ public class Sone {
        /** The profile of this Sone. */
        private volatile Profile profile = new Profile();
 
+       /** The client used by the Sone. */
+       private volatile Client client;
+
        /** All friend Sones. */
        private final Set<String> friendSones = Collections.synchronizedSet(new HashSet<String>());
 
@@ -281,6 +284,27 @@ public class Sone {
        }
 
        /**
+        * Returns the client used by this Sone.
+        *
+        * @return The client used by this Sone, or {@code null}
+        */
+       public Client getClient() {
+               return client;
+       }
+
+       /**
+        * Sets the client used by this Sone.
+        *
+        * @param client
+        *            The client used by this Sone, or {@code null}
+        * @return This Sone (for method chaining)
+        */
+       public Sone setClient(Client client) {
+               this.client = client;
+               return this;
+       }
+
+       /**
         * Returns all friend Sones of this Sone.
         *
         * @return The friend Sones of this Sone
@@ -556,14 +580,14 @@ public class Sone {
                return this;
        }
 
+       //
+       // FINGERPRINTABLE METHODS
+       //
+
        /**
-        * Returns a fingerprint of this Sone. The fingerprint only depends on data
-        * that is actually stored when a Sone is inserted. The fingerprint can be
-        * used to detect changes in Sone data and can also be used to detect if
-        * previous changes are reverted.
-        *
-        * @return The fingerprint of this Sone
+        * {@inheritDoc}
         */
+       @Override
        public synchronized String getFingerprint() {
                StringBuilder fingerprint = new StringBuilder();
                fingerprint.append("Profile(");