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.