Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.forum.action.eder; import com.forum.beans.Hilo; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.ServletContext; import org.apache.struts2.ServletActionContext; import com.forum.dao.ForumDAO; import com.forum.beans.Respuesta; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; import org.jdom2.DataConversionException; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; /** * * @author zack */ public class TemaACT extends ActionSupport { private ForumDAO forumDAO; private Hilo tema; private List<Respuesta> respuestas; private int id; public ForumDAO getForumDAO() { return forumDAO; } public void setForumDAO(ForumDAO forumDAO) { this.forumDAO = forumDAO; } public Hilo getTema() { return tema; } public void setTema(Hilo tema) { this.tema = tema; } public List<Respuesta> getRespuestas() { return respuestas; } public void setRespuestas(List<Respuesta> respuestas) { this.respuestas = respuestas; } public int getId() { return id; } public void setId(int id) { this.id = id; } public TemaACT() { } public String execute() throws Exception { ServletContext context = ServletActionContext.getServletContext(); String url = context.getRealPath("/"); System.out.println(url); // TUVE QUE RECURRIR AL HARDCODING tema = this.tema(id, url + "/database.xml"); respuestas = (List<Respuesta>) this.respuestasTema(id, url + "/database.xml"); return SUCCESS; } /* ** ** ** ** ** ** ** Lamento hacer estas porqueras, pero Java para la Web me tiene los huevos por el piso...a la chingada DAO! xD ** ** ** ** ** ** ** ** ** ** */ private void write(Document document, String url) { try { new XMLOutputter(Format.getPrettyFormat()).output(document, new FileOutputStream(url, false)); } catch (IOException ex) { ex.printStackTrace(); } } private Document getDocument(String url) { SAXBuilder builder = new SAXBuilder(); Document document = null; try { document = builder.build(url); return document; } catch (IOException | JDOMException ex) { ex.printStackTrace(); } return null; } private Hilo tema(int id, String url) { String megacadena = ""; Hilo h = new Hilo(); Document document = getDocument(url); Element root = document.getRootElement(); Element temas = root.getChild("temas"); List<Element> child = temas.getChildren(); for (Element e : child) { try { if (e.getAttribute("id").getIntValue() == id) { h.setTitulo(e.getChildText("titulo")); h.setDetalles(e.getChildText("detalles")); List<Element> e2 = e.getChildren("tags"); for (int i = 0; i < e2.size(); i++) { megacadena += e2.get(i).getValue() + ","; } h.setEtiquetas(megacadena); break; } } catch (DataConversionException ex) { } } return h; } private ArrayList<Respuesta> respuestasTema(int id, String url) { ArrayList<Respuesta> arreglo = new ArrayList<>(); Document document = getDocument(url); Element root = document.getRootElement(); Element temas = root.getChild("respuestas"); List<Element> child = temas.getChildren(); for (Element e : child) { if (Integer.parseInt(e.getAttributeValue("id")) != id) continue; List<Element> child2 = e.getChildren(); for (Element e2 : child2) { arreglo.add(new Respuesta(e2.getAttributeValue("usuario"), e2.getValue(), Integer.parseInt(e2.getAttributeValue("id")), Integer.parseInt(e2.getAttributeValue("calificacion")))); } } return arreglo; } }