Package br.gov.serpro.ouvidoria.model

Source Code of br.gov.serpro.ouvidoria.model.MeioEnvioRespostaComparator

/*
* Sistema de Ouvidoria: um canal através do qual os usuários
* podem encaminhar suas reclamações, elogios e sugestões.
*
* Copyright (C) 2011 SERPRO
*
* Este programa é software livre; você pode redistribuí-lo e/ou
* modificá-lo sob os termos da Licença Pública Geral GNU, conforme
* publicada pela Free Software Foundation; tanto a versão 2 da
* Licença como (a seu critério) qualquer versão mais nova.
*
* Este programa é distribuído na expectativa de ser útil, mas SEM
* QUALQUER GARANTIA; sem mesmo a garantia implícita de
* COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM
* PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
* detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU,
* sob o título "LICENCA.txt", junto com esse programa. Se não,
* acesse o Portal do Software Público Brasileiro no endereço
* http://www.softwarepublico.gov.br/ ou escreva para a Fundação do
* Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston,
* MA 02111-1301, USA.
*
* Contatos através do seguinte endereço internet:
* http://www.serpro.gov.br/sistemaouvidoria/
*/
package br.gov.serpro.ouvidoria.model;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

import br.gov.serpro.ouvidoria.dao.Dao;
import br.gov.serpro.ouvidoria.dao.DaoException;
import br.gov.serpro.ouvidoria.dao.DaoFactory;
import br.gov.serpro.ouvidoria.dao.hibernate.HibernateDaoFactory;

/**
* Órgão
*
* Objetivo: Esta classe representa os órgãos.
*
* @author SERPRO
* @version $Revision: 1.1.2.3 $, $Date: 2011/10/20 19:27:38 $
* @version 0.1, Date: 2004/11/19
*/
public class Orgao extends Instituicao {

  private static final long serialVersionUID = 1L;

  public static String ATIVO = "A";

  public static String INATIVO = "I";

  /** Requerido */
  private Timestamp dataInicioConsultaResposta;

  /** Requerido */
  private Timestamp dataFimConsultaResposta;

  /** Requerido */
  private String gestorResponsavel;

  /** Requerido */
  private String codigoPaisTelefoneResponsavel;

  /** Requerido */
  private String codigoCidadeTelefoneResponsavel;

  /** Requerido */
  private String telefoneContatoGestor;

  /** Requerido */
  private Timestamp dataInicioAcionamento;

  /** Requerido */
  private Timestamp dataFimAcionamento;

  /** Requerido */
  private String statusOrgao;

  private ConfiguracoesOrgao configuracoes;

  private Collection listaGruposEmail = new TreeSet();

  private Collection listaMeioEnvioRespostaOrgao = new TreeSet();

  private Collection listaSubOrgao = new TreeSet();

  private Collection listaTodosSubOrgaos = new TreeSet();

  private Collection listaTipoAcionadorOrgao = new TreeSet();

  private Collection listaTipoAvaliacaoResposta = new TreeSet();

  private Collection listaTipoMensagem = new TreeSet();

  public Collection getListaTodosSubOrgaos() {
    return listaTodosSubOrgaos;
  }

  public void setListaTodosSubOrgaos(Collection listaTodosSubOrgaos) {
    this.listaTodosSubOrgaos = listaTodosSubOrgaos;
  }

  /**
   * @return Retorna dataInicioAcionamento.
   */
  public Timestamp getDataInicioAcionamento() {
    return dataInicioAcionamento;
  }

  /**
   * @param dataInicioAcionamento
   *            dataInicioAcionamento a ser atribuída.
   */
  public void setDataInicioAcionamento(Timestamp dataInicioAcionamento) {
    if (dataInicioAcionamento == null) {
      throw new NullPointerException();
    }
    this.dataInicioAcionamento = dataInicioAcionamento;
  }

  /**
   * @return Retorna dataFimConsultaResposta.
   */
  public Timestamp getDataFimConsultaResposta() {
    return dataFimConsultaResposta;
  }

  /**
   * @param dataFimConsultaResposta
   *            dataFimConsultaResposta a ser atribuída.
   */
  public void setDataFimConsultaResposta(Timestamp dataFimConsultaResposta) {
    if (dataFimConsultaResposta == null) {
      throw new NullPointerException();
    }
    this.dataFimConsultaResposta = dataFimConsultaResposta;
  }

