Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Calendar;
- import java.util.Date;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- public class RutinasPeliculas{
- static final String[] nombreDatoUsuarios = {"Cedula", "Nombre", "Apellido 1", "Apellido 2", "Telefono"},
- nombreDatoPeliculas = {"Titulo", "Tipo", "Ano de produccion", "Ubicacion", "Id", "Estado"},
- nombreDatoPrestamos = {"Cedula del usuario", "Id de la pelicula", "Fecha inicial", "Fecha final"};
- static final byte MAX_PRESTAMO = 5,
- U_CED = 0, U_NMBR = 1, U_APLLD1 = 2, U_APLLD2 = 3, U_TELFN = 4,
- PEL_TITL = 0, PEL_TIPO = 1, PEL_ANO = 2, PEL_UBICN = 3, PEL_ID = 4, PEL_ESTD = 5,
- PRE_U_CED = 0, PRE_PEL_ID = 1, PRE_FECH_INI = 2, PRE_FECH_FIN = 3;
- static final String PEL_PRSTD_SI = "Alquilada", PEL_PRSTD_NO = "Sin alquilar";
- static final SimpleDateFormat formFecha = new SimpleDateFormat("dd/MM/yyyy");
- static String[][] usuarios, peliculas, prestamos;
- // usuarios [cedula, nombre, apellido1, apellido2, telefono]
- // peliculas [titulo, tipo, ano, ubicacion, id, estado]
- // prestamos [cedulaUsuario, idPelicula, fechaInicio, fechaFinal]
- public static String obtenerInfoPelicula(String idPelicula, int modo){
- String[] pelicula = obtenerPeliculaPorID(idPelicula);
- String info = "";
- if(pelicula != null){
- int[] datos;
- switch(modo){
- default:
- case 1: // modo 1, en consulta por pelicula, muestra todos los datos
- datos = new int[]{PEL_TITL, PEL_ID, PEL_TIPO, PEL_ANO, PEL_ESTD};
- break;
- case 2: // modo 2, en consulta por pelicula prestada, muestra solo id y titulo
- datos = new int[]{PEL_ID, PEL_TITL};
- break;
- }
- for(int i : datos){
- info += nombreDatoPeliculas[i]+": "+pelicula[i]+"\n";
- }
- }else{
- info = "La pelicula no esta registrada";
- }
- return info;
- }
- public static boolean registrarUsuario(String[] usuario){
- boolean resul = false;
- // revisar si no hay usuarios con la misma cedula antes de registrar un usuario nuevo
- if(buscarPrimerFila(usuarios, U_CED, usuario[U_CED]) == null){
- usuarios = agregarFila(usuario, usuarios);
- resul = true;
- }
- return resul;
- }
- public static boolean registrarPelicula(String[] pelicula){
- boolean resul = false;
- // revisar si no hay peliculas con el mismo titulo antes de registrar esta pelicula
- if(buscarPrimerFila(peliculas, PEL_TITL, pelicula[PEL_TITL]) == null){
- // agregar el id al arreglo pelicula (el id es igual a la cantidad de peliculas + 1)
- pelicula = agregarDato(Integer.toString(obtenerCantFilas(peliculas)+1), pelicula);
- // agregar el estado al arreglo pelicula (inicialmente no prestada)
- pelicula = agregarDato(PEL_PRSTD_NO, pelicula);
- peliculas = agregarFila(pelicula, peliculas);
- resul = true;
- }
- return resul;
- }
- public static int registrarPrestamo(String[] prestamo) throws ParseException{
- int resul = 1;
- // verificar si el usuario esta registrado
- if(usuarioEstaReg(prestamo[PRE_U_CED])){
- // verificar si la pelicula esta registrada
- if(peliculaEstaReg(prestamo[PRE_PEL_ID])){
- // verificar si la pelicula no ha sido prestada
- if(obtenerEstadoPelicula(prestamo[PRE_PEL_ID])==PEL_PRSTD_NO){
- // actualizar el estado de la pelicula correspondiente
- actualizarEstadoPelicula(prestamo[PRE_PEL_ID], PEL_PRSTD_SI);
- // reemplazar el numero de dias con la fecha de devolucion (que es lo que hay que registrar)
- prestamo[PRE_FECH_FIN] = obtenerFechaDevolucion(prestamo[PRE_FECH_INI], Integer.parseInt(prestamo[PRE_FECH_FIN]));
- prestamos = agregarFila(prestamo, prestamos);
- }else{
- resul = -2; // pelicula esta prestada
- }
- }else{
- resul = -1; // pelicula no esta registrada
- }
- }else{
- resul = 0; // usuario no esta registrado
- }
- return resul;
- }
- public static void actualizarEstadoPelicula(String idPelicula, String estado){
- int indicePelicula = buscarIndicePrimerFila(peliculas, PEL_ID, idPelicula);
- actualizarDatoEnTabla(peliculas, indicePelicula, PEL_ESTD, estado);
- }
- public static boolean esDuracionValida(int nDias){
- return nDias <= MAX_PRESTAMO;
- }
- public static int obtenerCantFilas(String[][] tabla){
- int cantFilas = 0;
- if(tabla != null){
- cantFilas = tabla.length;
- }
- return cantFilas;
- }
- public static boolean usuarioEstaReg(String cedUsuario){
- return obtenerUsuario(cedUsuario) != null;
- }
- public static boolean peliculaEstaReg(String idPelicula){
- return obtenerPeliculaPorID(idPelicula) != null;
- }
- public static String obtenerEstadoPelicula(String idPelicula){
- String[] pelicula = buscarPrimerFila(peliculas, PEL_ID, idPelicula);
- return pelicula[PEL_ESTD];
- }
- public static String[] obtenerUsuario(String cedUsuario){
- // solo la primera fila, se asume que la cedula es unica
- return buscarPrimerFila(usuarios, U_CED, cedUsuario);
- }
- public static String[][] obtenerListaPrestamos(String cedUsuario){
- return buscarTodasLasFilas(prestamos, PRE_U_CED, cedUsuario);
- }
- public static String[] obtenerPeliculaPorID(String idPelicula){
- // solo la primera fila, se asume que el id es unico
- String[] pelicula = buscarPrimerFila(peliculas, PEL_ID, idPelicula);
- return pelicula;
- }
- public static String[] obtenerPeliculaPorTitulo(String tituloPelicula){
- // solo la primera fila, se asume que el titulo es unico
- String[] pelicula = buscarPrimerFila(peliculas, PEL_TITL, tituloPelicula);
- return pelicula;
- }
- public static String obtenerFechaDevolucion(String fechaInicial, int nDias) throws java.text.ParseException{
- Date fecha = formFecha.parse(fechaInicial);
- fecha = agregarDias(nDias);
- return formFecha.format(fecha);
- }
- public static Date agregarDias(int nDias){
- Calendar c = Calendar.getInstance();
- c.add(Calendar.DAY_OF_YEAR, nDias);
- return c.getTime();
- }
- public static void actualizarDatoEnTabla(String[][] tabla, int nFila, int nCol, String dato){
- tabla[nFila][nCol] = dato;
- }
- public static int buscarIndicePrimerFila(String[][] tabla, int nCol, String dato){
- int nFila = -1, i = 0;
- if(tabla != null){ // si la tabla no esta vacia, buscar la fila con el dato especificado
- while(nFila == -1 && i < tabla.length){
- if(dato.equals(tabla[i][nCol])){
- nFila = i; // se encontro el dato en la columna
- }
- i++;
- }
- }
- return nFila;
- }
- public static String[] buscarPrimerFila(String[][] tabla, int nCol, String dato){
- int nFila = buscarIndicePrimerFila(tabla, nCol, dato);
- String[] fila = nFila != -1 ? tabla[nFila] : null;
- return fila;
- }
- public static String[][] buscarTodasLasFilas(String[][] tabla, int nCol, String dato){
- String[][] filas = null;
- if(tabla != null){
- for(int i = 0; i < tabla.length; i++){
- if(dato.equals(tabla[i][nCol])){
- filas = agregarFila(tabla[i], filas);
- }
- }
- }
- return filas;
- }
- public static String[] agregarDato(String dato, String[] arr){
- String[] nuevoArr;
- if(arr == null){ // no ha sido inicializado el arreglo
- nuevoArr = new String[]{dato}; // se inicializa con el dato enviado
- }else{
- // crear el nuevo arreglo con una posicion mas que el anterior
- nuevoArr = new String[arr.length+1];
- int i;
- for(i = 0; i < arr.length; i++){
- // copiar cada dato del arreglo viejo al nuevo
- nuevoArr[i] = arr[i];
- }
- // agregar el nuevo dato al arreglo nuevo
- nuevoArr[i] = dato;
- }
- return nuevoArr;
- }
- public static String[][] agregarFila(String[] fila, String[][] tabla){
- String[][] nuevaTabla;
- if(tabla == null){ // no ha sido inicializada la tabla
- nuevaTabla = new String[][]{fila}; // se inicializa con la fila enviada
- }else{
- // crear la nueva tabla con una fila mas que la anterior
- nuevaTabla = new String[tabla.length+1][tabla[0].length];
- int i;
- for(i = 0; i < tabla.length; i++){
- // copiar cada fila de la tabla vieja a la tabla nueva
- nuevaTabla[i] = tabla[i];
- }
- // agregar la nueva fila a la tabla nueva
- nuevaTabla[i] = fila;
- }
- return nuevaTabla;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement