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