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

import javax.swing.Icon;

/**
 * Database information is a low cost representation of the database.  Methods
 * will be called on the EventQueue so they must return quickly.  Ideally
 * implementations will have retrived all of the information at creation.
 *
 * @author Joseph Levin <joelevin@weru.ksu.edu>
 */
public interface DatabaseInformation {

    /**
     * The name of the database is a unique string that identifies the database
     * in the system.  The name should not change.  The name must be unique to
     * the DatabaseProvider that it came from.
     * @return identifying name.
     */
    public String getName();

    /**
     * Display names are user friendly representations of the database.  Might
     * change based on user's locale or other reasons.  Should not be used to
     * identify the database in code.
     * @return user friendly name.
     */
    public String getDisplayName();

    /**
     * Optional icon for the database.  Can be used to customize the apperance
     * of the database.  Best if the database source has a unique icon so
     * users can more quickly find the database they're needing.
     * @return icon to display with database or null.
     */
    public Icon getIcon();

    /**
     *
     * @return
     */
    public String getDescription();

    /**
     *
     * @return
     */
    public String getShortDescription();
}