001 package log; 002 003 import java.util.*; 004 import java.io.*; 005 006 /** 007 * Represents the content of a log file. 008 * 009 * <p>This class takes a log file or a {@link LogInputStream} as parameter, reads all {@link LogEntry LogEntries} 010 * from that file and stores them in a List.</p> 011 * 012 * Having all LogEntries in a List, makes it easy to display them in a {@link log.stdforms.LogTableForm LogTableForm} 013 * or writing them to the persistence file when saving the Shop's state. 014 * 015 * @author Andreas Bartho 016 * @since v3.1 017 */ 018 public class LogFileContent implements Serializable { 019 020 /** 021 * The list which contains all Entries from the log file. 022 */ 023 private List m_lContentList; 024 025 /** 026 * Creates a LogFileContent. All {@link LogEntry LogEntries} are read from the passed log file and stored 027 * in a list. 028 * @param f the file to be read from. 029 */ 030 public LogFileContent(File f) { 031 update(f); 032 } 033 034 /** 035 * Creates a LogFileContent. All {@link LogEntry LogEntries} are read from the passed {@link LogInputStream} 036 * and stored in a list. 037 * @param lis the {@link LogInputStream} to be read from. 038 */ 039 public LogFileContent(LogInputStream lis) { 040 update(lis); 041 } 042 043 /** 044 * Replaces all currently saved {@link LogEntry LogEntries} with new ones. 045 * @param f the log file to be read from 046 */ 047 public void update(File f) { 048 try { 049 update(new LogInputStream(new FileInputStream(f))); 050 } 051 catch (IOException ioe) { 052 ioe.printStackTrace(); 053 } 054 } 055 056 /** 057 * Replaces all currently saved {@link LogEntry LogEntries} with new ones. 058 * @param lis the {@link LogInputStream} to be read from. 059 */ 060 public void update(LogInputStream lis) { 061 m_lContentList = streamToList(lis); 062 } 063 064 /** 065 * @return the List of currently saved {@link LogEntry LogEntries} 066 */ 067 public List getContentList() { 068 return m_lContentList; 069 } 070 071 /** 072 * Does the actual conversion from a {@link LogInputStream} to a list of {@link LogEntry LogEntries}.<br> 073 * @param lis the LogInputStream to be read from 074 * @return a List with all LogEntries from the LogInputStream 075 */ 076 private List streamToList(LogInputStream lis) { 077 List l = new LinkedList(); 078 try { 079 while (true) { 080 l.add(lis.readEntry()); 081 } 082 } 083 catch (IOException ioe) {} 084 catch (ClassNotFoundException cnfe) {} 085 try { 086 lis.close(); 087 } 088 catch (IOException ioe) {} 089 090 return l; 091 } 092 }