package commons.persistence;

import java.io.File;
import java.io.IOException;
import basics.filesystem.serializer.SerializerFileFlat;
import basics.unexpected.Failure;

public class ObjectStoreText extends ObjectStoreBase
{
public final boolean verbose = true;

public Storable<?> getPersistent(String base, Storable<?> object, String id, String state)
{
   File file = getFile((String)base, id, state);
   serializer = new SerializerFileFlat();
   try
   {
      if(!((SerializerFileFlat)serializer).openForReading(file))
         return object;
   }
   catch(Exception e)
   {
      throw new Failure(e);
   }
   try
   {
      object = load(object);
   }
   catch(Exception e)
   {
      throw new Failure(e);
   }
   try
   {
      ((SerializerFileFlat)serializer).close();
   }
   catch(Exception e)
   {
      throw new Failure(e);
   }
   return object;
}

public void makePersistent(String base, Storable<?> object, String id, String state)
{
   File file = getFile((String)base, id, state);
   serializer = new SerializerFileFlat();
   try
   {
      ((SerializerFileFlat)serializer).openForWriting(file);
   }
   catch(Exception e)
   {
      throw new Failure(e);
   }
   try
   {
      store(object);
   }
   catch(IOException e)
   {
      throw new Failure(e);
   }
   try
   {
      ((SerializerFileFlat)serializer).close();
   }
   catch(Exception e)
   {
      throw new Failure(e);
   }
}
}
