package br.gov.mj.sislegis.app.parser.senado.xstream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import br.gov.mj.sislegis.app.enumerated.SituacaoSenado;
import br.gov.mj.sislegis.app.util.SislegisUtil;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import br.gov.mj.sislegis.app.enumerated.Origem;
import br.gov.mj.sislegis.app.model.Proposicao;
import br.gov.mj.sislegis.app.model.pautacomissao.PautaReuniaoComissao;
import br.gov.mj.sislegis.app.model.pautacomissao.ProposicaoPautaComissao;
import br.gov.mj.sislegis.app.model.pautacomissao.Sessao;
import br.gov.mj.sislegis.app.model.pautacomissao.SituacaoSessao;
public class ReuniaoBeanSenado extends br.gov.mj.sislegis.app.parser.ReuniaoBean {
private static final String MATERIA = "MATE";
public static String getMateria() {
return MATERIA;
}
protected List<ComissaoBean> comissoes = new ArrayList<ComissaoBean>();
protected List<ParteBean> partes = new ArrayList<ParteBean>();
protected List<ParteBean> getPartes() {
return partes;
}
protected List<ComissaoBean> getComissoes() {
return comissoes;
}
public Set<ProposicaoPautaComissao> getProposicoesPauta(PautaReuniaoComissao reuniao) {
for (ParteBean parteBean : this.getPartes()) {
List<ItemBean> itens = parteBean.getItens();
for (Iterator iterator = itens.iterator(); iterator.hasNext();) {
ItemBean itemBean = (ItemBean) iterator.next();
// Não adicionamos por exemplo, os requerimentos, pois não são
// tratados como proposições
if (itemBean.tipo.equalsIgnoreCase(MATERIA)) {
Materia mat = itemBean.getMateria();
Proposicao prop = mat.toProposicao();
//prop.setComissao(comissoes.get(0).getSigla() + " - " + comissoes.get(0).getNome());
prop.setComissao(reuniao.getComissao());
prop.setOrigem(Origem.SENADO);
prop.setLinkProposicao("http://www.senado.leg.br/atividade/materia/detalhes.asp?p_cod_mate="
+ prop.getIdProposicao());
ProposicaoPautaComissao propPauta = new ProposicaoPautaComissao(reuniao, prop);
propPauta.setOrdemPauta(itemBean.getSeqOrdemPauta());
propPauta.setRelator(itemBean.getMateria().getRelator());
propPauta.setResultado(itemBean.resultado.descricao);
reuniao.addProposicaoPauta(propPauta);
}
}
// Eventos não deve aparecer na lista de proposicoes discutidas
}
return reuniao.getProposicoesDaPauta();
}
@Override
public String toString() {
return titulo + ":" + tipo + " " + situacao + "@" + data + " " + hora;
}
public Sessao getSessao() {
Sessao sessao = new Sessao();
try {
sessao.setData(getDate());
} catch (ParseException e) {
e.printStackTrace();
}
sessao.setIdentificadorExterno(getCodigo().toString());
sessao.setTitulo(titulo);
situacao = situacao.replaceAll("\\s", "");
try {
sessao.setSituacao(SituacaoSenado.valueOf(situacao).situacaoSessaoCorrespondente());
} catch (IllegalArgumentException e) {
Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).log(Level.SEVERE, "Falha ao converter a situacao da Senado: " + situacao, e);
sessao.setSituacao(SituacaoSessao.Desconhecido);
}
return sessao;
}
public Date getDate() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy kk:mm");
return sdf.parse(data + " " + hora);
}
}