package javacodebook.io.randomaccess;

import java.io.*;

/**
 * Jeder Eintrag im RandomAccessFile ist ein DataEntry, der selbst weiss,
 * in welchem Format seine Daten gespeichert und gelesen werden sollen.
 * Dazu werden die Methoden writeData() und readData() verwendet, die von
 * den entsprechenden Methoden in der Klasse FileManager aufgerufen werden.
 * Um das verwendete RandomAccessFile-Objekt vor unbeabsichtigtem Schliessen
 * oder Positionsänderungen zu schützen, werden nur die Schnittstellen
 * DataOutput und DataInput verwendet, die die eigentlichen Schreibmethoden
 * enthalten. Damit kann ein DataEntry alle relevanten Operationen ausführen.
 */
public interface DataEntry extends Cloneable{

    public void writeData(DataOutput out) throws IOException;

    public void readData(DataInput in) throws IOException;

    public String getSearchKey();

    public int getMaxSize();

    public Object clone();

    public void clear();
}