Ola,
Como eu faço para trazer o valor que está sendo colocado no setId da classe Balanco no momento da Serialização?
@XStreamAlias("balanco")
public class Balanco {
@XStreamAlias("id")
//@XStreamAsAttribute //isso afeta somente para geração de xml. para json, usar useAttributeFor
private int id;
private List<Operacao> compras = new ArrayList<Operacao>();
private List<Operacao> vendas = new ArrayList<Operacao>();
public void addCompra(Operacao operacao) {
this.compras.add(operacao);
}
public void addVenda(Operacao operacao) {
this.vendas.add(operacao);
}
public List<Operacao> getCompras() {
return compras;
}
public List<Operacao> getVendas() {
return vendas;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
@XStreamAlias("operacao")
public class Operacao {
private String papel;
private double valor;
private double quantidade;
private Date data;
public Date getData() {
return data;
}
public void setData(Date date) {
this.data = date;
}
public String getPapel() {
return papel;
}
public void setPapel(String papel) {
this.papel = papel;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public double getQuantidade() {
return quantidade;
}
public void setQuantidade(double quantidade) {
this.quantidade = quantidade;
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("\noperacao ");
stringBuilder.append("\npapel: ");
stringBuilder.append(papel);
stringBuilder.append("\nvalor: ");
stringBuilder.append(valor);
stringBuilder.append("\nquantidade: ");
stringBuilder.append(quantidade);
stringBuilder.append("\ndata: ");
stringBuilder.append(data);
stringBuilder.append("\n");
return stringBuilder.toString();
}
}
public class XStreamBalancoTester {
public static void main(String[] args) {
ArrayList<Object> balancos = new ArrayList<Object>();
XStreamBalancoTester tester = new XStreamBalancoTester();
//Serialização
XStream xstream = new XStream(new DomDriver()); //Stax imprime em linha unica com cabeçalho
xstream.autodetectAnnotations(true);
xstream.alias("id", Balanco.class);
xstream.setMode(XStream.NO_REFERENCES);
balancos = tester.getBalancos(5);
String xml = xstream.toXML(balancos);
System.out.println(xml);
//Desserialização
XStream xstreamRead = new XStream(new DomDriver());
xstreamRead.autodetectAnnotations(true);
xstreamRead.alias("balanco", Balanco.class);
xstreamRead.alias("operacao", Operacao.class);
Balanco balanco2 = (Balanco)xstreamRead.fromXML(xml);
System.out.println(balanco2.getCompras());
System.out.println(balanco2.getId());
}
private ArrayList<Object> getBalancos(int contador) {
Operacao o1 = null;
Balanco b1 = null;
ArrayList<Object> objectList = new ArrayList<Object>();
int contadorr = 1;
while(contadorr <= contador) {
b1 = new Balanco();
b1.setId(contadorr);
o1 = new Operacao();
o1.setPapel("ub22");
o1.setQuantidade(150);
o1.setValor(30.62);
Calendar c1 = Calendar.getInstance();
o1.setData(c1.getTime());
contadorr++;
objectList.add(o1);
System.out.println(b1.getId());
}
return objectList;
}
}