  /**
   * @return Retorna gestorResponsavel.
   */
  public String getGestorResponsavel() {
    return gestorResponsavel;
  }

  /**
   * @param gestorResponsavel
   *            gestorResponsavel a ser atribuído.
   */
  public void setGestorResponsavel(String gestorResponsavel) {
    if (gestorResponsavel == null || gestorResponsavel.length() == 0) {
      throw new NullPointerException();
    }
    this.gestorResponsavel = gestorResponsavel;
  }

  /**
   * @return Retorna codigoPaisTelefoneResponsavel.
   */
  public String getCodigoPaisTelefoneResponsavel() {
    return codigoPaisTelefoneResponsavel;
  }

  /**
   * @param codigoPaisTelefoneResponsavel
   *            codigoPaisTelefoneResponsavel a ser atribuído.
   */
  public void setCodigoPaisTelefoneResponsavel(
      String codigoPaisTelefoneResponsavel) {
    this.codigoPaisTelefoneResponsavel = codigoPaisTelefoneResponsavel;
  }

  /**
   * @return Retorna codigoCidadeTelefoneResponsavel.
   */
  public String getCodigoCidadeTelefoneResponsavel() {
    return codigoCidadeTelefoneResponsavel;
  }

  /**
   * @param codigoCidadeTelefoneResponsavel
   *            codigoCidadeTelefoneResponsavel a ser atribuído.
   */
  public void setCodigoCidadeTelefoneResponsavel(
      String codigoCidadeTelefoneResponsavel) {
    this.codigoCidadeTelefoneResponsavel = codigoCidadeTelefoneResponsavel;

  }

  /**
   * @return Retorna telefoneContatoGestor.
   */
  public String getTelefoneContatoGestor() {
    return telefoneContatoGestor;
  }

  /**
   * @param telefoneContatoGestor
   *            telefoneContatoGestor a ser atribuído.
   */
  public void setTelefoneContatoGestor(String telefoneContatoGestor) {
    if (telefoneContatoGestor == null
        || telefoneContatoGestor.length() == 0) {
      throw new NullPointerException();
    }
    this.telefoneContatoGestor = telefoneContatoGestor;
  }

  /**
   * @return Retorna dataInicioConsultaResposta.
   */
  public Timestamp getDataInicioConsultaResposta() {
    return dataInicioConsultaResposta;
  }

  /**
   * @param dataInicioConsultaResposta
   *            dataInicioConsultaResposta a ser atribuída.
   */
  public void setDataInicioConsultaResposta(
      Timestamp dataInicioConsultaResposta) {
    if (dataInicioConsultaResposta == null) {
      throw new NullPointerException();
    }
    this.dataInicioConsultaResposta = dataInicioConsultaResposta;
  }

  /**
   * @return Retorna dataFimAcionamento.
   */
  public Timestamp getDataFimAcionamento() {
    return dataFimAcionamento;
  }

  /**
   * @param dataFimAcionamento
   *            dataFimAcionamento a ser atribuída.
   */
  public void setDataFimAcionamento(Timestamp dataFimAcionamento) {
    if (dataFimAcionamento == null) {
      throw new NullPointerException();
    }
    this.dataFimAcionamento = dataFimAcionamento;
  }

  /**
   * @return Retorna o status.
   */
  public String getStatusOrgao() {
    return statusOrgao;
  }

  /**
   * @param status
   *            status a ser atribuído.
   */
  public void setStatusOrgao(String status) {
    if (status == null || status.length() == 0) {
      throw new NullPointerException();
    }
    if ((status != null) && (status.length() > 0)
        && (status.compareTo(Orgao.ATIVO) != 0)
        && (status.compareTo(Orgao.INATIVO) != 0)) {
      throw new IllegalArgumentException();
    }
    this.statusOrgao = status;
  }

  /**
   * @return Retorna configuracoes.
   */
  public ConfiguracoesOrgao getConfiguracoes() {
    return this.configuracoes;
  }

  /**
   * @param configuracoes
   *            configuracoes a ser atribuido.
   */
  public void setConfiguracoes(ConfiguracoesOrgao configuracoes) {
    this.configuracoes = configuracoes;
  }

