Kataloge

Kataloge anmelden und enfernen

Der Katalog ist eine zentrale SalesPoint-Datenstruktur. Mit den in ihm enthaltenen Items bildet er die Grundlage für die Counting- und StoringStocks.

Ein Katalog ist Instanz von CatalogImpl oder einer ihrer Unterklassen. Um ihn nach der Erzeugung nutzen zu können muss er beim Shop angemeldet werden. Das geschieht mit addCatalog(Catalog). Jeder Katalog erwartet im Konstruktor einen eindeutigen Namen. Über diesen lassen sich alle Kataloge eindeutig ansprechen. Beim Versuch einen Katalog mit schon vergebenem Namen anzumelden, wird eine DuplicateKeyException geworfen.

Kataloge können natürlich auch abgemeldet werden. Dafür gibt es die Methode removeCatalog(String). Der entfernte Katalog ist dabei gleichzeitig Rückgabewert dieser Methode.

Im folgenden Beispiel ist der Katalog eine Instanz von CatalogImpl. Beispielcode für Kataloge aus Unterklassen von CatalogImpl findet man beim Thema CatalogItems.
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() {
    System.out.println(SalesPointApplication.getApplicationCatalog().getName());
    SalesPointApplication.removeCatalog(SalesPointApplication.getApplicationCatalog());
    //NullPointerException
    System.out.println(SalesPointApplication.getApplicationCatalog().getName());
  }
}
import sale.Shop;
import data.ooimpl.CatalogImpl;
import data.Catalog;

public class SalesPointApplication extends Shop {

  private static final String KAT_KATALOGNAME = "Hauptkatalog";

  public SalesPointApplication() {
    super();
    addCatalog(new CatalogImpl(KAT_KATALOGNAME));
  }

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

  public static Catalog getApplicationCatalog() {
    return getTheShop().getCatalog(KAT_KATALOGNAME);
  }

  public static Catalog removeCatalog(Catalog c) {
    return getTheShop().removeCatalog(c.getName());
  }
}