import java.util.*; import java.util.ArrayList; import java.io.*; import javax.swing.JOptionPane; /** Esta clase implementará todas las interacciones de lectura y escritura * con el disco, ya sea con archivos o con la base de datos. */ public class Datos { private boolean cargado = false; /** Constructor de la clase */ public Datos() { } /** Busca el "Usuario" que tenga el nombre que se le da como parametro * y se retorna el "Usuario" * @param nombre Es el nombre del Usuario que se está buscando. * @return el objeto "Usuario" buscado. */ public Usuario cargarUsuario(String nombre) { Usuario usr = new Usuario(); try { FileInputStream input = new FileInputStream("Datos/"+ nombre +".dat"); ObjectInputStream in = new ObjectInputStream(input); usr = (Usuario)in.readObject(); in.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { } cargado = true; return usr; } public void setCargado(boolean b){ cargado = b; } /** Guarda todos los datos del usuario en disco * @param usuario Es el "Usuario" al que se le guardarán sus * atributos a disco */ public void guardarUsuario(Usuario usuario) { try { FileOutputStream output = new FileOutputStream("Datos/" +usuario.getNombre()+".dat"); ObjectOutputStream out = new ObjectOutputStream(output); out.writeObject(usuario); out.close(); if (!cargado){ FileWriter outputFile = new FileWriter("Datos/Usuarios.txt", true); outputFile.write(usuario.getNombre() + '\n'); outputFile.close(); } } catch(NullPointerException e){ JOptionPane.showMessageDialog( null, "No ha cargado Usuario en la memoria.", "Error", JOptionPane.WARNING_MESSAGE); } catch (Exception e) { e.printStackTrace(); } } /** Busca las "Carreras" que conoce el programa. * @return Un arreglo con las "Carreras" conocidas por el programa. */ public static ArrayList < String > getCarreras() { ArrayList < String > carreras = new ArrayList < String > (); String str; try { FileReader inputFile = new FileReader("Datos/Carreras.txt"); BufferedReader in = new BufferedReader(inputFile); while ((str = in.readLine())!=null) carreras.add(str); inputFile.close(); } catch (IOException e) { e.printStackTrace(); } return carreras; } /** Busca los "Usuarios" que conoce el programa. * @return Un arreglo con los "Usuarios" conocidos por el programa. */ public static ArrayList < String > getUsuarios() { ArrayList < String > usuarios = new ArrayList < String > (); String str; try { FileReader inputFile = new FileReader("Datos/Usuarios.txt"); BufferedReader in = new BufferedReader(inputFile); while ((str = in.readLine())!=null) usuarios.add(str); inputFile.close(); } catch (IOException e) { e.printStackTrace(); } return usuarios; } /** Busca los Ramos encontrados en un archivo de carrera *.CAR. * @param s El codigo de la carrera. * @return Un arreglo con los "Usuarios" conocidos por el programa. */ public ArrayList getMalla(String s) { ArrayList < Ramo > malla = new ArrayList < Ramo > (); String nombre, sigla, p; int creditos, semestre, sem_dictados; ArrayList < String > prereq; StringTokenizer strtok; Ramo ramo; try { FileReader inputFile = new FileReader("Datos/" + s + ".car"); BufferedReader in = new BufferedReader(inputFile); while(in.readLine().startsWith("#")); do { prereq = new ArrayList (); nombre = in.readLine(); sigla = in.readLine(); creditos = Integer.parseInt(in.readLine()); semestre = Integer.parseInt(in.readLine()); sem_dictados = Integer.parseInt(in.readLine()); p = in.readLine(); if(p.compareTo("..") != 0) { strtok = new StringTokenizer(p); while(strtok.hasMoreTokens()) prereq.add(strtok.nextToken()); } ramo = new Ramo(sigla, nombre, creditos, semestre, prereq, sem_dictados); malla.add(ramo); } while (!in.readLine().startsWith("#")); inputFile.close(); } catch (IOException e) { e.printStackTrace(); } return malla; } }