/*
 * $Id: StoreKeeper.java,v 1.6 2003/12/24 10:12:04 bigmac Exp $
 *
 * Copyright (c) Siemens AG 2008 
 *           (c) Universität Paderborn 2008 
 * Licensed under EUPL 1.1. 
 *
 * $Log: StoreKeeper.java,v $
 * Revision 1.6  2003/12/24 10:12:04  bigmac
 * Projektweite Import-Optimierung
 *
 * Revision 1.5  2003/11/21 14:47:36  koppy
 * Um die Möglichkeit, "Archivleichen" zu entfernen, erweitert
 *
 * Revision 1.4  2003/11/14 15:37:43  jonyp
 * *** empty log message ***
 *
 * Revision 1.3  2003/03/12 00:34:20  koppy
 * Möglichkeit den StoreKeeper dynamisch zu setzen
 *
 * Revision 1.2  2002/11/12 15:33:03  koppy
 * Behandlung von Streams hinzugefügt
 *
 * Revision 1.1  2002/10/21 14:36:15  bigmac
 * *** empty log message ***
 *
 * Revision 1.1  2002/04/05 15:35:22  koppy
 * initial revision
 *
 */

package vkc.server.archive;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

/**
 * Schnittstelle für die Implementierung eines Datenverwalters
 * 
 * @author koppy
 */
public interface StoreKeeper {

    /**
     * Setzt das Verzeichnis für diesen Datenverwalter
     * @param storageDir
     */
    public void setStorageDir( File storageDir );

    /**
     * Initialisierung
     * @throws IOException
     */
    public void init() throws IOException;

    /**
     * Bindet Byte-Array an Datei mit Namen id
     *
     * @param data - Byte-Array
     * @param   id - Dateiname
     * @author koppy
     */
    public abstract void insert( byte [] data, String id )
	throws Exception;

    /**
     * Löscht Datei mit Namen id
     *
     * @param   id - Dateiname
     * @author koppy
     */
    public abstract void delete( String id )
	throws Exception;


    /**
     * Sucht die unter id gespeicherten Daten
     *
     * @param   id - Dateiname
     * @return falls GEFUNDEN, Datei mit Namen id
     *         sonst Verzeichnis, in welches Datei mit Namen id gehört
     * @author koppy
     */
    public abstract java.io.File search( String id )
	throws IOException;


    /**
     * Liefert das Verzeichnis, in welches id gehoert
     *
     * @param   id - Dateiname
     * @author koppy
     */
    public java.io.File getTargetDir( String id );
    
    
    /**
     * Liefert einen Iterator über alle verfügbaren IDs
     * @return Iterator über alle verfügbaren IDs (Typ:java.lang.String)
     */
    public Iterator iterator();

}











