/**
   * @param motivo
   * @param usuario
   * @throws Exception Método responsável por mudar a situação da Diária para 'Ativo(a)' no seu
   *     cadastro.
   */
  public void reativar(String motivo, UsuarioInterface usuario) throws Exception {
    if (isSituacaoAtual(SituacaoEnum.ATIVO.descricao()))
      throw new Exception("Já se encontra ativado!");
    if (Utils.isStringVazia(motivo)) throw new Exception("O motivo deve ser preenchido!");

    mudarSituacao(usuario, SituacaoEnum.ATIVO.descricao(), motivo, new Date());
  }
/** @author Infoway */
public class ReportSeguradosPorSituacao {

  public static final String ATIVO = SituacaoEnum.ATIVO.descricao();
  public static final String SUSPENSO = SituacaoEnum.SUSPENSO.descricao();
  public static final String CANCELADO = SituacaoEnum.CANCELADO.descricao();

  private String situacao;
  private Long quantidadeTitulares;
  private Long quantidadeDependentes;
  private Long quantidadeDependentesSuplementares;
  private Long quantidadePensionistas;

  public ReportSeguradosPorSituacao gerarRelatorio(String situacao) {

    this.situacao = situacao;
    this.quantidadeTitulares = getQuantidade(Titular.class, situacao);
    this.quantidadeDependentes = getQuantidade(Dependente.class, situacao);
    this.quantidadeDependentesSuplementares = getQuantidade(DependenteSuplementar.class, situacao);
    this.quantidadePensionistas = getQuantidade(Pensionista.class, situacao);

    return this;
  }

  public Long getQuantidade(Class<? extends Segurado> klass, String situacao) {
    Criteria criteria = HibernateUtil.currentSession().createCriteria(klass);

    criteria
        .add(Expression.eq("situacao.descricao", situacao))
        .setProjection(Projections.rowCount());

    return (Long) criteria.uniqueResult();
  }

  public Long getQuantidadeSegurados() {
    return quantidadeTitulares
        + quantidadeDependentes
        + quantidadeDependentesSuplementares
        + quantidadePensionistas;
  }

  public Long getQuantidadeTitulares() {
    return quantidadeTitulares;
  }

  public Long getQuantidadeDependentes() {
    return quantidadeDependentes;
  }

  public Long getQuantidadeDependentesSuplementares() {
    return quantidadeDependentesSuplementares;
  }

  public Long getQuantidadePensionistas() {
    return quantidadePensionistas;
  }

  public String getSituacao() {
    return situacao;
  }
}
 public boolean templateValidator(P proc, G guia) throws ValidateException {
   TabelaCBHPM cbhpm = proc.getProcedimentoDaTabelaCBHPM();
   Assert.isTrue(
       cbhpm.isSituacaoAtual(SituacaoEnum.ATIVO.descricao()),
       MensagemErroEnum.PROCEDIMENTO_INATIVO_NO_SISTEMA.getMessage(cbhpm.getCodigo()));
   return true;
 }
  /**
   * @param usuario
   * @return Boolean Método usado para setar a situação do objeto como 'Ativo(a)' no momento de seu
   *     cadastramento.
   */
  public Boolean validate(UsuarioInterface usuario) {

    this.codigoDescricao = this.getCodigo() + " - " + this.getDescricao();

    if (this.getSituacao() == null) {
      mudarSituacao(usuario, SituacaoEnum.ATIVO.descricao(), "Cadastro de nova taxa", new Date());
      return true;
    }
    return true;
  }