package org.springframework.prospring.ticket.service;

import java.util.*;

import org.springframework.prospring.ticket.dao.*;
import org.springframework.prospring.ticket.domain.*;

/**
 * Domyślna implementacja usługi EventsCalendar.
 */
public class EventsCalendarImpl implements EventsCalendar {

    // DAO którego ta usług używa do pobierania informacji z bazy danych.
    private BoxOfficeDao boxOfficeDao;

    /**
     * Returns all genres which currently have shows.
     * Zwraca wszystkie kategorie przedstawień dla jakich aktualnie są zdefinowane spektakle.
     * @return Wszystkie kategorie przedstawień dla jakich aktualnie są zdefinowane spektakle.
     */
    public List getCurrentGenres() {
        return boxOfficeDao.getCurrentGenres();
    }

    /**
     * Zwraca wszystkie zdefiniowane kategorie przedstawień.
     * @return Wszystkie kategorie przedstawień zdefiniowane w systemie.
     */
    public List getAllGenres() {
        return boxOfficeDao.getAllGenres();
    }

    /**
     * Zwraca przedstawienie o podanym identyfikatorze.
     * @param performanceId Identyfikator żądanego przedstawienia.
     * @return Przedstawienie o podanym identyfikatorze.
     */
    public Performance getPerformance(long performanceId) {
        return boxOfficeDao.getPerformance(performanceId);
    }

    /**
     * Zwraca spektakl o podanym identyfikatorze.
     *
     * @param showId Identyfikator żądanego spektaklu.
     * @return Spektakl o podanym identyfikatorze.
     */
    public Show getShow(long showId) {
        return boxOfficeDao.getShow(showId);
    }

    /**
     * Ustawia obiekt DAO używane przez tę usługę do pobierania informacji z bazy.
     * @param boxOfficeDao Obiekt DAO używany do pobierania informacji z bazy.
     */
    public void setBoxOfficeDao(BoxOfficeDao boxOfficeDao) {
        this.boxOfficeDao = boxOfficeDao;
    }

}
