com.uma.diariosur.rellenarformulario.RellenarFormulario.java Source code

Java tutorial

Introduction

Here is the source code for com.uma.diariosur.rellenarformulario.RellenarFormulario.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.uma.diariosur.rellenarformulario;

import BeanPrincipal.BeanPrincipal;
import ControlVistaHome.ControlHome;
import com.uma.diariosur.modelo.Evento;
import com.uma.diariosur.modelo.Formulario;
import com.uma.diariosur.modelo.Imagen;
import com.uma.diariosur.modelo.Usuario;
import com.uma.diariosur.modelo.Valoracion;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import java.text.SimpleDateFormat;
import com.uma.diariosur.modelo.Megusta;
import java.util.List;
import java.util.ArrayList;

import java.util.Date;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.model.UploadedFile;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;

/**
 *
 * @author Carlos
 */
@Named(value = "rellenarFormulario")
@RequestScoped
public class RellenarFormulario implements Serializable {

    private String nombre;
    private String categoria;
    private String descripcion;
    private Date fecha_inicio;
    private Date fecha_fin;
    private UploadedFile img;
    private String ubicacion;
    private Double precio;

    @Inject
    private ControlHome ctrlhome;

    public ControlHome getCtrlhome() {
        return ctrlhome;
    }

    public void setCtrlhome(ControlHome ctrlhome) {
        this.ctrlhome = ctrlhome;
    }

    public BeanPrincipal getBn() {
        return bn;
    }

    public void setBn(BeanPrincipal bn) {
        this.bn = bn;
    }

    private String aux_ext;
    private String img_aux;

    @Inject
    private BeanPrincipal bn;

    public UploadedFile getImg() {
        return img;
    }

    public void setImg(UploadedFile img) {
        this.img = img;
    }

    private String sacar_ext(String s) {

        int index = s.lastIndexOf('.');

        if (index == -1) {
            return "";
        } else {
            return s.substring(index + 1);
        }

    }

    public boolean save() throws IOException {

        boolean res = true;

        if (img.getFileName().isEmpty()) {
            res = false;
        } else {
            String ext = sacar_ext(img.getFileName());
            String aux2 = this.nombre.concat(".");
            String filename = aux2.concat(ext);
            img_aux = filename;
            InputStream input = img.getInputstream();

            String path = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/");
            String path_aux = path.substring(0, path.lastIndexOf("build"));

            OutputStream output = new FileOutputStream(new File(path_aux.concat("web//resources"), filename));
            aux_ext = ext;

            try {
                IOUtils.copy(input, output);
            } finally {
                IOUtils.closeQuietly(input);
                IOUtils.closeQuietly(output);
            }
        }

        return res;
    }

    public Date getFecha_inicio() {
        return fecha_inicio;
    }

    public void setFecha_inicio(Date fecha_inicio) {
        this.fecha_inicio = fecha_inicio;
    }

    public Date getFecha_fin() {
        return fecha_fin;
    }

    public void setFecha_fin(Date fecha_fin) {
        this.fecha_fin = fecha_fin;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getUbicacion() {
        return ubicacion;
    }

    public void setUbicacion(String ubicacion) {
        this.ubicacion = ubicacion;
    }

    public Double getPrecio() {
        return precio;
    }

    public void setPrecio(Double precio) {
        this.precio = precio;
    }

    public RellenarFormulario() {

    }

    public String enviar() throws IOException {

        if (this.nombre.isEmpty()) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "Por favor introduzca un nombre");
            FacesContext.getCurrentInstance().addMessage("myform:nombre", message);
            return null;
        }

        boolean encontrado = false;
        int i = 0;

        while (i < bn.getEventos().size() && !encontrado) {
            if (bn.getEventos().get(i).getNombre().equalsIgnoreCase(this.nombre)) {
                encontrado = true;
            }
            i++;
        }

        if (encontrado) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "El evento ya esta en el sistema");
            FacesContext.getCurrentInstance().addMessage("myform:nombre", message);
            return null;
        } else {

            if (this.nombre.isEmpty() || this.descripcion.isEmpty() || this.categoria.isEmpty()
                    || this.fecha_inicio == null || this.fecha_fin == null || this.ubicacion.isEmpty()
                    || this.precio == null) {
                FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Faltan atributos por introducir!"));
                return null;
            }

            if (this.fecha_inicio.after(fecha_fin)) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error", "Introduzca fechas de inicio y fin reales (fecha inicio antes que fecha fin!!"));
                return null;
            }

            if (!save()) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                        "la imagen no se subio correctamente");
                FacesContext.getCurrentInstance().addMessage("myform:img", message);
                return null;
            }

            // Creacion de la imagen

            Imagen im = new Imagen();
            im.setEnlace(img_aux);
            im.setTipo(aux_ext);

            if (ctrlhome.getUsuario() != null) {
                Formulario form = new Formulario();
                form.setNombre(nombre);
                form.setDescripcion(descripcion);
                form.setCategoria(categoria);
                form.setUbicacion(ubicacion);
                form.setPrecio(precio);
                form.setFecha_inicio(fecha_inicio);
                form.setFecha_fin(fecha_fin);
                form.setUsuario(ctrlhome.getUsuario());
                form.setEstado("pendiente");
                form.setFecha_subida(new Date());
                form.setImg(im);
                im.setF(form);
                form.setImg(im);
                bn.addForm(form);
            }

            if (ctrlhome.getPeriodista() != null) {
                Evento ev = new Evento(nombre, descripcion, categoria, fecha_inicio, fecha_fin, precio, ubicacion,
                        im, ctrlhome.getPeriodista());
                List<Valoracion> v_vacia = new ArrayList();
                im.setEvento(ev);
                List<Megusta> m_gusta = new ArrayList();
                ev.setMeGusta(m_gusta);
                ev.setImagen(im);
                ev.setValoraciones(v_vacia);
                bn.addEvent(ev);
            }

            bn.addImage(im);

            return "PaginaHome.xhtml";
        }

    }

    public String comprobar() {

        if (this.nombre.isEmpty()) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "Por favor introduzca un nombre");
            FacesContext.getCurrentInstance().addMessage("myform:nombre", message);
            return null;
        }

        boolean encontrado = false;
        int i = 0;

        while (i < bn.getEventos().size() && !encontrado) {
            if (bn.getEventos().get(i).getNombre().equalsIgnoreCase(this.nombre)) {
                encontrado = true;
            }
            i++;
        }

        if (encontrado) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error",
                    "El evento ya esta en el sistema");
            FacesContext.getCurrentInstance().addMessage("myform:nombre", message);
            return null;
        } else {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "",
                    "El evento no esta en el sistema");
            FacesContext.getCurrentInstance().addMessage("myform:nombre", message);
            return null;
        }

    }

    public String home() {
        return "PaginaHome.xhtml";
    }

}