  /**
   * @return Retorna listaMeioEnvioRespostaOrgao.
   */
  public Collection getListaMeioEnvioRespostaOrgao() {
    return listaMeioEnvioRespostaOrgao;
  }

  /**
   * @param listaMeioEnvioRespostaOrgao
   *            listaMeioEnvioRespostaOrgao a ser atribuido.
   */
  public void setListaMeioEnvioRespostaOrgao(
      Collection listaMeioEnvioRespostaOrgao) {
    this.listaMeioEnvioRespostaOrgao = listaMeioEnvioRespostaOrgao;
  }

  /**
   * Este método é responsável por adicionar um meio de envio resposta na
   * lista de meios de envio de resposta disponíveis para o órgão.
   *
   * @param meioEnvioRespostaOrgao
   *            meioEnvioRespostaOrgao a ser incluído
   */
  public void adicionarMeioEnvioRespostaOrgao(
      MeioEnvioRespostaOrgao meioEnvioRespostaOrgao) {
    this.listaMeioEnvioRespostaOrgao.add(meioEnvioRespostaOrgao);
  }

  /**
   * Este método é responsável por remover um meio de envio resposta da lista
   * de meios de envio de resposta disponíveis para o órgão.
   *
   * @param meioEnvioRespostaOrgao
   *            meioEnvioRespostaOrgao a ser removido
   */
  public void removerMeioEnvioRespostaOrgao(
      MeioEnvioRespostaOrgao meioEnvioRespostaOrgao) {
    this.listaMeioEnvioRespostaOrgao.remove(meioEnvioRespostaOrgao);
  }

  /**
   * @return Retorna listaSubOrgao.
   */
  public Collection getListaSubOrgao() {
    return listaSubOrgao;
  }

  /**
   * @param listaSubOrgao
   *            listaSubOrgao a ser atribuido.
   */
  public void setListaSubOrgao(Collection listaSubOrgao) {
    this.listaSubOrgao = listaSubOrgao;
  }

  /**
   * Recupera todos os assuntos associados aos sub-órgãos do órgão
   */
  public List getListaAssuntosSubOrgaos() {
    SubOrgao subOrgao;
    Assunto assunto;
    Collection listaAssuntoSubOrgao = new ArrayList();
    Collection listaSubOrgaos = this.getListaSubOrgao();
    List listaAssunto = new ArrayList();
    Iterator iter;
    Iterator iter2;

    // Caso exista sub-órgãos, busca-se seus assuntos
    if (listaSubOrgaos != null) {
      iter = listaSubOrgaos.iterator();
      while (iter.hasNext()) {
        subOrgao = (SubOrgao) iter.next();
        listaAssuntoSubOrgao = subOrgao.getListaAssunto();
        if (listaAssuntoSubOrgao == null)
          continue;
        iter2 = listaAssuntoSubOrgao.iterator();
        while (iter2.hasNext()) {
          assunto = (Assunto) iter2.next();
          if ((!listaAssunto.contains(assunto))
              && (assunto.getSituacao().compareToIgnoreCase(
                  "Ativo") == 0)) {
            listaAssunto.add(assunto);
          }
        }
      }
      class AssuntoComparator implements Comparator {
        public final int compare(Object a, Object b) {
          return (((Assunto) a).getDescricao())
              .compareTo((((Assunto) b).getDescricao()));
        } // end compare
      } // end class StringComparator

      Collections.sort(listaAssunto, new AssuntoComparator());
      return listaAssunto;
    }

    return null;

  }

