import java.io.*; import java.util.*; import java.text.DateFormat; import java.text.ParseException; class LoggerIO { private Logger logger; private DateFormat format; private String eol; LoggerIO(Logger theLogger) { logger = theLogger; format = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.MEDIUM ); eol = System.getProperty( "line.separator" ); } void saveToText( List list, File f ) { try { FileWriter writer = new FileWriter( f ); ListIterator iter = list.listIterator(); while ( iter.hasNext() ) { Date nDate = (Date) iter.next(); String nString = format.format( nDate ) + eol; writer.write( nString ); } writer.close(); } catch ( IOException e ) { logger.announce( "Error writing text to file " + f.getName() ); } } void saveToData( List list, File f ) { try { FileOutputStream oStream = new FileOutputStream( f ); DataOutputStream dStream = new DataOutputStream( oStream ); ListIterator iter = list.listIterator(); while ( iter.hasNext() ) { Date nDate = (Date) iter.next(); dStream.writeLong( nDate.getTime() ); } dStream.close(); } catch ( IOException e ) { logger.announce( "Error writing data to file " + f.getName() ); } } void saveToObject( List list, File f ) { try { FileOutputStream oStream = new FileOutputStream( f ); ObjectOutputStream objStream = new ObjectOutputStream( oStream ); objStream.writeObject( list ); objStream.close(); } catch ( IOException e ) { logger.announce( "Error al escribir el registro de objetos en el archivo " + f.getName() ); } } List loadFromText( File f ) { List list = new LinkedList(); try { FileReader reader = new FileReader( f ); BufferedReader lineReader = new BufferedReader( reader ); String nLine; while ( (nLine = lineReader.readLine()) != null ) { try { Date next = format.parse( nLine ); list.add( next ); } catch (ParseException p ) { logger.announce( "No se puede analizar la fecha: " + nLine ); return list; } } lineReader.close(); } catch ( FileNotFoundException e ) { logger.announce( "No se puede encontrar el archivo " + f.getName() ); } catch ( IOException e ) { logger.announce( "Error al leer el registro de texto desde el archivo " + f.getName() ); } return list; } List loadFromData( File f ) { DataInputStream dStream = null; List list = new LinkedList(); try { FileInputStream iStream = new FileInputStream( f ); dStream = new DataInputStream( iStream ); while ( true ) { long l = dStream.readLong(); Date next = new Date( l ); list.add( next ); } } catch ( EOFException e ) { try { dStream.close(); } catch (IOException ee ) { logger.announce( "No se puede cerrar el archivo" + f.getName() ); } } catch ( FileNotFoundException e ) { logger.announce( "No se puede encontrar el archivo " + f.getName() ); } catch ( IOException e ) { logger.announce( "Error al leer el registro de datos desde el archivo " + f.getName() ); } return list; } List loadFromObject( File f ) { List list = null; ObjectInputStream objStream = null; try { FileInputStream iStream = new FileInputStream( f ); objStream = new ObjectInputStream( iStream ); list = (List) objStream.readObject(); objStream.close(); } catch ( ClassNotFoundException e ) { try { logger.announce( "Leer instancia de clase desconocida" ); objStream.close(); list = null; } catch (IOException ee ) { logger.announce( "No se puede cerrar el archivo " + f.getName() ); } } catch ( FileNotFoundException e ) { logger.announce( "No se puede encontrar el archivo " + f.getName() ); } catch ( IOException e ) { try { logger.announce( "Error al leer el registro de objetos desde el archivo " + f.getName() ); if ( objStream != null ) objStream.close(); list = null; } catch (IOException ee ) { logger.announce( "No se puede cerrar el archivo " + f.getName() ); } } return list; } }