martes, 5 de julio de 2011

Envio de datos de un archivo de texto a un ArrayList








package controlador;

/*
 Clase que maneja un arreglo de data mediante un objeto de tipo ArrayList

 Atributo a considerar (privado)

 - Una referencia de tipo ArrayList

 Métodos a considerar:

 - Un constructor sin parámetros que cree el objeto ArrayList
 - Un método "adicionar" que reciba una persona y la adicione al ArrayList
 - Un método "eliminar" que reciba el código de una persona y la elimine del ArrayList
 - Un método "obtener" que reciba un índice y retorne la persona de esa posición
 - Un método "buscar" que reciba un código y retorne la persona con ese código
 - Un método "tamaño" que retorne la cantidad de data ingresadas al ArrayList
 - Un método "edadMaxima" que retorne la edad máxima
 - Un método "edadMinima" que retorne la edad mínima
 - Un método "edadPromedio" que retorne la edad promedio
 - Un método que retorne la cantidad de data que se encuentren en el rango
 de edad enviado desde la clase principal.
 */

import java.util.*;
import java.io.*;

import beans.Persona;

public class ControladorPersona {

                private ArrayList<Persona> data;

                public ControladorPersona() {
                               data = new ArrayList<Persona>();
                               leeArchivo();
                }

                public void adicionar(int codigo, String nombre, int edad) {
                               Persona p = new Persona(codigo, nombre, edad);
                               data.add(p);
                }

                public void eliminar(int codigo) {
                               for (Persona p : data)
                                               if (p.getCodigo() == codigo) {
                                                               data.remove(data.indexOf(p));
                                                               break;
                                               }
                }

                public void actualizar(Persona p) {
                               for (Persona aux : data)
                                               if (aux.getCodigo() == p.getCodigo()) {
                                                               data.set(data.indexOf(aux), p);
                                                               break;
                                               }
                }

                public Persona obtener(int codigo) {
                               for (Persona p : data)
                                               if (p.getCodigo() == codigo)
                                                               return p;
                               return null;
                }

                public Persona buscar(int indice) {
                               return data.get(indice);
                }

                public int cantidad() {
                               return data.size();
                }

                public int edadMaxima() {
                               int mayor = data.get(0).getEdad();
                               for (Persona p : data)
                                               if (p.getEdad() > mayor)
                                                               mayor = p.getEdad();
                               return mayor;
                }

                public int edadMinima() {
                               int menor = data.get(0).getEdad();
                               for (Persona p : data)
                                               if (p.getEdad() < menor)
                                                               menor = p.getEdad();
                               return menor;
                }

                public double edadPromedio() {
                               int suma = 0;
                               for (Persona p : data)
                                               suma += p.getEdad();
                               return suma * 1.0 / cantidad();
                }

                // Metodos que leen y grabar archivos
                private void leeArchivo() {
                               FileReader fr = null;
                               BufferedReader br = null;
                                try {
                                               fr = new FileReader("Persona.txt");
                                               br = new BufferedReader(fr);
                                               String linea = null;
                                               String[] array = null;
                                               Persona persona = null;
                                               while ((linea = br.readLine()) != null) {
                                                               array = linea.split(",");
                                                               persona = new Persona();
                                                               persona.setCodigo(Integer.parseInt(array[0].trim()));
                                                               persona.setNombre(array[1].trim());
                                                               persona.setEdad(Integer.parseInt(array[2].trim()));
                                                               data.add(persona);
                                               }
                               } catch (Exception ex) {
                                               System.out.println(ex);
                               } finally {
                                               try {
                                                               fr.close();
                                                               br.close();
                                               } catch (IOException ex) {
                                                               System.out.println(ex);
                                               }
                               }

                }

                public void grabaArchivo() {
                               FileWriter fr = null;
                               PrintWriter pw = null;
                               try {
                                               fr = new FileWriter("Persona.txt");
                                               pw = new PrintWriter(fr);
                                               for (Persona o : data) {
                                                               pw.println(o.getCodigo() + "," + o.getNombre() + ","
                                                                                              + o.getEdad());

                                               }
                               } catch (Exception ex) {
                                               System.out.println(ex);
                               } finally {
                                               try {
                                                               fr.close();
                                                               pw.close();
                                               } catch (IOException ex) {
                                                               System.out.println(ex);
                                               }
                               }

                }

}

1 comentario: