CountingStocks

Items hinzufügen und enfernen

Der CountingStock beschreibt, welche Elemente eines Katalogs in welcher Anzahl vorhanden sind. Die Items des CountingStocks beziehen sich immer auf die CatalogItems des zugehörigen Katalogs.

Es ist möglich, daß ein Item mit 0 Exemplaren im Stock vorhanden ist, es wird dennoch angezeigt. Um einen Eintrag ganz zu löschen, ist das Item direkt aus dem Katalog zu entfernen. Dabei spielt es keine Rolle, ob noch StockItems vorhanden sind, diese werden auch gelöscht.

import sale.Shop;

public class MainClass {

  public static void main(String[] args) {
    SalesPointApplication spa = new SalesPointApplication();
    Shop.setTheShop(spa);
    spa.start();
    testData();
  }

  private static void testData() {
    //Katalogeintrag anlegen
    SalesPointApplication.getMainCatalog().add(new Type1Item("Item1", 100));
    //Zahl der Items verändern und ausgeben
    SalesPointApplication.getMainStock().setQuantity("Item1", 100);
    System.out.println(SalesPointApplication.getMainStock().countItems("Item1", null));
    SalesPointApplication.getMainStock().setQuantity("Item1", 150);
    System.out.println(SalesPointApplication.getMainStock().countItems("Item1", null));
    SalesPointApplication.getMainStock().setQuantity("Item1", 50);
    System.out.println(SalesPointApplication.getMainStock().countItems("Item1", null));
    SalesPointApplication.getMainStock().setQuantity("Item1", 50);
    System.out.println(SalesPointApplication.getMainStock().countItems("Item1", null));
  }
}
import sale.Shop;
import data.ooimpl.CatalogImpl;

public class SalesPointApplication extends Shop {

  public static final String KAT_KATALOGNAME = "Hauptkatalog";
  public static final String STK_STOCKNAME = "Stock";

  public SalesPointApplication() {
    super();
    addCatalog(new ApplicationCatalog(KAT_KATALOGNAME));
    addStock(new ApplicationStock(STK_STOCKNAME, (CatalogImpl)getCatalog(KAT_KATALOGNAME)));
    }

  public void quit() {
    if (shutdown(false)) {
      System.exit(0);
    }
  }

  public static ApplicationCatalog getMainCatalog() {
    return (ApplicationCatalog)getTheShop().getCatalog(KAT_KATALOGNAME);
  }

  public static ApplicationStock getMainStock() {
    return (ApplicationStock)getTheShop().getStock(STK_STOCKNAME);
  }
}
import data.ooimpl.*;
import data.events.VetoException;

public class ApplicationStock extends CountingStockImpl {

  public ApplicationStock(String name, CatalogImpl cat) {
    super(name, cat);
  }

  /**
   * Liefert die Anzahl der Elemente eines CountingStockItems
   */
  public int getQuantity(String name) {
    return countItems(name, null);
  }

  /**
   * Setzt die Anzahl der Elemente eines CountingStockItems
   */
  public void setQuantity (String name, int quantity) {
    //alt == neu
    if (getQuantity(name) == quantity) {return;}
    //hinzufügen
    if (getQuantity(name) < quantity) {
      add(name, quantity-getQuantity(name), null);
    } else {
    //entfernen
      try {
        remove(name, getQuantity(name)-quantity, null);
      }
      catch (VetoException e) {
        System.err.println(e.getMessage());
      }
    }
  }
}

Desweiteren gehören zu diesem Beispiel die Klassen ApplicationCatalog und Type1Item. Diese stimmen mit den Klassen des CatalogItem-Beispiels überein und werden deshalb nicht extra hier aufgeführt.