Advertisement
KaeruCT

almost there

Apr 22nd, 2011
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.03 KB | None | 0 0
  1. import java.util.Calendar;
  2. import java.util.Date;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5.  
  6. public class RutinasPeliculas{
  7.    
  8.     static final String[] nombreDatoUsuarios = {"Cedula", "Nombre", "Apellido 1", "Apellido 2", "Telefono"},
  9.     nombreDatoPeliculas = {"Titulo", "Tipo", "Ano de produccion", "Ubicacion", "Id", "Estado"},
  10.     nombreDatoPrestamos = {"Cedula del usuario", "Id de la pelicula", "Fecha inicial", "Fecha final"};
  11.    
  12.     static final byte MAX_PRESTAMO = 5,
  13.     U_CED = 0, U_NMBR = 1, U_APLLD1 = 2, U_APLLD2 = 3, U_TELFN = 4,
  14.     PEL_TITL = 0, PEL_TIPO = 1, PEL_ANO = 2, PEL_UBICN = 3, PEL_ID = 4, PEL_ESTD = 5,
  15.     PRE_U_CED = 0, PRE_PEL_ID = 1, PRE_FECH_INI = 2, PRE_FECH_FIN = 3;
  16.     static final String PEL_PRSTD_SI = "Alquilada", PEL_PRSTD_NO = "Sin alquilar";
  17.     static final SimpleDateFormat formFecha = new SimpleDateFormat("dd/MM/yyyy");
  18.    
  19.     static String[][] usuarios, peliculas, prestamos;
  20.     // usuarios [cedula, nombre, apellido1, apellido2, telefono]
  21.     // peliculas [titulo, tipo, ano, ubicacion, id, estado]
  22.     // prestamos [cedulaUsuario, idPelicula, fechaInicio, fechaFinal]
  23.        
  24.     public static String obtenerInfoPelicula(String idPelicula, int modo){
  25.         String[] pelicula = obtenerPeliculaPorID(idPelicula);
  26.         String info = "";
  27.        
  28.         if(pelicula != null){
  29.             int[] datos;
  30.            
  31.             switch(modo){
  32.             default:
  33.             case 1: // modo 1, en consulta por pelicula, muestra todos los datos
  34.                 datos = new int[]{PEL_TITL, PEL_ID, PEL_TIPO, PEL_ANO, PEL_ESTD};
  35.                 break;
  36.             case 2: // modo 2, en consulta por pelicula prestada, muestra solo id y titulo
  37.                 datos = new int[]{PEL_ID, PEL_TITL};
  38.                 break;
  39.             }
  40.            
  41.             for(int i : datos){
  42.                 info += nombreDatoPeliculas[i]+": "+pelicula[i]+"\n";
  43.             }
  44.         }else{
  45.             info = "La pelicula no esta registrada";
  46.         }
  47.         return info;
  48.     }
  49.    
  50.     public static boolean registrarUsuario(String[] usuario){
  51.         boolean resul = false;
  52.        
  53.         // revisar si no hay usuarios con la misma cedula antes de registrar un usuario nuevo
  54.         if(buscarPrimerFila(usuarios, U_CED, usuario[U_CED]) == null){
  55.             usuarios = agregarFila(usuario, usuarios);
  56.             resul = true;
  57.         }
  58.        
  59.         return resul;
  60.     }
  61.    
  62.     public static boolean registrarPelicula(String[] pelicula){
  63.         boolean resul = false;
  64.        
  65.         // revisar si no hay peliculas con el mismo titulo antes de registrar esta pelicula
  66.         if(buscarPrimerFila(peliculas, PEL_TITL, pelicula[PEL_TITL]) == null){
  67.            
  68.             // agregar el id al arreglo pelicula (el id es igual a la cantidad de peliculas + 1)
  69.             pelicula = agregarDato(Integer.toString(obtenerCantFilas(peliculas)+1), pelicula);
  70.            
  71.             // agregar el estado al arreglo pelicula (inicialmente no prestada)
  72.             pelicula = agregarDato(PEL_PRSTD_NO, pelicula);
  73.            
  74.             peliculas = agregarFila(pelicula, peliculas);
  75.             resul = true;
  76.         }
  77.        
  78.         return resul;
  79.     }
  80.    
  81.     public static int registrarPrestamo(String[] prestamo) throws ParseException{
  82.         int resul = 1;
  83.         // verificar si el usuario esta registrado
  84.         if(usuarioEstaReg(prestamo[PRE_U_CED])){
  85.             // verificar si la pelicula esta registrada
  86.             if(peliculaEstaReg(prestamo[PRE_PEL_ID])){
  87.             // verificar si la pelicula no ha sido prestada
  88.                 if(obtenerEstadoPelicula(prestamo[PRE_PEL_ID])==PEL_PRSTD_NO){
  89.                    
  90.                     // actualizar el estado de la pelicula correspondiente
  91.                     actualizarEstadoPelicula(prestamo[PRE_PEL_ID], PEL_PRSTD_SI);
  92.                    
  93.                     // reemplazar el numero de dias con la fecha de devolucion (que es lo que hay que registrar)
  94.                     prestamo[PRE_FECH_FIN] = obtenerFechaDevolucion(prestamo[PRE_FECH_INI], Integer.parseInt(prestamo[PRE_FECH_FIN]));
  95.                    
  96.                     prestamos = agregarFila(prestamo, prestamos);
  97.                 }else{
  98.                     resul = -2; // pelicula esta prestada
  99.                 }
  100.             }else{
  101.                 resul = -1; // pelicula no esta registrada
  102.             }
  103.         }else{
  104.             resul = 0; // usuario no esta registrado
  105.         }
  106.        
  107.         return resul;
  108.     }
  109.    
  110.     public static void actualizarEstadoPelicula(String idPelicula, String estado){
  111.         int indicePelicula = buscarIndicePrimerFila(peliculas, PEL_ID, idPelicula);
  112.         actualizarDatoEnTabla(peliculas, indicePelicula, PEL_ESTD, estado);
  113.     }
  114.    
  115.     public static boolean esDuracionValida(int nDias){
  116.         return nDias <= MAX_PRESTAMO;
  117.     }
  118.    
  119.     public static int obtenerCantFilas(String[][] tabla){
  120.         int cantFilas = 0;
  121.         if(tabla != null){
  122.             cantFilas = tabla.length;
  123.         }
  124.         return cantFilas;
  125.     }
  126.    
  127.     public static boolean usuarioEstaReg(String cedUsuario){
  128.         return obtenerUsuario(cedUsuario) != null;
  129.     }
  130.    
  131.     public static boolean peliculaEstaReg(String idPelicula){
  132.         return obtenerPeliculaPorID(idPelicula) != null;
  133.     }
  134.    
  135.     public static String obtenerEstadoPelicula(String idPelicula){
  136.         String[] pelicula = buscarPrimerFila(peliculas, PEL_ID, idPelicula);
  137.         return pelicula[PEL_ESTD];
  138.     }
  139.    
  140.     public static String[] obtenerUsuario(String cedUsuario){
  141.         // solo la primera fila, se asume que la cedula es unica
  142.         return buscarPrimerFila(usuarios, U_CED, cedUsuario);
  143.     }
  144.    
  145.     public static String[][] obtenerListaPrestamos(String cedUsuario){
  146.         return buscarTodasLasFilas(prestamos, PRE_U_CED, cedUsuario);
  147.     }
  148.    
  149.     public static String[] obtenerPeliculaPorID(String idPelicula){
  150.         // solo la primera fila, se asume que el id es unico
  151.         String[] pelicula = buscarPrimerFila(peliculas, PEL_ID, idPelicula);
  152.        
  153.         return pelicula;
  154.     }
  155.    
  156.     public static String[] obtenerPeliculaPorTitulo(String tituloPelicula){
  157.         // solo la primera fila, se asume que el titulo es unico
  158.         String[] pelicula = buscarPrimerFila(peliculas, PEL_TITL, tituloPelicula);
  159.         return pelicula;
  160.     }
  161.    
  162.     public static String obtenerFechaDevolucion(String fechaInicial, int nDias) throws java.text.ParseException{
  163.         Date fecha = formFecha.parse(fechaInicial);
  164.         fecha = agregarDias(nDias);
  165.         return formFecha.format(fecha);
  166.     }
  167.    
  168.     public static Date agregarDias(int nDias){
  169.         Calendar c = Calendar.getInstance();
  170.         c.add(Calendar.DAY_OF_YEAR, nDias);
  171.         return c.getTime();    
  172.     }
  173.    
  174.     public static void actualizarDatoEnTabla(String[][] tabla, int nFila, int nCol, String dato){
  175.         tabla[nFila][nCol] = dato;
  176.     }
  177.    
  178.     public static int buscarIndicePrimerFila(String[][] tabla, int nCol, String dato){
  179.         int nFila = -1, i = 0;
  180.        
  181.         if(tabla != null){ // si la tabla no esta vacia, buscar la fila con el dato especificado
  182.             while(nFila == -1 && i < tabla.length){
  183.                 if(dato.equals(tabla[i][nCol])){
  184.                     nFila = i;  // se encontro el dato en la columna
  185.                 }
  186.                 i++;
  187.             }
  188.         }
  189.        
  190.         return nFila;
  191.     }
  192.    
  193.     public static String[] buscarPrimerFila(String[][] tabla, int nCol, String dato){
  194.         int nFila = buscarIndicePrimerFila(tabla, nCol, dato);
  195.         String[] fila = nFila != -1 ? tabla[nFila] : null;
  196.         return fila;
  197.     }
  198.    
  199.     public static String[][] buscarTodasLasFilas(String[][] tabla, int nCol, String dato){
  200.         String[][] filas = null;
  201.         if(tabla != null){
  202.             for(int i = 0; i < tabla.length; i++){
  203.                 if(dato.equals(tabla[i][nCol])){
  204.                     filas = agregarFila(tabla[i], filas);
  205.                 }
  206.             }
  207.         }
  208.        
  209.         return filas;
  210.     }
  211.    
  212.     public static String[] agregarDato(String dato, String[] arr){
  213.         String[] nuevoArr;
  214.         if(arr == null){ // no ha sido inicializado el arreglo
  215.             nuevoArr = new String[]{dato}; // se inicializa con el dato enviado
  216.         }else{
  217.             // crear el nuevo arreglo con una posicion mas que el anterior
  218.             nuevoArr = new String[arr.length+1];
  219.             int i;
  220.            
  221.             for(i = 0; i < arr.length; i++){
  222.                 // copiar cada dato del arreglo viejo al nuevo
  223.                 nuevoArr[i] = arr[i];
  224.             }
  225.             // agregar el nuevo dato al arreglo nuevo
  226.             nuevoArr[i] = dato;
  227.         }
  228.         return nuevoArr;
  229.     }
  230.    
  231.     public static String[][] agregarFila(String[] fila, String[][] tabla){
  232.         String[][] nuevaTabla;
  233.         if(tabla == null){ // no ha sido inicializada la tabla
  234.             nuevaTabla = new String[][]{fila}; // se inicializa con la fila enviada
  235.         }else{
  236.             // crear la nueva tabla con una fila mas que la anterior
  237.             nuevaTabla = new String[tabla.length+1][tabla[0].length];
  238.             int i;
  239.            
  240.             for(i = 0; i < tabla.length; i++){
  241.                 // copiar cada fila de la tabla vieja a la tabla nueva
  242.                 nuevaTabla[i] = tabla[i];
  243.             }
  244.             // agregar la nueva fila a la tabla nueva
  245.             nuevaTabla[i] = fila;
  246.         }
  247.         return nuevaTabla;
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement