001    import sale.*;
002    import data.*;
003    import data.ooimpl.*;
004    import data.events.*;
005    import users.*;
006    
007    
008    /**
009     * Ein registrierter Kunde mitsamt seinem Videobestand.
010     */
011    public class Customer extends User
012    {
013    
014      //// attributes ////////////////////////////////////////////////////////////
015    
016      private String       customerID;                // Kundennummer
017      private StoringStock customerStoringStock;      // ausgeliehene Videos
018    
019    
020      //// constructor ///////////////////////////////////////////////////////////
021    
022      /**
023       * Legt einen neuen Kunden an.
024       */
025      public Customer(String customerID)
026      {
027        super(customerID);
028    
029        this.customerID = customerID;
030        customerStoringStock = new StoringStockImpl(customerID,
031          (CatalogImpl)Shop.getTheShop().getCatalog("Video-Catalog"));
032        Shop.getTheShop().addStock(customerStoringStock);
033      }
034    
035    
036      //// public methods ////////////////////////////////////////////////////////
037    
038      /**
039       * Liefert die Kunden-ID.
040       */
041      public String getCustomerID()
042      {
043        return customerID;
044      }
045    
046      /**
047       * Fügt die Kassette dem Bestand des Kunden hinzu.
048       */
049      public void addVideoCassette(CassetteStoringStockItem cassette)
050      {
051        customerStoringStock.add(cassette, null);
052      }
053    
054      /**
055       * Löscht die Kassette aus dem Bestand des Kunden.
056       */
057      public void removeVideoCassette(CassetteStoringStockItem cassette)
058      {
059        try {
060          customerStoringStock.remove(cassette, null);
061        }
062        catch(VetoException ve) {}
063      }
064    
065      /**
066       * Liefert den gesamten Videobestand des Kunden.
067       */
068      public StoringStock getStoringStock()
069      {
070        return customerStoringStock;
071      }
072    
073    }