001 package org.cocome.tradingsystem.testdriver; 002 003 import org.cocome.tradingsystem.inventory.data.enterprise.Product; 004 import org.cocome.tradingsystem.inventory.data.enterprise.ProductSupplier; 005 import org.cocome.tradingsystem.inventory.data.enterprise.TradingEnterprise; 006 import org.cocome.tradingsystem.systests.interfaces.IEnterprise; 007 import org.cocome.tradingsystem.systests.interfaces.IProduct; 008 import org.cocome.tradingsystem.systests.interfaces.IStorePC; 009 010 /** 011 * Glue code for the entire enterprice (i.e. the database). 012 * 013 * @author Benjamin Hummel 014 * @author $Author: hummel $ 015 * @version $Rev: 63 $ 016 * @levd.rating GREEN Rev: 63 017 */ 018 public class Enterprise implements IEnterprise { 019 020 /** The DB representation of the enterprise. */ 021 private final TradingEnterprise dbEnterprise; 022 023 /** The supplier used for all products. */ 024 private final ProductSupplier defaultSupplier; 025 026 /** Create the enterprise. */ 027 public Enterprise() { 028 dbEnterprise = new TradingEnterprise(); 029 dbEnterprise.setName("My Enterprise"); 030 DBManager.getInstance().persistDBObject(dbEnterprise); 031 032 defaultSupplier = new ProductSupplier(); 033 defaultSupplier.setName("default supplier"); 034 DBManager.getInstance().persistDBObject(defaultSupplier); 035 } 036 037 /** {@inheritDoc} */ 038 public IProduct createProduct(int barcode, int purchasePrice, String name) { 039 Product product = new Product(); 040 product.setBarcode(barcode); 041 product.setName(name); 042 product.setPurchasePrice(purchasePrice / 100.); 043 product.setSupplier(defaultSupplier); 044 DBManager.getInstance().persistDBObject(product); 045 return new ProductWrapper(product); 046 } 047 048 /** Returns the enterprise DB object. */ 049 public TradingEnterprise getDBEnterprise() { 050 return dbEnterprise; 051 } 052 053 /** {@inheritDoc} */ 054 public boolean existsProductTransfer(IProduct product, IStorePC storeFrom, 055 IStorePC storeTo) { 056 057 /* 058 * Currently we only check, if there are incoming goods and not, if they 059 * are really from the expected store. 060 */ 061 062 StorePC to = (StorePC) storeTo; 063 return (to.getIncomingAmount(product) > 0); 064 } 065 066 }