001    import log.Loggable;
002    import log.LogEntry;
003    import data.ooimpl.StoringStockItemDBEntry;
004    
005    
006    /**
007     * Definiert Die Schnittstelle <Code>Loggable</CODE>.
008     */
009    public class MyLoggable implements Loggable
010    {
011       
012      //// attributes ////////////////////////////////////////////////////////////
013       
014      String name;  
015      String customerID;
016      Object date;
017      boolean rent;  // wird ein Ausleihvorgang(true)
018                     // oder ein Rückgabevorgang(false) geloggt
019       
020      //// constructor ///////////////////////////////////////////////////////////
021       
022      /**
023       * Der Konstruktor legt ein neues Objekt der Klasse <CODE>MyLoggable</CODE>
024       * an, wobei der Konstruktor von <CODE>Loggable</CODE> aufgerufen wird,
025       * und die übergebenen Variablen zugewiesen werden. Diese sind
026       * wichtig für die Erstellung des Log-Eintrags.
027       */
028      public MyLoggable(String name, String customerID, Object date)
029      {
030        super();
031        this.name = name;
032        this.customerID = customerID;
033        this.date = date;
034        rent = true;
035      }
036       
037      /**
038       * Der Konstruktor wird vom GiveBackProcess aufgerufen,
039       * das LogEntry wird dadurch beeinflusst
040       */
041      public MyLoggable(StoringStockItemDBEntry cassetteItem, Customer customer, Object date)
042      {
043        super();
044        name = cassetteItem.getSecondaryKey();
045        this.customerID = customer.getCustomerID();
046        this.date = date;
047        rent = false;
048      }
049       
050      //// public methods ////////////////////////////////////////////////////////
051       
052      /**
053       * Holt sich den Log-Eintrag, der aus den übergebenen Daten
054       * zusammengestellt wird. Dazu wird die extra implementierte
055       * Klasse <CODE>MyLogEntry</CODE> genutzt.
056       */
057      public LogEntry getLogData()
058      {
059        return new MyLogEntry(name, customerID, date, rent);
060      }
061    }
062    
063    
064    
065    /**
066     * Überschreibt die Klasse <Code>LogEntry</CODE> um einen
067     * selbstdefinierten Log-Eintrag zu ermöglichen.
068     */
069    class MyLogEntry extends LogEntry
070    {
071       
072      //// attributes ////////////////////////////////////////////////////////////
073       
074      String name;
075      String customerID;
076      Object date;
077      boolean rent;  // wird ein Ausleihvorgang(true)
078                     // oder ein Rückgabevorgang(false) geloggt
079       
080      //// constructor ///////////////////////////////////////////////////////////
081       
082      /**
083       * Der Konstruktor legt ein neues Objekt der Klasse <CODE>MyLogEntry</CODE>
084       * an, wobei der Konstruktor von <CODE>LogEntry</CODE> aufgerufen wird,
085       * und die übergebenen Variablen zugewiesen werden. Diese sind
086       * wichtig für die Erstellung des Log-Eintrags.
087       */
088      public MyLogEntry(String name, String customerID, Object date, boolean rent)
089      {
090        super();
091        this.name = name;
092        this.customerID = customerID;
093        this.date = date;
094        this.rent = rent;
095      }
096       
097        
098      //// public methods ////////////////////////////////////////////////////////
099       
100      /**
101       * Spezifiziert das Aussehen des Log-Eintrags.
102       */
103      public String toString()
104      {
105        if (rent)
106          return name + " rent by customer " + customerID + " (ID) at turn " + date;
107        else
108          return "customer "+ customerID + " (ID) gave back " + name + " at turn " + date;
109      }
110    }