com.forum.action.eder.TemaACT.java Source code

Java tutorial

Introduction

Here is the source code for com.forum.action.eder.TemaACT.java

Source

/*
 * 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;
    }

}