/**
   * Method to export database to CSV
   *
   * @param file The file in which to export.
   */
  public void exportToCSV(File file) {

    TopiaContext newContext = null;

    try {

      // Get all the episodes
      newContext = serviceContext.getTransaction();
      EpisodeDAO episodeDAO = EpisodesManagerDAOHelper.getEpisodeDAO(newContext);
      Collection<Episode> episodes = episodeDAO.findAll();

      log.info("Exporting : " + episodes.size() + " episodes");

      BufferedWriter writer = null;

      try {

        // Create a writer for the directory/filename.csv file
        Writer out = new FileWriter(file);

        writer = new BufferedWriter(out);

        // Write the column headers
        writer.write(
            "Show;Season;Season Number;Episode;"
                + "Episode Airing Date;Acquired;Viewed;Episode Number\n");

        // Run through all episodes
        for (Episode episode : episodes) {

          log.info("Exporting episode : " + episode.getTitle());

          // Write a line for each episode, with also the show and season infos

          // Write the show info
          writer.write(episode.getSeason().getShow().getTitle() + ";");
          // Write the season info
          writer.write(episode.getSeason().getNumber() + ";");
          // Write the episode info
          writer.write(
              episode.getTitle()
                  + ";"
                  + episode.getAiringDate()
                  + ";"
                  + episode.getAcquired()
                  + ";"
                  + episode.getViewed()
                  + ";"
                  + episode.getNumber());
          // Go to next line
          writer.write("\n");
        }

        writer.close();

      } catch (IOException ioe) {
        newContext.closeContext();
        log.error("An error occured while trying to export database to CSV", ioe);
      } finally {
        try {
          writer.close();
        } catch (IOException eee) {
          log.error("Error trying to close file");
        } catch (NullPointerException eee) {
          log.debug("Stream was not existing");
        }
      }

    } catch (TopiaException te) {
      log.error("An error occurred", te);
    } finally {
      serviceContext.closeTransaction(newContext);
    }
  }