Controladores.ControladorCargaSolicitudes.java Source code

Java tutorial

Introduction

Here is the source code for Controladores.ControladorCargaSolicitudes.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 Controladores;

import AccesoDatos.DaoSolicitud;
import Logica.Elementotraslado;
import Logica.Motivocancelacion;
import Logica.Patinadores;
import Logica.Prioridad;
import Logica.Servicio;
import Logica.Solicitud;
import Logica.Tiposolicitud;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.primefaces.model.UploadedFile;
import Utilities.FacesUtils;

/**
 *
 * @author Marcel David Sandoval
 * Clase encargada de manejar los eventos para la carga manual de solicitudes mediante archivos planos
 */
@ManagedBean
@ViewScoped
public class ControladorCargaSolicitudes {

    private UploadedFile archivo;

    /**
     * Creates a new instance of ControladorCargaSolicitudes
     */
    public ControladorCargaSolicitudes() {

    }

    /**
     * Permite cargar las solicitudes desde un archivo plano
     *
     */
    public void cargarSolicitudesArchivoPlano() {
        File file = null;
        InputStream data = null;
        boolean carga = save();
        try {
            if (carga) {
                if (System.getProperty("os.name").toUpperCase().contains("LINUX")) {
                    file = new File("/home/root2/files/" + archivo.getFileName());
                } else {
                    file = new File("D:\\" + archivo.getFileName());
                }
                BufferedReader reader = new BufferedReader(new FileReader(file));
                String line;
                ArrayList<Solicitud> sol = new ArrayList<>();
                DaoSolicitud dao = new DaoSolicitud();

                while ((line = reader.readLine()) != null) {
                    Solicitud s = new Solicitud();
                    s.setSolNomsolicitante(line.split(";")[0].toUpperCase());
                    s.setSolPaciente(line.split(";")[1].toUpperCase());
                    Elementotraslado ele = new Elementotraslado();
                    ele.setEtrId(Integer.parseInt(line.split(";")[2]));
                    s.setElementoTraslado(ele);
                    s.setSolTraslado(line.split(";")[3].toUpperCase());
                    s.setSolAislamiento(line.split(";")[4].toUpperCase());
                    s.setSolEstado(line.split(";")[5].toUpperCase());
                    s.setSolDescripcion(line.split(";")[6].toUpperCase());
                    s.setSolVarsolicitud(line.split(";")[7]);

                    Servicio ser = new Servicio();
                    ser.setSerId(Integer.parseInt(line.split(";")[8]));
                    s.setServicio(ser);

                    Tiposolicitud tps = new Tiposolicitud();
                    tps.setTpsId(Integer.parseInt(line.split(";")[9]));
                    s.setTipoSolicitud(tps);

                    Prioridad pri = new Prioridad();
                    pri.setPriId(Integer.parseInt(line.split(";")[10]));
                    s.setPrioridad(pri);

                    Patinadores pat = new Patinadores();
                    pat.setPatId(Integer.parseInt(line.split(";")[11]));
                    s.setPatinadores(pat);

                    Motivocancelacion mca = new Motivocancelacion();
                    mca.setMcaId(Integer.parseInt(line.split(";")[12]));
                    s.setMotivoCancelacion(mca);

                    s.setSolTieejecucion(Integer.parseInt(line.split(";")[13]));

                    //Construccion Fechas
                    int[] datosFecha;
                    Calendar date = Calendar.getInstance();

                    //Fecha Registros
                    if (!line.split(";")[14].equals("")) {
                        datosFecha = construirFecha(line.split(";")[14]);
                        date.set(datosFecha[0], datosFecha[1] - 1, datosFecha[2], datosFecha[3], datosFecha[4]);
                        s.setSolFecregsolicitud(date.getTime());
                    } else {
                        s.setSolFecregsolicitud(null);
                    }
                    //Fecha programacion
                    if (!line.split(";")[15].equals("")) {
                        datosFecha = construirFecha(line.split(";")[15]);
                        date.set(datosFecha[0], datosFecha[1] - 1, datosFecha[2], datosFecha[3], datosFecha[4]);
                        s.setSolFecprosolicitud(date.getTime());
                    } else {
                        s.setSolFecprosolicitud(null);
                    }
                    //Fecha Asignacion
                    if (!line.split(";")[16].equals("")) {
                        datosFecha = construirFecha(line.split(";")[16]);
                        date.set(datosFecha[0], datosFecha[1] - 1, datosFecha[2], datosFecha[3], datosFecha[4]);
                        s.setSolFecasisolicitud(date.getTime());
                    } else {
                        s.setSolFecasisolicitud(null);
                    }
                    //Fecha Cierre
                    if (!line.split(";")[17].equals("")) {
                        datosFecha = construirFecha(line.split(";")[17]);
                        date.set(datosFecha[0], datosFecha[1] - 1, datosFecha[2], datosFecha[3], datosFecha[4]);
                        s.setSolFecciesolicitud(date.getTime());
                    } else {
                        s.setSolFecciesolicitud(null);
                    }
                    //Fecha Cancelacion
                    if (!line.split(";")[18].equals("")) {
                        datosFecha = construirFecha(line.split(";")[18]);
                        date.set(datosFecha[0], datosFecha[1] - 1, datosFecha[2], datosFecha[3], datosFecha[4]);
                        s.setSolFeccansolicitud(date.getTime());
                    } else {
                        s.setSolFeccansolicitud(null);
                    }

                    s.setSolJusdemora(line.split(";")[19].toUpperCase());

                    Servicio centro = new Servicio();
                    centro.setSerId(Integer.parseInt(line.split(";")[20]));
                    s.setCentroCosto(centro);

                    s.setSolLogin(line.split(";")[21]);

                    Servicio destino = new Servicio();
                    destino.setSerId(Integer.parseInt(line.split(";")[22]));
                    s.setSolSerdestino(destino);

                    s.setSolCodTelefonista(Integer.parseInt(line.split(";")[23]));

                    s.setSolCodAsignador(Integer.parseInt(line.split(";")[24]));

                    sol.add(s);
                }

                //Agregar contador para contar el # de solicitudes cargadas y una forma de verificar donde murio para arrancar desde ahi
                //la nueva carga en caso de que el archivo no tengo al forma correcta
                //Hacer pruebas con archivos en formato csv
                dao.cargarSolicitudes(sol);
                FacesUtils.showFacesMessage("El archivo ha sido cargado exitsamente.", 3);
            } else {
                FacesUtils.showFacesMessage(
                        "El archivo no ha sido cargado con xito. Revise que el archivo tenga la forma correcta",
                        1);
            }

        } catch (IOException ex) {
            Logger.getLogger(ControladorSolicitud.class.getName()).log(Level.SEVERE, null, ex);
            FacesUtils.showFacesMessage(
                    "El archivo no ha sido cargado con xito. Revise que el archivo tenga la forma correcta", 1);
        } finally {
            if (data != null) {
                try {
                    data.close();
                } catch (IOException ex) {
                    Logger.getLogger(ControladorSolicitud.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            if (file != null) {
                file.delete();
            }
        }
    }

    public boolean save() {
        String filename;
        InputStream input = null;
        OutputStream output = null;
        boolean cargaExitosa = false;
        try {
            if (archivo.getFileName().endsWith(".txt") || archivo.getFileName().endsWith(".csv")) {
                filename = FilenameUtils.getName(archivo.getFileName());
                input = archivo.getInputstream();
                output = new FileOutputStream(new File("/home/root2/files", filename));
                IOUtils.copy(input, output);
                cargaExitosa = true;
            } else {
                FacesUtils.showFacesMessage(
                        "El archivo no ha sido cargado con xito. Verifique que el archivo tenga la extension txt",
                        1);
            }

        } catch (IOException ex) {
            Logger.getLogger(ControladorSolicitud.class.getName()).log(Level.SEVERE, null, ex);
            FacesUtils.showFacesMessage(
                    "El archivo no ha sido cargado con xito. Verifique que el archivo tenga la extension txt", 1);
        } finally {
            IOUtils.closeQuietly(input);
            IOUtils.closeQuietly(output);
        }

        return cargaExitosa;
    }

    /**
     * @param fecha
     * @return
     */
    public int[] construirFecha(String fecha) {
        int[] datosFecha = new int[5];
        try {
            //dia
            datosFecha[2] = Integer.parseInt(fecha.split("/")[0]);
            //mes
            datosFecha[1] = Integer.parseInt(fecha.split("/")[1]);
            //ao
            datosFecha[0] = Integer.parseInt(fecha.split("/")[2].split(" ")[0]);
            //Hora
            datosFecha[3] = Integer.parseInt(fecha.split(" ")[1].split(":")[0]);
            //Minutos
            datosFecha[4] = Integer.parseInt(fecha.split(" ")[1].split(":")[1]);
        } catch (Exception e) {
            Logger.getLogger(ControladorSolicitud.class.getName()).log(Level.SEVERE, null, e);
            FacesUtils.showFacesMessage("ERROR. Verifique que el archivo tenga la forma correcta", 1);
        }
        return datosFecha;
    }

    /*--------------------------------------------*/
    public UploadedFile getArchivo() {
        return archivo;
    }

    public void setArchivo(UploadedFile archivo) {
        this.archivo = archivo;
    }
}