aes.pica.touresbalon.tb_serviciosbolivariano.ServiciosBolivarianos.java Source code

Java tutorial

Introduction

Here is the source code for aes.pica.touresbalon.tb_serviciosbolivariano.ServiciosBolivarianos.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 aes.pica.touresbalon.tb_serviciosbolivariano;

import aes.pica.touresbalon.tb_serviciosbolivariano.utils.Constantes;
import aes.pica.touresbalon.tb_serviciosbolivariano.vo.TouresBalonOrdenVO;
import aes.pica.touresbalon.tb_serviciosbolivariano.vo.ViajeVO;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;
import org.apache.commons.io.FileUtils;

/**
 *
 * @author jdtrujillop
 */
public class ServiciosBolivarianos implements IServiciosBolivarianos {

    private File rutaConsulta;
    private File rutaReservas;
    private FileReader fr;
    private BufferedReader br;

    private static final int POSICION_CANCELAR = 6;

    public ServiciosBolivarianos() {
    }

    public ServiciosBolivarianos(String rutaConsulta, String rutaReservas) throws ServiciosBolivarianosExcepcion {
        this.rutaConsulta = new File(rutaConsulta);
        this.rutaReservas = new File(rutaReservas);

        if (this.rutaConsulta.exists() && this.rutaConsulta.isDirectory()) {
        } else {
            throw new ServiciosBolivarianosExcepcion("No existe el directorio de la ruta de consultas");
        }

        if (this.rutaReservas.exists() && this.rutaReservas.isDirectory()) {
        } else {
            throw new ServiciosBolivarianosExcepcion("No existe el directorio de la ruta de reservas");
        }
    }

    @Override
    public List<ViajeVO> consultarViajes(String fechaViaje, String ciudadOrigen, String ciudadDestino) {
        List<ViajeVO> listaViajes = new ArrayList<>();
        String nombreArchivo = Constantes.NAME_VIAJES + fechaViaje + Constantes.CSV_FILE;
        try {
            File archivoConsulta = FileUtils.getFile(rutaConsulta, nombreArchivo);
            if (archivoConsulta != null && archivoConsulta.exists()) {
                List<String> lineasArchivo = FileUtils.readLines(archivoConsulta);
                System.out.println("Archivo encontrado: " + archivoConsulta.getAbsoluteFile());
                ViajeVO viajeAux;
                for (String s : lineasArchivo) {
                    viajeAux = new ViajeVO(s);
                    if (viajeAux.getCiudadOrigen().equalsIgnoreCase(ciudadOrigen)
                            && viajeAux.getCiudadDestino().equalsIgnoreCase(ciudadDestino)) {
                        listaViajes.add(viajeAux);
                    }
                }
            } else {
                System.out.println("No existe archivo: " + nombreArchivo + " en el directorio: " + rutaConsulta);
            }
        } catch (IOException ex) {
            System.err.println(ex.toString());
        }
        return listaViajes;
    }

    @Override
    public List<ViajeVO> consultarViajes(String fechaViaje, String ciudadOrigen, String ciudadDestino,
            String horaSalida) {
        List<ViajeVO> listaViajes = new ArrayList<>();
        String nombreArchivo = Constantes.NAME_VIAJES + fechaViaje + Constantes.CSV_FILE;
        try {
            File archivoConsulta = FileUtils.getFile(rutaConsulta, nombreArchivo);
            if (archivoConsulta != null && archivoConsulta.exists()) {
                List<String> lineasArchivo = FileUtils.readLines(archivoConsulta);
                System.out.println("Archivo encontrado: " + archivoConsulta.getAbsoluteFile());
                ViajeVO viajeAux;
                for (String s : lineasArchivo) {
                    viajeAux = new ViajeVO(s);
                    if (viajeAux.getCiudadOrigen().equalsIgnoreCase(ciudadOrigen)
                            && viajeAux.getCiudadDestino().equalsIgnoreCase(ciudadDestino)
                            && viajeAux.getHoraSalida().equalsIgnoreCase(horaSalida)) {
                        listaViajes.add(viajeAux);
                    }
                }
            } else {
                System.out.println("No existe archivo: " + nombreArchivo + " en el directorio: " + rutaConsulta);
            }
        } catch (IOException ex) {
            System.err.println(ex.toString());
        }
        return listaViajes;
    }

    @Override
    public boolean crearReserva(String ordenId, String nombres, String apellidos, String fechaSalida,
            List<ViajeVO> listViajes, boolean sobreEscribir) {
        String nombreArchivo = Constantes.NAME_RESERVAS + ordenId + Constantes.CSV_FILE;
        List<String> lineasArchivo = new ArrayList<>();
        for (ViajeVO v : listViajes) {
            lineasArchivo.add(apellidos.toUpperCase() + "," + nombres.toUpperCase() + ","
                    + fechaSalida.toUpperCase() + "," + v.getNumViaje() + "," + v.getNumSilla() + "," + "A,");
        }
        try {
            FileUtils.writeLines(new File(rutaReservas, nombreArchivo), lineasArchivo, sobreEscribir);
            return true;
        } catch (IOException ex) {
            System.err.println("Error creando archivo de reservas");
            System.err.println(ex.toString());
        }
        return false;
    }

