/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ex1.database;

/**
 *
 * @author Joseph Levin <joelevin@weru.ksu.edu>
 * @param <D>
 * @param <I>
 */
public interface DatabaseProvider <D extends Database, I extends DatabaseInformation> {
    /**
     *
     * @param info DatabaseInformation identifying the database
     * @return Database for the given info.  Null if the info was not provided
     * by this DatabaseProvider.
     */
    public D getDatabase(I info);

    /**
     * Returns information on all the databases provided.  Implementations will
     * likely have to search for this information.  This will be an expensive
     * method.  Must not be called from the EventQueue.
     * @return may be null
     */
    public I[] getDatabases();
}
