package org.springframework.prospring.ticket.domain;

import java.util.*;

/**
 * Reprezentuje kategorię przedstawień.
 */
public class Genre {

    // identyfiaktor kategorii
    private long id;

    // nazwa kategorii
    private String name;

    // przedstawienia należące do tej kategorii
    private Set shows;

    /**
     * Pusty konstruktor wymagany przez specyfikację javabean.
     */
    public Genre() {
        shows = new HashSet();
    }

    /**
     * Konstruktor - tworzy nowy obiekt kategorii o podanej nazwie.
     * @param name Nazwa kategorii.
     */
    public Genre(String name) {
        shows = new HashSet();
        this.name = name;
    }

    /**
     * Zwraca identyfikator kategorii.
     * @return Identyfikator kategorii.
     */
    public long getId() {
        return id;
    }

    /**
     * Ustawia identyfikator kategorii.
     * @param id Identyfikator kategorii.
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * Zwraca nazwę kategorii.
     * @return Nazwa kategorii.
     */
    public String getName() {
        return name;
    }

    /**
     * Ustawia nazwę kategorii.
     * @param name Nazwa kategorii.
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Zwraca przedstawienia należące do tej kategorii.
     * @return Przedstawienia należące do tej kategorii.
     */
    public Set getShows() {
        return shows;
    }

    /**
     * Ustawia przedstawienia należące do tej kategorii.
     * @param shows Przedstawienia należące do tej kategorii.
     */
    public void setShows(Set shows) {
        this.shows = shows;
    }

    /**
     * Dodaje przedstawienie do tej kategorii.
     * @param show Przedstawienie jakie należy dodać do kategorii
     */
    public void addShow(Show show) {
        shows.add(show);
    }

    /**
     * Usuwa przekazane przedstawienie z tej kategorii.
     * @param show Przedstawienie jakie należy usunąć z tej kategorii.
     */
    public void removeShow(Show show) {
        shows.remove(show);
    }

}
