package doc.walkthru;

import java.util.Date;
import java.util.List;

/**
 * An album by an artist.
 */
public interface Album {
  /** formats for albums */
  public enum Format { DIGITAL_LOSSLESS, DIGITAL_COMPRESSED, CD, TWELVE_INCH, FORTY_FIVE, EIGHT_TRACK, WAX_CYLINDER };
  /**
   * @return true if this album is a compilation
   */
  public boolean isCompilation();
  /**
   * @return the artist who has made this album, if null, the album is a compilation
   */
  public Performer getArtist();
  /**
   * @return the format of this album
   */
  public Format getFormat();

  /**
   * @return the title of the album
   */
  public String getTitle();
  /**
   * @return the tracks on this album
   */
  public List<Track> getTracks();
  /**
   * @return the release date for the album
   */
  public Date getReleaseDate();
}

