/*
 * Universidade Federal de Pernambuco
 * Centro de Informática
 *
 * SAC - Sociedade beneficente de Amparo aos portadores de AIDS e do Cancer
 *
 * Tipo: Droga
 *
 * Esta classe representa uma droga
 *
 * @author Centro de Informatica - UFPE
 * @version  0.1 -  25/10/2001
 * @since JDK 1.3
 */

package sac.droga;

import sac.persistencia.OID;
import sac.exception.NullArgumentException;

/**
 * Esta classe representa uma droga
 */
public class Droga {
    //Id da droga
    private OID id;
    // nome da droga
    private String nome;
    // acoes terapeuticas da droga
    private String acoesTerapeuticas;
    // propriedades da droga
    private String propriedades;
    // dosagem da droga
    private String dosagem;
    // indicacoes da droga
    private String indicacoes;
    // contra-indicacoes da droga
    private String contraIndicacoes;
    // reacoes adversas da droga
    private String reacoesAdversas;
    // precaucoes da droga
    private String precaucoes;
    // interacoes da droga
    private String interacoes;

    /**
     * Construtor vazio da classe
    */
    public Droga() {}

    /**
     * Retorna o ID da droga
     *
     * @return id da droga <code>OID</code>
     */
    public OID getID() {
        return this.id;
    }

    /**
     * Seta o id de uma droga
     *
     * @param newId     ID da droga <code>OID</code>
     *
     * @exception NullArgumentException - Levantada quando o id
     *            passado for <code>null</code>.
     */
    public void setID(OID newId) throws NullArgumentException {
        if (newId == null) {
            throw new NullArgumentException("newId == null");
        }
        this.id = newId;
   }

    /**
     * Retorna o nome da droga
     *
     * @return nome da droga <code>String</code>
     */
    public String getNome(){
        return this.nome;
    }

    /**
     * Seta o nome de uma droga
     *
     * @param newNome     Nome da droga<code>String</code>
     *
     * @exception NullArgumentException - Levantada quando o nome
     *            passado for <code>null</code>.
     */
    public void setNome(String newNome) throws NullArgumentException{
        if (newNome == null) {
            throw new NullArgumentException("newNome == null");
        }
        if (newNome.equals("")) {
            throw new NullArgumentException("o campo Nome não pode ser vazio");
        }

        this.nome = newNome;
    }

    /**
     * Retorna as acoes terapeuticas de uma droga
     *
     * @return acoes terapeuticas da droga <code>String</code>
     */
    public String getAcoesTerapeuticas() {
        return this.acoesTerapeuticas;
    }

    /**
     * Seta as acoes terapeuticas de uma droga
     *
     * @param newAcoesTerapeuticas      Acao Terapeutica da
     *                                  droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as
     *            acoes terapeuticas passadas forem <code>null</code>.
     */
    public void setAcoesTerapeuticas(String newAcoesTerapeuticas)
throws NullArgumentException {
        if (newAcoesTerapeuticas == null) {
            throw new NullArgumentException("newAcoesTerapeuticas == null");
        }
        this.acoesTerapeuticas = newAcoesTerapeuticas;
    }

    /**
     * Retorna as propriedades de uma droga
     *
     * @return propriedades da droga <code>String</code>
     */
    public String getPropriedades() {
        return this.propriedades;
    }

    /**
     * Seta as propriedades de uma droga
     *
     * @param newPropriedades       Propriedade da droga<code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as propriedades
     *            passadas forem <code>null</code>.
     */
    public void setPropriedades(String newPropriedades)
throws NullArgumentException {
        if (newPropriedades == null) {
            throw new NullArgumentException("newPropriedades == null");
        }
        this.propriedades = newPropriedades;
    }


    /**
     * Retorna a dosagem de uma droga
     *
     * @return dosagem da droga <code>String</code>
     */
    public String getDosagem() {
        return this.dosagem;
    }

    /**
     * Seta a dosagem de uma droga
     *
     * @param newDosagem        Dosagem da droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando a dosagem
     *            passada for <code>null</code>.
     */
    public void setDosagem(String newDosagem) throws NullArgumentException {
        if (newDosagem == null) {
            throw new NullArgumentException("newDosagem == null");
        }
        this.dosagem = newDosagem;
    }