  /**
   * Recupera todos os assuntos associados ao órgão e seus sub-órgãos
   */
  public List getListaTodosAssuntos() {
    SubOrgao subOrgao;
    Assunto assunto;
    Collection listaAssuntoOrgao = new ArrayList();
    Collection listaAssuntoSubOrgao = new ArrayList();
    Collection listaSubOrgaos = this.getListaSubOrgao();
    List listaAssunto = new ArrayList();
    Iterator iter;
    Iterator iter2;

    // Inicialmente recupera a lista de assuntos do órgão
    listaAssuntoOrgao = this.getListaAssunto();
    if (listaAssuntoOrgao != null) {
      iter = listaAssuntoOrgao.iterator();
      while (iter.hasNext()) {
        assunto = (Assunto) iter.next();
        listaAssunto.add(assunto);
      }
    }

    // Caso exista sub-órgãos, busca-se seus assuntos
    if (listaSubOrgaos != null) {
      iter = listaSubOrgaos.iterator();
      while (iter.hasNext()) {
        subOrgao = (SubOrgao) iter.next();
        listaAssuntoSubOrgao = subOrgao.getListaAssunto();
        if (listaAssuntoSubOrgao == null)
          continue;
        iter2 = listaAssuntoSubOrgao.iterator();
        while (iter2.hasNext()) {
          assunto = (Assunto) iter2.next();
          if (!listaAssunto.contains(assunto)) {
            listaAssunto.add(assunto);
          }
        }
      }
      class AssuntoComparator implements Comparator {
        public final int compare(Object a, Object b) {
          return (((Assunto) a).getDescricao())
              .compareTo((((Assunto) b).getDescricao()));
        } // end compare
      } // end class StringComparator

      Collections.sort(listaAssunto, new AssuntoComparator());
      return listaAssunto;
    }

    return null;
  }

  /**
   * Recupera todos os assuntos associados ao órgão e seus sub-órgãos
   *
   * @param situacao
   *            "Ativo" - retorna os assuntos ativos "Inativo" - retorna os
   *            assuntos inativos "Ambos" - retorna os assuntos ativos e
   *            inativos
   *
   */
  public List getListaTodosAssuntos(String situacao) {
    SubOrgao subOrgao;
    Assunto assunto;
    Collection listaAssuntoOrgao = new ArrayList();
    Collection listaAssuntoSubOrgao = new ArrayList();
    List listaAssunto = new ArrayList();
    Iterator iter;
    Iterator iter2;

    // Inicialmente recupera a lista de assuntos do órgão
    listaAssuntoOrgao = this.getListaAssunto();
    if (listaAssuntoOrgao != null) {
      iter = listaAssuntoOrgao.iterator();
      while (iter.hasNext()) {
        assunto = (Assunto) iter.next();
        if (situacao.equalsIgnoreCase("Ativo"))
          if (assunto.getSituacao() == "Ativo")
            listaAssunto.add(assunto);

        if (situacao.equalsIgnoreCase("Inativo"))
          if (assunto.getSituacao() == "Inativo")
            listaAssunto.add(assunto);

        if (situacao.equalsIgnoreCase("Ambos"))
          listaAssunto.add(assunto);
      }
    }

    // Recupera a lista de sub-órgãos
    Collection listaSubOrgaos = this.getListaSubOrgao();

    // Caso exista sub-órgãos, busca-se seus assuntos
    if (listaSubOrgaos != null) {
      iter = listaSubOrgaos.iterator();
      while (iter.hasNext()) {
        subOrgao = (SubOrgao) iter.next();
        listaAssuntoSubOrgao = subOrgao.getListaAssunto();
        iter2 = listaAssuntoSubOrgao.iterator();
        while (iter2.hasNext()) {
          assunto = (Assunto) iter2.next();
          if (!listaAssunto.contains(assunto)) {

            if (situacao.equalsIgnoreCase("Ativo"))
              if (assunto.getSituacao() == "Ativo")
                listaAssunto.add(assunto);

            if (situacao.equalsIgnoreCase("Inativo"))
              if (assunto.getSituacao() == "Inativo")
                listaAssunto.add(assunto);

            if (situacao.equalsIgnoreCase("Ambos"))
              listaAssunto.add(assunto);

          }
        }
      }

      class AssuntoComparator implements Comparator {
        public final int compare(Object a, Object b) {
          return (((Assunto) a).getDescricao())
              .compareTo((((Assunto) b).getDescricao()));
        } // end compare
      } // end class StringComparator

      Collections.sort(listaAssunto, new AssuntoComparator());
      return listaAssunto;
    }

    return null;
  }

  /**
   * Este método retorna lista de objetos meioEnvioResposta, que estão dentro
   * dos objetos MeioEnvioRespostaOrgao
   *
   * @return Lista de objetos Meio Envio Resposta
   */
  public List getListaMeioEnvioResposta() {
    Iterator iter;
    List listaMeioEnvioResposta = new ArrayList();
    iter = this.listaMeioEnvioRespostaOrgao.iterator();
    while (iter.hasNext()) {
      listaMeioEnvioResposta.add(((MeioEnvioRespostaOrgao) iter.next())
          .getMeioEnvioResposta());
    }

    class MeioEnvioRespostaComparator implements Comparator {
      public final int compare(Object a, Object b) {
        return (((MeioEnvioResposta) a).getDescricao())
            .compareTo((((MeioEnvioResposta) b).getDescricao()));
      } // end compare
    } // end class StringComparator

    Collections.sort(listaMeioEnvioResposta,
        new MeioEnvioRespostaComparator());

    return listaMeioEnvioResposta;
  }

