package br.gov.mj.sislegis.app.parser.senado.xstream; import java.util.logging.Level; import java.util.logging.Logger; import br.gov.mj.sislegis.app.enumerated.Origem; import br.gov.mj.sislegis.app.model.Proposicao; import br.gov.mj.sislegis.app.parser.ProposicaoSearcher; import br.gov.mj.sislegis.app.util.SislegisUtil; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("Materia") public class Materia { @XStreamAlias("IdentificacaoMateria") IdentificacaoMateria identificacaoMateria; @XStreamAlias("DadosBasicosMateria") DadosBasicosMateria DadosBasicosMateria; @XStreamAlias("AutoresPrincipais") AutoresPrincipais autoresPrincipais; @XStreamAlias("Relatoria") Relatoria relatoria; @XStreamAlias("SituacaoAtual") SituacaoAtual situacaoAtual; @Override public String toString() { return identificacaoMateria.toString(); } public String getRelator() { if (relatoria != null && relatoria.relatores != null && !relatoria.relatores.isEmpty()) { Relator relator = relatoria.relatores.get(0); String desc = ""; if (relator.tratamento != null && relator.tratamento.length() > 0) { desc = relator.tratamento + " "; } if (relator.nome != null && relator.nome.length() > 0) { desc += relator.nome; } return desc; } else if (nomeRelator != null && nomeRelator.length() > 0) { return nomeRelator; } return ProposicaoSearcher.SEM_RELATOR_DEFINIDO; } // Cada webservice tem uma estrutura, a abaixo é para a pauta. Acima é para // proposicao direto, o mais abaixo é para o ws de reuniao do pleanrio @XStreamAlias("autoria") Autoria autoria; @XStreamAlias("Situacoes") Situacoes situacoes; @XStreamAlias("Ano") String ano; @XStreamAlias("Codigo") Integer codigo; @XStreamAlias("Numero") String numero; @XStreamAlias("Subtipo") String subtipo; @XStreamAlias("Ementa") String ementa; @XStreamAlias("AnoMateria") String anoMateria; @XStreamAlias("NumeroMateria") String numeroMateria; @XStreamAlias("SiglaMateria") String siglaMateria; @XStreamAlias("CodigoMateria") Integer codigoMateria; @XStreamAlias("NomeRelator") String nomeRelator; @XStreamAlias("SequenciaOrdem") Integer sequenciaOrdem; public Integer getSequenciaOrdem() { return sequenciaOrdem; } public Proposicao toProposicao() { Proposicao p = new Proposicao(); if (identificacaoMateria == null) { identificacaoMateria = new IdentificacaoMateria(); if (ano == null) { identificacaoMateria.AnoMateria = anoMateria; identificacaoMateria.NumeroMateria = numeroMateria; identificacaoMateria.SiglaSubtipoMateria = siglaMateria; identificacaoMateria.CodigoMateria = codigoMateria; } else { identificacaoMateria.AnoMateria = ano; identificacaoMateria.CodigoMateria = codigo; identificacaoMateria.NumeroMateria = numero; identificacaoMateria.SiglaSubtipoMateria = subtipo; } } p.setIdProposicao(identificacaoMateria.CodigoMateria); p.setNumero(identificacaoMateria.NumeroMateria); p.setAno(identificacaoMateria.AnoMateria); p.setTipo(identificacaoMateria.SiglaSubtipoMateria); if (autoresPrincipais != null && !autoresPrincipais.autores.isEmpty()) { AutorPrincipal autor = autoresPrincipais.autores.get(0); p.setAutor(autor.getDescricao()); } else if (autoria != null && autoria.Autor != null) { p.setAutor(autoria.Autor.getDescricao()); } p.setOrigem(Origem.SENADO); p.setLinkProposicao("http://www.senado.leg.br/atividade/materia/detalhes.asp?p_cod_mate=" + p.getIdProposicao()); if (situacaoAtual == null) { if (situacoes == null || situacoes.situacao == null) { Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).log(Level.FINEST, "Nao carregou a situacao atual " + p.getLinkProposicao()); } else { Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER).log( Level.FINEST, "Nao carregou a situacao atual mas situacao foi carregada " + situacoes + " " + situacoes.situacao); } } else if (situacaoAtual.autuacoes == null) { Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER) .log(Level.FINEST, "Nao carregou autuacoes da situacao atual"); } else if (situacaoAtual.autuacoes.autuacoes == null) { Logger.getLogger(SislegisUtil.SISLEGIS_LOGGER) .log(Level.FINEST, "Nao carregou autuacoes da situacao atual"); } else if (!situacaoAtual.autuacoes.autuacoes.isEmpty()) { p.setComissao(situacaoAtual.autuacoes.autuacoes.get(0).Local.SiglaLocal); p.setSituacao(situacaoAtual.autuacoes.autuacoes.get(0).Situacao.SiglaSituacao); } if (DadosBasicosMateria != null) { p.setEmenta(DadosBasicosMateria.EmentaMateria); } else { p.setEmenta(ementa); } return p; } public static void configXstream(XStream xstream) { xstream.processAnnotations(Materia.class); xstream.processAnnotations(IdentificacaoMateria.class); xstream.processAnnotations(DadosBasicosMateria.class); xstream.processAnnotations(AutoresPrincipais.class); xstream.processAnnotations(AutorPrincipal.class); Relatoria.configXstream(xstream); SituacaoAtual.configXstream(xstream); } }