    /**
     * Retorna as indicacoes de uma droga
     *
     * @return indicacoes da droga <code>String</code>
     */
    public String getIndicacoes() {
        return this.indicacoes;
    }

    /**
     * Seta as indicacoes de uma droga
     *
     * @param newIndicacoes     Indicacoes da droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as indicacoes
     *            passadas forem <code>null</code>.
     */
    public void setIndicacoes(String newIndicacoes) throws NullArgumentException {
        if (newIndicacoes == null) {
            throw new NullArgumentException("newIndicacoes == null");
        }
        this.indicacoes = newIndicacoes;
    }


    /**
     * Retorna as contra-indicacoes de uma droga
     *
     * @return contra-indicacoes da droga <code>String</code>
     */
    public String getContraIndicacoes() {
        return this.contraIndicacoes;
    }

    /**
     * Seta as contra-indicacoes de uma droga
     *
     * @param newContraIndicacoes       Contra indicacoes da
     *                                          droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as contra-indicacoes
     *            passadas forem <code>null</code>.
     */
    public void setContraIndicacoes(String newContraIndicacoes)
throws NullArgumentException {
        if (newContraIndicacoes == null) {
            throw new NullArgumentException("newContraIndicacoes == null");
        }
        this.contraIndicacoes = newContraIndicacoes;
    }


    /**
     * Retorna as reacoes adversas de uma droga
     *
     * @return reacoes adversas da droga <code>String</code>
     */
    public String getReacoesAdversas() {
        return this.reacoesAdversas;
    }

    /**
     * Seta as reacoes adversas de uma droga
     *
     * @param newReacoesAdversas        Reacoes adversas da
     *                                      droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as reacoes adversas
     *            passadas forem <code>null</code>.
     */
    public void setReacoesAdversas(String newReacoesAdversas)
throws NullArgumentException {
        if (newReacoesAdversas == null) {
            throw new NullArgumentException("newReacoesAdversas == null");
        }
        this.reacoesAdversas = newReacoesAdversas;
    }


    /**
     * Retorna as precaucoes de uma droga
     *
     * @return precaucoes da droga <code>String</code>
     */
    public String getPrecaucoes() {
        return this.precaucoes;
    }

    /**
     * Seta as precaucaoes de uma droga
     *
     * @param newPrecaucoes     Precaucoes da droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as precaucoes
     *            passadas forem <code>null</code>.
     */
    public void setPrecaucoes(String newPrecaucoes) throws NullArgumentException {
        if (newPrecaucoes == null) {
            throw new NullArgumentException("newPrecaucoes == null");
        }
        this.precaucoes = newPrecaucoes;
   }


    /**
     * Retorna as interacoes de uma droga
     *
     * @return interacoes da droga <code>String</code>
     */
    public String getInteracoes() {
        return this.interacoes;
    }

    /**
     * Seta as interacoes de uma droga
     *
     * @param newInteracoes     Interacoes da droga <code>String</code>
     *
     * @exception NullArgumentException - Levantada quando as interacoes
     *            passadas forem <code>null</code>.
     */
    public void setInteracoes(String newInteracoes) throws NullArgumentException {
        if (newInteracoes == null) {
            throw new NullArgumentException("newInteracoes == null");
        }
        this.interacoes = newInteracoes;
    }

    public String toString() {
      StringBuffer buffer = new StringBuffer();

      buffer.append(id);
      buffer.append(", ");
      buffer.append(nome);
      buffer.append(", ");
      buffer.append(acoesTerapeuticas);
      buffer.append(", ");
      buffer.append(propriedades);
      buffer.append(", ");
      buffer.append(dosagem);
      buffer.append(", ");
      buffer.append(indicacoes);
      buffer.append(", ");
      buffer.append(contraIndicacoes);
      buffer.append(", ");
      buffer.append(reacoesAdversas);
      buffer.append(", ");
      buffer.append(precaucoes);
      buffer.append(", ");
      buffer.append(interacoes);

      return buffer.toString();
    }
}
