001 package videoautomat; 002 import sale.Shop; 003 import users.UserManager; 004 import data.IntegerValue; 005 import data.NumberValue; 006 import data.QuoteValue; 007 import data.ooimpl.CatalogItemImpl; 008 import data.ooimpl.EUROCurrencyImpl; 009 import data.ooimpl.MoneyBagImpl; 010 011 /** 012 * This class implements the start up of the whole application, it contains also the main void of 013 * this app. 014 * 015 */ 016 public class MainClass { 017 018 /** 019 * Represents the cost per day for renting a video. 020 */ 021 public static NumberValue RENT_VALUE_DAY = new IntegerValue(200); 022 /** 023 * The main void of the application, starts up the automat. 024 * 025 * @param arqs 026 * takes no effect 027 */ 028 029 public static void main(String arqs[]) { 030 VideoShop shop = new VideoShop(); 031 Shop.setTheShop(shop); 032 shop.start(); 033 shop.addSalesPoint(new VideoAutomat()); 034 initializeVideos(); 035 initializeUsers(); 036 initializeMoney(); 037 } 038 039 /** 040 * Method to initial add some coins to the {@link VideoShop}s <code>MoneyBag</code>. 041 * 042 */ 043 public static void initializeMoney() { 044 MoneyBagImpl mbi = 045 (MoneyBagImpl) Shop.getTheShop().getStock(VideoShop.MB_MONEY); 046 mbi.add(EUROCurrencyImpl.CENT_STCK_10, 100, null); 047 mbi.add(EUROCurrencyImpl.CENT_STCK_20, 100, null); 048 mbi.add(EUROCurrencyImpl.CENT_STCK_50, 100, null); 049 mbi.add(EUROCurrencyImpl.EURO_STCK_1, 100, null); 050 mbi.add(EUROCurrencyImpl.EURO_STCK_2, 50, null); 051 mbi.add(EUROCurrencyImpl.EURO_SCHEIN_10, 100, null); 052 mbi.add(EUROCurrencyImpl.EURO_SCHEIN_20, 10, null); 053 } 054 /** 055 * Method to initial add some videos to the {@link VideoShop}s <code>Stock</code>. 056 * 057 */ 058 public static void initializeVideos() { 059 for (int i = 0; i < 10; i++) { 060 String s = "Video-" + i; 061 VideoShop 062 .getVideoCatalog() 063 .add(new CatalogItemImpl( 064 s, 065 new QuoteValue( 066 new IntegerValue(1500), 067 new IntegerValue(3000))) { 068 // implementation of the inherited abstract method 069 protected CatalogItemImpl getShallowClone() { 070 return null; 071 } 072 }, null); 073 VideoShop.getVideoStock().add(s, 5, null); 074 } 075 } 076 077 /** 078 * Method to initial add some users to the global <code>UserManager</code>. 079 * 080 */ 081 public static void initializeUsers() { 082 UserManager.getGlobalUM().addUser(new AutomatUser("Administrator", new char[0], true)); 083 for (int i = 0; i < 10; i++) { 084 UserManager.getGlobalUM().addUser( 085 new AutomatUser("Customer" + i, new char[0], false)); 086 } 087 } 088 }