From 5896dd57fd4ab9fcaf78f67b63b77dbe37ba609c Mon Sep 17 00:00:00 2001 From: rafaelcoutinho Date: Mon, 17 Aug 2015 18:27:18 -0300 Subject: [PATCH] =?UTF-8?q?Fix=20para=20o=20bug=20de=20obten=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20dado=20de=20Autor=20da=20proposta=20de=20proposi=C3=A7?= =?UTF-8?q?=C3=B5es=20com=20origem=20no=20Senado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/senado/ParserProposicaoSenado.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/main/java/br/gov/mj/sislegis/app/parser/senado/ParserProposicaoSenado.java b/src/main/java/br/gov/mj/sislegis/app/parser/senado/ParserProposicaoSenado.java index 7c7bdc7d..a1e4805b 100644 --- a/src/main/java/br/gov/mj/sislegis/app/parser/senado/ParserProposicaoSenado.java +++ b/src/main/java/br/gov/mj/sislegis/app/parser/senado/ParserProposicaoSenado.java @@ -7,6 +7,11 @@ import br.gov.mj.sislegis.app.model.Proposicao; import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.converters.Converter; +import com.thoughtworks.xstream.converters.MarshallingContext; +import com.thoughtworks.xstream.converters.UnmarshallingContext; +import com.thoughtworks.xstream.io.HierarchicalStreamReader; +import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class ParserProposicaoSenado { @@ -41,6 +46,9 @@ public Proposicao getProposicao(Long idProposicao) throws Exception { private static void config(XStream xstream) { xstream.alias("DetalheMateria", DetalheMateria.class); xstream.alias("Materia", Proposicao.class); + //Conversao de tipos Autoria e Autor + xstream.alias("Autoria", Autoria.class); + xstream.alias("Autor", Autor.class); xstream.aliasField("Materias", DetalheMateria.class, "proposicoes"); @@ -49,9 +57,53 @@ private static void config(XStream xstream) { xstream.aliasField("Numero", Proposicao.class, "numero"); xstream.aliasField("Ano", Proposicao.class, "ano"); xstream.aliasField("Ementa", Proposicao.class, "ementa"); + //Forcar o tratamento de autoria como string + xstream.aliasField("Autoria", Proposicao.class, "autor"); + xstream.registerLocalConverter(Proposicao.class, "autor", new AuthorConverter()); + } } +class AuthorConverter implements Converter { + + @Override + public boolean canConvert(Class type) { + return String.class.equals(type); + } + + @Override + public void marshal(Object source, HierarchicalStreamWriter writer, + MarshallingContext context) { + // Desnecessario, somente parseia XML->Objetos + + } + @Override + public Object unmarshal(HierarchicalStreamReader reader, + UnmarshallingContext context) { + if ("Autoria".equals(reader.getNodeName())) { + Autoria au = (Autoria) context + .convertAnother(reader, Autoria.class); + if (au != null && au.Autor != null && au.Autor.Nome != null) { + return au.Autor.Nome; + } else { + return ""; + } + + } + return reader.getValue(); + } +} +/* wrapper para o nó /Autoria/Autor + */ +class Autor { + String Nome; +} +/* wrapper para o nó /Autoria + */ +class Autoria{ + Autor Autor; + +} class DetalheMateria { protected List proposicoes;