    @Override
    public List<TouresBalonOrdenVO> consultaReservas(String ordenId) {
        List<TouresBalonOrdenVO> listaReservasTB = new ArrayList<>();
        String nombreArchivo = Constantes.NAME_RESERVAS + ordenId + Constantes.CSV_FILE;
        try {
            File archivoConsulta = FileUtils.getFile(rutaReservas, nombreArchivo);
            if (archivoConsulta != null && archivoConsulta.exists()) {
                List<String> lineasArchivo = FileUtils.readLines(archivoConsulta);
                System.out.println("Archivo encontrado: " + archivoConsulta.getAbsoluteFile());
                for (String s : lineasArchivo) {
                    listaReservasTB.add(new TouresBalonOrdenVO(s));
                }
            } else {
                System.out.println("No existe archivo: " + nombreArchivo + " en el directorio: " + rutaReservas);
            }
        } catch (IOException ex) {
            System.err.println(ex.toString());
        }
        return listaReservasTB;
    }

    @Override
    public boolean cancelarReserva(int ordenId) {

        String nombreArchivo = Constantes.NAME_RESERVAS + ordenId + Constantes.CSV_FILE;
        Random numaleatorio = new Random(3816L);

        try {
            File archivoConsulta = FileUtils.getFile(rutaReservas, nombreArchivo);
            String nombreArchivoNvo = archivoConsulta.getParent() + "/auxiliar"
                    + String.valueOf(Math.abs(numaleatorio.nextInt())) + ".txt";
            File archivoConsultaNvo = new File(nombreArchivoNvo);

            if (archivoConsulta != null && archivoConsulta.exists()) {

                br = new BufferedReader(new FileReader(archivoConsulta));
                String linea = "";

                while ((linea = br.readLine()) != null) {

                    if (linea.indexOf(ordenId + ",") != -1) {
                        System.out.println("" + linea);
                        String lineaNva = null;
                        /*for (int i = 0; i <= linea.length(); i++){
                        System.out.println("Caracter " + i + ": " + linea.charAt(i));
                        if (POSICION_CANCELAR == i) {
                            lineaNva.concat("C");   
                        } else {
                            lineaNva.concat(String.valueOf(linea.charAt(i)));
                        }                            
                        }*/

                        StringTokenizer token = new StringTokenizer(linea, ".");
                        int c = 1;
                        while (token.hasMoreTokens()) {
                            if (POSICION_CANCELAR == c) {
                                lineaNva.concat("C");
                            } else {
                                System.out.println(token.nextToken());
                                lineaNva.concat(token.nextToken());
                            }
                            c++;
                        }

                        EcribirFichero(archivoConsultaNvo, linea);
                    } else {
                        EcribirFichero(archivoConsulta, linea);
                    }

                }
                BorrarFichero(archivoConsulta);
                archivoConsultaNvo.renameTo(archivoConsulta);
                br.close();

            } else {

                System.out.println("No existe archivo: " + nombreArchivo + " en el directorio: " + rutaReservas);

            }

            return true;

        } catch (IOException ex) {

            System.err.println(ex.toString());

        }

        return false;

    }

    public static void EcribirFichero(File Ffichero, String SCadena) {
        try {
            //Si no Existe el fichero lo crea
            if (!Ffichero.exists()) {
                //Ffichero.createNewFile();
            }
            /*Abre un Flujo de escritura,sobre el fichero con codificacion utf-8. 
            *Adems  en el pedazo de sentencia "FileOutputStream(Ffichero,true)",
            *true es por si existe el fichero seguir aadiendo texto y no borrar lo que tenia*/
            BufferedWriter Fescribe = new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream(Ffichero, true), "utf-8"));
            /*Escribe en el fichero la cadena que recibe la funcin. 
            *el string "\r\n" significa salto de linea*/
            Fescribe.write(SCadena + "\r\n");
            //Cierra el flujo de escritura
            Fescribe.close();
        } catch (Exception ex) {
            //Captura un posible error le imprime en pantalla 
            System.out.println(ex.getMessage());
        }
    }

    public static void BorrarFichero(File fichero) {
        try {
            /*Si existe el fichero*/
            if (fichero.exists()) {
                /*Borra el fichero*/
                fichero.delete();
                System.out.println("Fichero Borrado con Exito");
            }
        } catch (Exception ex) {
            /*Captura un posible error y le imprime en pantalla*/
            System.out.println(ex.getMessage());
        }
    }

    //Getters and Setters
    public File getRutaConsulta() {
        return rutaConsulta;
    }

    public void setRutaConsulta(File rutaConsulta) {
        this.rutaConsulta = rutaConsulta;
    }

    public File getRutaReservas() {
        return rutaReservas;
    }

    public void setRutaReservas(File rutaReservas) {
        this.rutaReservas = rutaReservas;
    }

}