Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelcoutinho committed Sep 8, 2015
2 parents 0da4d66 + a8d888c commit 3e2d2f4
Showing 1 changed file with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -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");

Expand All @@ -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<Proposicao> proposicoes;
Expand Down

0 comments on commit 3e2d2f4

Please sign in to comment.