/**
 * Implementuje rozhranni message.
 * 
 * @author Marek Dvoroznak 
 * @version 0.1
 */
public abstract class AbstractMessage implements Message
{
    // odesilatel
    private Subject from;
    // adresat
    private Subject to;
    // telo zpravy
    protected Object body;

    /**
     * Konstruktor pro pouziti v rozsirujicich tridach.
     * 
     * @param from odesilatel
     * @param to adresat
     * @param body telo zpravy
     */
    public AbstractMessage(Subject from, Subject to, String body)
    {
        setFrom(from);
        setTo(to);
        setBody(body);
    }    
    
    /**
     * Nastavi odesilatele.
     * 
     * @param from odesilatel
     */
    public void setFrom(Subject from)
    {
        this.from = from;
    }

    /**
     * Nastavi adresata.
     * 
     * @param subject adresat
     */
    public void setTo(Subject subject)
    {
        to = subject;
    }
    
    /**
     * Nastavi telo zpravy.
     * 
     * @param body telo zpravy
     */
    public void setBody(Object body)
    {
        this.body = body;
    }
    
    /**
     * Vrati odesilatele.
     * 
     * @return odesilatel
     */
    public Subject getFrom()
    {
        return from;
    }

    /**
     * Vrati adresata.
     * 
     * @return adresat
     */
    public Subject getTo()
    {
        return to;
    }
    
    /**
     * Vrati telo zpravy.
     * 
     * @return telo zpravy
     */
    public Object getBody()
    {
        return body;
    }
}