  public String getSituacao() {
    if (this.statusOrgao.compareTo(Orgao.ATIVO) == 0)
      return "Ativo";
    return "Inativo";
  }

  /**
   * @return Retorna listaTipoMensagem.
   */
  public Collection getListaTipoMensagem() {
    return listaTipoMensagem;
  }

  /**
   * @param listaTipoMensagem
   *            listaTipoMensagem a ser atribuido.
   */
  public void setListaTipoMensagem(Collection listaTipoMensagem) {
    this.listaTipoMensagem = listaTipoMensagem;
  }

  /**
   * @return Retorna listaTipoAvaliacaoResposta.
   */
  public Collection getListaTipoAvaliacaoResposta() {
    return listaTipoAvaliacaoResposta;
  }

  /**
   * @param listaTipoAvaliacaoResposta
   *            listaTipoAvaliacaoResposta a ser atribuido.
   */
  public void setListaTipoAvaliacaoResposta(
      Collection listaTipoAvaliacaoResposta) {
    this.listaTipoAvaliacaoResposta = listaTipoAvaliacaoResposta;
  }

  public List listarTipoMensagemAtivos() {
    Iterator iter;
    TipoMensagem tipoMensagem;

    ArrayList retorno = new ArrayList();

    if (!this.listaTipoMensagem.isEmpty()) {
      iter = this.listaTipoMensagem.iterator();

      while (iter.hasNext()) {
        tipoMensagem = (TipoMensagem) iter.next();
        if (tipoMensagem.getDataVigencia() != null) {
          if (tipoMensagem.getDataVigencia().after(
              new Timestamp(System.currentTimeMillis()))) {
            retorno.add(tipoMensagem);
          }
        } else {
          retorno.add(tipoMensagem);
        }
      }
    }

    class TipoMensagemComparator implements Comparator {
      public final int compare(Object a, Object b) {
        return (((TipoMensagem) a).getDescricao())
            .compareTo((((TipoMensagem) b).getDescricao()));
      } // end compare
    } // end class StringComparator

    Collections.sort(retorno, new TipoMensagemComparator());

    return retorno;
  }

  /**
   * @return Retorna listaGruposEmail.
   */
  public Collection getListaGruposEmail() {
    return listaGruposEmail;
  }

  /**
   * @param listaGruposEmail
   *            listaGruposEmail a ser atribuido.
   */
  public void setListaGruposEmail(Collection listaGruposEmail) {
    this.listaGruposEmail = listaGruposEmail;
  }

  /**
   * @return Retorna listaTipoAcionadorOrgao.
   */
  public Collection getListaTipoAcionadorOrgao() {
    return listaTipoAcionadorOrgao;
  }

  /**
   * @param listaTipoAcionadorOrgao
   *            listaTipoAcionadorOrgao a ser atribuido.
   */
  public void setListaTipoAcionadorOrgao(Collection listaTipoAcionadorOrgao) {
    this.listaTipoAcionadorOrgao = listaTipoAcionadorOrgao;
  }

  /**
   *
   * @param orgao
   * @return funcionario
   * @throws DaoException
   */
  public Funcionario getOuvidorOrgao(final Orgao orgao) throws DaoException {

    final DaoFactory daoFactory = new HibernateDaoFactory();
    Dao funcionarioDao = daoFactory.create(Funcionario.class);

    Funcionario funcionario = new Funcionario();

    String sql = " select f from Orgao o, Funcionario as f "
        + " where o.id = " + orgao.getId() + " and f.instituicao = "
        + orgao.getId() + " and f.perfil = 1 ";

    funcionario = (Funcionario) funcionarioDao.query(sql).get(0);

    return funcionario;
  }

}
TOP

Related Classes of br.gov.serpro.ouvidoria.model.MeioEnvioRespostaComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.