001 package videoautomat; 002 import java.io.IOException; 003 import java.util.Iterator; 004 005 import log.Log; 006 import log.LogNoOutputStreamException; 007 import data.StockItem; 008 import data.events.StockChangeAdapter; 009 import data.events.StockChangeEvent; 010 /** 011 * This class implements a StockChangeListener, which reacts to changes on {@link AutomatUser#getVideoStock()}. It writes 012 * such events as rent or give back event to the global logfile. 013 * 014 */ 015 public class StockChangeLogger extends StockChangeAdapter { 016 017 /* 018 * The ID of the owner of the stock this listener belongs to 019 */ 020 private String user_ID; 021 022 /** 023 * Constructs a new StockChangeLogger 024 * 025 * @param user_ID 026 * the ID of the owner of the stock this listener should be add to 027 */ 028 public StockChangeLogger(String user_ID) { 029 this.user_ID = user_ID; 030 } 031 032 /** 033 * Called whenever the adding of <code>StockItems</code> was commited. Logs it as a rent-event. 034 * 035 * @see data.events.StockChangeListener#commitAddStockItems(data.events.StockChangeEvent) 036 */ 037 public void commitAddStockItems(StockChangeEvent event) { 038 Iterator it = event.getAffectedItems(); 039 while (it.hasNext()) { 040 try { 041 Log.getGlobalLog().log( 042 new LoggableImpl( 043 user_ID, 044 ((StockItem) it.next()).getName(), 045 true)); 046 } catch (LogNoOutputStreamException e) { 047 e.printStackTrace(); 048 } catch (IOException e) { 049 e.printStackTrace(); 050 } 051 } 052 } 053 054 /** 055 * Called whenever the removing of <code>StockItems</code> was commited. Logs it as a hand back-event. 056 * 057 * @see data.events.StockChangeListener#commitRemoveStockItems(data.events.StockChangeEvent) 058 */ 059 public void commitRemoveStockItems(StockChangeEvent event) { 060 Iterator it = event.getAffectedItems(); 061 while (it.hasNext()) { 062 try { 063 Log.getGlobalLog().log( 064 new LoggableImpl( 065 user_ID, 066 ((StockItem) it.next()).getName(), 067 false)); 068 } catch (LogNoOutputStreamException e) { 069 e.printStackTrace(); 070 } catch (IOException e) { 071 e.printStackTrace(); 072 } 073 } 074 } 075 }