// Path: src/dosna/notification/Notification.java
// public class Notification
// {
// 
//     private final KademliaId key;
//     private final String notification;
// 
//     /**
//      * Create a new notification
//      *
//      * @param key          The key of the content this notification is for
//      * @param notification The Notification itself.
//      */
//     public Notification(KademliaId key, String notification)
//     {
//         this.key = key;
//         this.notification = notification;
//     }
// 
//     public KademliaId getContentKey()
//     {
//         return this.key;
//     }
// 
//     public String getNotification()
//     {
//         return this.notification;
//     }
// 
//     @Override
//     public String toString()
//     {
//         StringBuilder sb = new StringBuilder("Notification: ");
// 
//         sb.append("[Text: ");
//         sb.append(notification);
//         sb.append("]");
// 
//         return sb.toString();
//     }
// }
// 
// Path: src/dosna/notification/NotificationBox.java
// public class NotificationBox extends DOSNAContent
// {
// 
//     public final static String TYPE = "NotificationBox";
// 
//     private List<Notification> notifications;
//     private String ownerId;
// 
//     private KademliaId key;
// 
//     
//     {
//         notifications = new ArrayList<>();
//     }
// 
//     public NotificationBox()
//     {
// 
//     }
// 
//     /**
//      * Setup the Notification Box
//      *
//      * @param owner The owner of this notification box
//      */
//     public NotificationBox(final Actor owner)
//     {
//         this(owner.getId());
//     }
// 
//     /**
//      * Setup the Notification Box
//      *
//      * @param ownerId The ID of the owner of this notification box
//      */
//     public NotificationBox(final String ownerId)
//     {
//         this.ownerId = ownerId;
//         this.generateNodeId();
//     }
// 
//     private void generateNodeId()
//     {
//         byte[] keyData = null;
//         try
//         {
//             keyData = HashCalculator.sha1Hash(this.ownerId + "NotificationBox");
//         }
//         catch (NoSuchAlgorithmException ex)
//         {
//             /*@todo try some other hash here */
//             System.err.println("SHA-1 Hash algorithm isn't existent.");
//         }
//         this.key = new KademliaId(keyData);
//     }
// 
//     /**
//      * Adds a new notification to the notification box
//      *
//      * @param n the notification to add
//      */
//     public void addNotification(Notification n)
//     {
//         this.notifications.add(n);
//         this.setUpdated();
//     }
// 
//     /**
//      * @return All notifications in this notifications box
//      */
//     public List<Notification> getNotifications()
//     {
//         return this.notifications;
//     }
// 
//     /**
//      * Deletes all notifications from the notification box.
//      */
//     public void emptyBox()
//     {
//         this.notifications = new ArrayList<>();
//         this.setUpdated();
//     }
// 
//     /**
//      * Check whether this box has any notifications.
//      *
//      * @return
//      */
//     public boolean hasNotifications()
//     {
//         return !this.notifications.isEmpty();
//     }
// 
//     @Override
//     public KademliaId getKey()
//     {
//         return this.key;
//     }
// 
//     @Override
//     public String getType()
//     {
//         return TYPE;
//     }
// 
//     @Override
//     public String getOwnerId()
//     {
//         return this.ownerId;
//     }
// 
//     @Override
//     public String toString()
//     {
//         StringBuilder sb = new StringBuilder("NotificationBox: ");
// 
//         sb.append("[Owner: ");
//         sb.append(ownerId);
//         sb.append("");
// 
//         for (Notification n : this.notifications)
//         {
//             sb.append(n);
//             sb.append(" ; ");
//         }
// 
//         sb.append("]");
// 
//         return sb.toString();
//     }
// 
// }


import dosna.notification.Notification;
import dosna.notification.NotificationBox;
import java.io.IOException;
import kademlia.JKademliaNode;
import kademlia.dht.GetParameter;
import kademlia.dht.KademliaStorageEntry;
import kademlia.exceptions.ContentNotFoundException;
import kademlia.node.KademliaId;
package dosna.simulations;


/**
 * Just testing notification box handling.
 *
 * @author Joshua Kissoon
 * @since 20140504
 */
public class NotificationBoxSimulation
{

