Desenvolvi essa aplicação na disciplina de programação Java. Ela está fazendo o que foi proposto, já foi entregue. Porém agora que estou de férias gostaria de refatorá-la, existem muitos métodos semelhantes, porém não consigo enxergar como tratá-los mais genericamente. Segue o exemplo abaixo, essa classe faz todo o crud da aplicação. Se alguém tiver alguma opinião, agradeço.
PS: Não postei o código inteiro para não poluir, se precisarem algum método para completar a ideia eu posto.
[code]public class ManipuladorXML {
SAXBuilder builder = new SAXBuilder();
File arquivoPerguntas = new File("src/xml/perguntas.xml");
File arquivoMaterias = new File("src/xml/materia.xml");
File arquivoProvas = new File("src/xml/provas.xml");
Document documentPerguntas = criarDocument(arquivoPerguntas);
Document documentMaterias = criarDocument(arquivoMaterias);
Document documentProvas = criarDocument(arquivoProvas);
Element rootNodePerguntas = documentPerguntas.getRootElement();
Element rootNodeMaterias = documentMaterias.getRootElement();
Element rootNodeProvas = documentProvas.getRootElement();
public Document criarDocument(File _arquivo) {
Document document = new Document();
try {
document = (Document) builder.build(_arquivo);
} catch (IOException | JDOMException io) {
System.out.println(io.getMessage());
}
return document;
}
public void inserirPerguntaXML(Pergunta _pergunta) {
Element pergunta = new Element("pergunta");
pergunta.setAttribute("descricao", _pergunta.getDescricao());
pergunta.setAttribute("materia", _pergunta.getMateria());
pergunta.setAttribute("nivel", _pergunta.getNivel());
for (int i = 0; i < 4; i++) {
Element resposta = new Element("resposta");
resposta.setAttribute("descricao", _pergunta.getRespostas().get(i).getDescricao());
if (_pergunta.getRespostas().get(i).estaCorreta()) {
resposta.setAttribute("correta", "sim");
} else {
resposta.setAttribute("correta", "nao");
}
pergunta.addContent(resposta);
}
rootNodePerguntas.addContent(pergunta);
gravar(documentPerguntas, arquivoPerguntas);
}
public void inserirMateriaXML(Materia _materia) {
List list = rootNodeMaterias.getChildren("materia");
int codigo = 0;
for (Object o : list) {
Element materia = (Element) o;
codigo = Integer.parseInt(materia.getAttributeValue("codigo"));
}
Element materia = new Element("materia");
materia.setAttribute("codigo", Integer.toString(codigo + 1));
materia.setAttribute("descricao", _materia.getDescricao());
rootNodeMaterias.addContent(materia);
gravar(documentMaterias, arquivoMaterias);
}
public void inserirProva(Prova _prova) {
Element prova = new Element("prova");
prova.setAttribute("id", getIdProva());
prova.setAttribute("curso", _prova.getCurso());
prova.setAttribute("materia", _prova.getMateria());
prova.setAttribute("nivel", _prova.getNivel());
prova.setAttribute("qtdPerguntas", Integer.toString(_prova.getQuantidadePerguntas()));
prova.setAttribute("professor", _prova.getProfessor());
prova.setAttribute("data", _prova.getData());
for (int i = 0; i < _prova.getQuantidadePerguntas(); i++) {
Element pergunta = new Element("pergunta");
pergunta.setAttribute("descricao", _prova.getPerguntas().get(i).getDescricao());
pergunta.setAttribute("materia", _prova.getPerguntas().get(i).getMateria());
pergunta.setAttribute("nivel", _prova.getPerguntas().get(i).getNivel());
for (int r = 0; r < 4; r++) {
Element resposta = new Element("resposta");
resposta.setAttribute("descricao", _prova.getPerguntas().get(i).getRespostas().get(r).getDescricao());
if (_prova.getPerguntas().get(i).getRespostas().get(r).estaCorreta()) {
resposta.setAttribute("correta", "sim");
} else {
resposta.setAttribute("correta", "nao");
}
pergunta.addContent(resposta);
}
prova.addContent(pergunta);
}
rootNodeProvas.addContent(prova);
gravar(documentProvas, arquivoProvas);
}[/code]