Meu Objeto Java não é persistido com todos os seus atributos em XML

0 respostas
javafxjava
G

Estou usando a API JAXB. Eu consigo persistir certinho um objeto java em xml mas só é persistido o atributo “Nome” o resto dos atributos não são persistidos. Aqui estão meus códigos:

Este é o método que salva o objeto no XML.

/**
 * Salva os dados do grupo atual no arquivo especificado.
 * 
 * @param file
 */
public void saveDataToFile(File file) {
    try {
        JAXBContext context = JAXBContext
                .newInstance(GruposListWrapper.class);
        Marshaller m = context.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        // Envolvendo nossos dados da pessoa.
        GruposListWrapper wrapper = new GruposListWrapper();
        wrapper.setGrupos(gruposData);

        // Enpacotando e salvando XML  no arquivo.
        m.marshal(wrapper, file);

        // Saalva o caminho do arquivo no registro.
        setFilePath(file);
    } catch (Exception e) { // catches ANY exception
        e.printStackTrace();
        Alert alert = new Alert(AlertType.ERROR);
        alert.setTitle("Error");
        alert.setHeaderText("Could not save data");
        alert.setContentText("Could not save data to file:\n" + file.getPath());
        alert.showAndWait();
    }
}

Esta é a classe Wrapper

/**
* Classe auxiliar para envolver uma lista de grupos. Esta é usada para 
*salvar a lista de grupos em XML.
* 
* @author Marco Jakob
*/
@XmlRootElement(name = "grupos")
public class GruposListWrapper {

private List<Grupos> grupos;

@XmlElement(name = "grupo")
public List<Grupos> getGrupos() {
    return grupos;
}

public void setGrupos(List<Grupos> grupos) {
    this.grupos = grupos;
}
}

A lista a ser salva é esta:

private ObservableList<Grupos> gruposData = 
FXCollections.observableArrayList();

Esta é minha classe Grupos:

public class Grupos implements Pesquisavel{
    private StringProperty nome;
    private StringProperty quantidadeProdutos;
    private StringProperty valorTotal;
    private List<Produtos> listaProdutos = new ArrayList<>();

    public Grupos() {
        this(null);
    }

    public Grupos(String nome) {
        this.nome = new SimpleStringProperty(nome);
        this.quantidadeProdutos = new SimpleStringProperty("10");
        this.valorTotal = new SimpleStringProperty("10");
    }

    public Grupos(String nome, String quantidadeProdutos, String valorTotal) {
        this.nome = new SimpleStringProperty(nome);
        this.quantidadeProdutos = new SimpleStringProperty(quantidadeProdutos);
        this.valorTotal = new SimpleStringProperty(valorTotal);
    }

    public void setNome(String nome) {
        this.nome = new SimpleStringProperty(nome);
    }

    public void setQuantidadeProdutos() {
        this.quantidadeProdutos = new SimpleStringProperty(Integer.toString(getListaProdutos().size()));
    }

    public void setValorTotal() {
        Double novoValor = 0.0;
        for(Produtos x: getListaProdutos()) {
            novoValor += Double.parseDouble(x.getValor().get());
        }
        this.valorTotal = new SimpleStringProperty(Double.toString(novoValor));
    }

    public void setQuantidadeProdutos(String quantidade) {
        this.quantidadeProdutos = new SimpleStringProperty(quantidade);
    }

    public void setValorTotal(String valor) {
        this.valorTotal = new SimpleStringProperty(valor);
    }

    public StringProperty getNomeProperty() {
        return nome;
    }

    public StringProperty getQuantidadeProdutosProperty() {
        return quantidadeProdutos;
    }

    public StringProperty getValorTotalProperty() {
        return valorTotal;
    }

    public List<Produtos> getListaProdutos(){
        return listaProdutos;
    }

    @Override
    public String getNome() {
        return nome.get();
    }

    @Override
    public String getCodigo() {
        return null;
    }

    @Override
    public String toString() {
        return getNome();
    }


}

Quando vou salvar no XML ele sempre salva assim, não importa o quanto eu mude os atributos, quantas mudanças eu faça, ele sempre salva só o nome do Grupo no XML:

Criado 8 de dezembro de 2019
Respostas 0
Participantes 1