// Path: src/log/Logger.java
// public class Logger
// {
//     private static final String    infoKey  = "INFO";
//     private static final String    errorKey = "ERROR";
// 
//     private static final Printer   out      = new Printer();
// 
//     public static SimpleDateFormat sdf      = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// 
//     private static String getCallingClass()
//     {
//         final Throwable t = new Throwable();
//         final StackTraceElement methodCaller = t.getStackTrace()[3];
//         String filename = methodCaller.getFileName();
//         return filename.substring(0, filename.lastIndexOf('.'));
//     }
// 
//     private static String baseLogMessage(String key, String msg)
//     {
//         return sdf.format(new Date()) + " [" + key + "] [" + getCallingClass() + "] " + msg;
//     }
// 
//     public static void traceINFO(String msg)
//     {
//         out.println(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoNewLine(String msg)
//     {
//         out.print(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoBaseLine(String msg)
//     {
//         out.println(msg);
//     }
// 
//     public static void traceERROR(String msg)
//     {
//         out.println(baseLogMessage(errorKey, msg));
//     }
// 
//     public static void traceINFO(int level, long[] array)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         sBuilder.append(level + " : ");
//         for (int i = 0; i < array.length; i++)
//         {
//             if (i == array.length - 1)
//             {
// 
//                 sBuilder.append(array[i]);
//             }
//             else
//             {
//                 sBuilder.append(array[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceINFO(String... msgs)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         for (int i = 0; i < msgs.length; i++)
//         {
//             if (i == msgs.length - 1)
//             {
// 
//                 sBuilder.append(msgs[i]);
//             }
//             else
//             {
//                 sBuilder.append(msgs[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceERROR(Exception e)
//     {
//         if (e != null)
//         {
//             out.println(baseLogMessage(errorKey, e.getMessage()));
//             e.printStackTrace(System.out);
//         }
//     }
// 
//     public static void endLogging()
//     {
//         out.close();
//     }
// }
// 
// Path: src/run/main/App.java
// public class App
// {
//     public static void main(String[] args)
//     {
//         start();
//         stop();
//     }
// 
//     public static void start()
//     {
//         new DeleteAdMailCleaner().run();
//         new AdRetrieveID().run();
//         new AdPublisher().run();
//         new AdRepublisher().run();
//         new MonitoringTask().run();
//     }
//     
//     public static void stop()
//     {
//     	Logger.endLogging();
//     }
// 
//     public static void restart()
//     {
//         Client.reset();
//         start();
//     }
// 
//     public static void kill()
//     {
//         kill(null);
//     }
// 
//     public static void kill(Exception e)
//     {
//         Logger.traceERROR(e);
//         Logger.traceERROR("Killing the app...");
//         System.exit(-1);
//     }
// }


import log.Logger;
import run.main.App;

package persistence;


public class PersistedObject
{

    @Override
    public String toString()
    {
        return "PersistedObject [" + (id != null ? "id=" + id + ", " : "") + (hash != null ? "hash=" + hash : "") + "]";
    }

    public PersistedObject()
    {
    }

    public PersistedObject(String id, String hash)
    {
        super();
        this.id = id;

        if (hash.length() != 32 && hash.length() != 31)
        {

// Path: src/log/Logger.java
// public class Logger
// {
//     private static final String    infoKey  = "INFO";
//     private static final String    errorKey = "ERROR";
// 
//     private static final Printer   out      = new Printer();
// 
//     public static SimpleDateFormat sdf      = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// 
//     private static String getCallingClass()
//     {
//         final Throwable t = new Throwable();
//         final StackTraceElement methodCaller = t.getStackTrace()[3];
//         String filename = methodCaller.getFileName();
//         return filename.substring(0, filename.lastIndexOf('.'));
//     }
// 
//     private static String baseLogMessage(String key, String msg)
//     {
//         return sdf.format(new Date()) + " [" + key + "] [" + getCallingClass() + "] " + msg;
//     }
// 
//     public static void traceINFO(String msg)
//     {
//         out.println(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoNewLine(String msg)
//     {
//         out.print(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoBaseLine(String msg)
//     {
//         out.println(msg);
//     }
// 
//     public static void traceERROR(String msg)
//     {
//         out.println(baseLogMessage(errorKey, msg));
//     }
// 
//     public static void traceINFO(int level, long[] array)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         sBuilder.append(level + " : ");
//         for (int i = 0; i < array.length; i++)
//         {
//             if (i == array.length - 1)
//             {
// 
//                 sBuilder.append(array[i]);
//             }
//             else
//             {
//                 sBuilder.append(array[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceINFO(String... msgs)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         for (int i = 0; i < msgs.length; i++)
//         {
//             if (i == msgs.length - 1)
//             {
// 
//                 sBuilder.append(msgs[i]);
//             }
//             else
//             {
//                 sBuilder.append(msgs[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceERROR(Exception e)
//     {
//         if (e != null)
//         {
//             out.println(baseLogMessage(errorKey, e.getMessage()));
//             e.printStackTrace(System.out);
//         }
//     }
// 
//     public static void endLogging()
//     {
//         out.close();
//     }
// }
// 
// Path: src/run/main/App.java
// public class App
// {
//     public static void main(String[] args)
//     {
//         start();
//         stop();
//     }
// 
//     public static void start()
//     {
//         new DeleteAdMailCleaner().run();
//         new AdRetrieveID().run();
//         new AdPublisher().run();
//         new AdRepublisher().run();
//         new MonitoringTask().run();
//     }
//     
//     public static void stop()
//     {
//     	Logger.endLogging();
//     }
// 
//     public static void restart()
//     {
//         Client.reset();
//         start();
//     }
// 
//     public static void kill()
//     {
//         kill(null);
//     }
// 
//     public static void kill(Exception e)
//     {
//         Logger.traceERROR(e);
//         Logger.traceERROR("Killing the app...");
//         System.exit(-1);
//     }
// }


// Path: src/persistence/PersistedObject.java
import log.Logger;
import run.main.App;

package persistence;


public class PersistedObject
{

    @Override
    public String toString()
    {
        return "PersistedObject [" + (id != null ? "id=" + id + ", " : "") + (hash != null ? "hash=" + hash : "") + "]";
    }

    public PersistedObject()
    {
    }

    public PersistedObject(String id, String hash)
    {
        super();
        this.id = id;

        if (hash.length() != 32 && hash.length() != 31)
        {

            Logger.traceERROR("This is not a correct hash : " + hash + ".");