    public NotificationBoxSimulation()
    {
        try
        {
            JKademliaNode kad = new JKademliaNode("Joshua", new KademliaId("JOSHUAJOSHUAJOSHUAJO"), 3445);
            JKademliaNode kad2 = new JKademliaNode("Joshua2", new KademliaId("JOSHUAJOSHUAJOSHUAJK"), 3446);

            kad.bootstrap(kad2.getNode());

// Path: src/dosna/notification/Notification.java
// public class Notification
// {
// 
//     private final KademliaId key;
//     private final String notification;
// 
//     /**
//      * Create a new notification
//      *
//      * @param key          The key of the content this notification is for
//      * @param notification The Notification itself.
//      */
//     public Notification(KademliaId key, String notification)
//     {
//         this.key = key;
//         this.notification = notification;
//     }
// 
//     public KademliaId getContentKey()
//     {
//         return this.key;
//     }
// 
//     public String getNotification()
//     {
//         return this.notification;
//     }
// 
//     @Override
//     public String toString()
//     {
//         StringBuilder sb = new StringBuilder("Notification: ");
// 
//         sb.append("[Text: ");
//         sb.append(notification);
//         sb.append("]");
// 
//         return sb.toString();
//     }
// }
// 
// Path: src/dosna/notification/NotificationBox.java
// public class NotificationBox extends DOSNAContent
// {
// 
//     public final static String TYPE = "NotificationBox";
// 
//     private List<Notification> notifications;
//     private String ownerId;
// 
//     private KademliaId key;
// 
//     
//     {
//         notifications = new ArrayList<>();
//     }
// 
//     public NotificationBox()
//     {
// 
//     }
// 
//     /**
//      * Setup the Notification Box
//      *
//      * @param owner The owner of this notification box
//      */
//     public NotificationBox(final Actor owner)
//     {
//         this(owner.getId());
//     }
// 
//     /**
//      * Setup the Notification Box
//      *
//      * @param ownerId The ID of the owner of this notification box
//      */
//     public NotificationBox(final String ownerId)
//     {
//         this.ownerId = ownerId;
//         this.generateNodeId();
//     }
// 
//     private void generateNodeId()
//     {
//         byte[] keyData = null;
//         try
//         {
//             keyData = HashCalculator.sha1Hash(this.ownerId + "NotificationBox");
//         }
//         catch (NoSuchAlgorithmException ex)
//         {
//             /*@todo try some other hash here */
//             System.err.println("SHA-1 Hash algorithm isn't existent.");
//         }
//         this.key = new KademliaId(keyData);
//     }
// 
//     /**
//      * Adds a new notification to the notification box
//      *
//      * @param n the notification to add
//      */
//     public void addNotification(Notification n)
//     {
//         this.notifications.add(n);
//         this.setUpdated();
//     }
// 
//     /**
//      * @return All notifications in this notifications box
//      */
//     public List<Notification> getNotifications()
//     {
//         return this.notifications;
//     }
// 
//     /**
//      * Deletes all notifications from the notification box.
//      */
//     public void emptyBox()
//     {
//         this.notifications = new ArrayList<>();
//         this.setUpdated();
//     }
// 
//     /**
//      * Check whether this box has any notifications.
//      *
//      * @return
//      */
//     public boolean hasNotifications()
//     {
//         return !this.notifications.isEmpty();
//     }
// 
//     @Override
//     public KademliaId getKey()
//     {
//         return this.key;
//     }
// 
//     @Override
//     public String getType()
//     {
//         return TYPE;
//     }
// 
//     @Override
//     public String getOwnerId()
//     {
//         return this.ownerId;
//     }
// 
//     @Override
//     public String toString()
//     {
//         StringBuilder sb = new StringBuilder("NotificationBox: ");
// 
//         sb.append("[Owner: ");
//         sb.append(ownerId);
//         sb.append("");
// 
//         for (Notification n : this.notifications)
//         {
//             sb.append(n);
//             sb.append(" ; ");
//         }
// 
//         sb.append("]");
// 
//         return sb.toString();
//     }
// 
// }


// Path: src/dosna/simulations/NotificationBoxSimulation.java
import dosna.notification.Notification;
import dosna.notification.NotificationBox;
import java.io.IOException;
import kademlia.JKademliaNode;
import kademlia.dht.GetParameter;
import kademlia.dht.KademliaStorageEntry;
import kademlia.exceptions.ContentNotFoundException;
import kademlia.node.KademliaId;

package dosna.simulations;


/**
 * Just testing notification box handling.
 *
 * @author Joshua Kissoon
 * @since 20140504
 */
public class NotificationBoxSimulation
{

    public NotificationBoxSimulation()
    {
        try
        {
            JKademliaNode kad = new JKademliaNode("Joshua", new KademliaId("JOSHUAJOSHUAJOSHUAJO"), 3445);
            JKademliaNode kad2 = new JKademliaNode("Joshua2", new KademliaId("JOSHUAJOSHUAJOSHUAJK"), 3446);

            kad.bootstrap(kad2.getNode());

            NotificationBox nb = new NotificationBox("Joshua");