001 package videoautomat; 002 import java.io.FileInputStream; 003 import java.io.FileNotFoundException; 004 import java.io.IOException; 005 006 import log.LogInputStream; 007 import sale.Action; 008 import sale.FormSheet; 009 import sale.FormSheetContentCreator; 010 import sale.Gate; 011 import sale.GateChangeTransition; 012 import sale.SaleProcess; 013 import sale.SalesPoint; 014 import sale.UIGate; 015 import sale.stdforms.MsgForm; 016 import videoautomat.gui.LogFileFormSheet; 017 /** 018 * This class implements a <code>SaleProcess</code> for the administrative work. 019 * 020 */ 021 public class SaleProcessAdmin extends SaleProcess { 022 /* 023 * the initial Gate, where the global logfile is shown. 024 */ 025 private UIGate uig_logfile = new UIGate(null, null); 026 027 /** 028 * Constructs a new SaleProcessAdmin. 029 * 030 */ 031 public SaleProcessAdmin() { 032 super("SaleProcessAdmin"); 033 } 034 /** 035 * Implementation of the inherited abstract method. At this <code>Gate</code> the user will see the content of 036 * the global logfile. 037 * 038 * @return the <code>Gate</code> this process will first switch to. 039 * 040 * @see sale.SaleProcess#getInitialGate() 041 */ 042 protected Gate getInitialGate() { 043 try { 044 FileInputStream fis = new FileInputStream(VideoShop.FILENAME); 045 LogInputStream lis = new LogInputStream(fis, new LogEntryFilterImpl()); 046 047 LogFileFormSheet lfsf = new LogFileFormSheet(lis); 048 lfsf.addContentCreator(new FormSheetContentCreator() { 049 public void createFormSheetContent(FormSheet fs) { 050 fs.getButton(LogFileFormSheet.FB_CLOSE).setAction(new Action() { 051 public void doAction(SaleProcess p, SalesPoint sp) { 052 uig_logfile.setNextTransition( 053 GateChangeTransition.CHANGE_TO_STOP_GATE); 054 } 055 }); 056 } 057 }); 058 uig_logfile.setFormSheet(lfsf); 059 } catch (FileNotFoundException e) { 060 getStopGate(); 061 e.printStackTrace(); 062 } catch (IOException e) { 063 MsgForm msf = new MsgForm("Empty-LogFile!", 064 "The log file was found empty.\n" 065 + "Nothing to administrate here."); 066 msf.getButton(MsgForm.BTNID_OK).setAction(new Action() 067 { 068 public void doAction(SaleProcess p, SalesPoint sp) 069 { 070 uig_logfile.setNextTransition(GateChangeTransition.CHANGE_TO_QUIT_GATE); 071 }}); 072 uig_logfile.setFormSheet(msf); 073 } 074 return uig_logfile; 075 } 076 }