001 package org.cocome.tradingsystem.systests.interfaces; 002 003 /** 004 * Interface of the store PC. This is the view the environment (and thus the 005 * system tests) has on the system. It is mostly used for actions on the 006 * inventory (for most implementation these will map to database calls). 007 * 008 * @author Benjamin Hummel 009 * @author $Author: hummel $ 010 * @version $Rev: 47 $ 011 * @levd.rating GREEN Rev: 47 012 */ 013 public interface IStorePC { 014 015 /** 016 * Insert a new item into the stock of this store. The primary use of this 017 * is the initial creation of test data. Additional fields required by the 018 * database should be provided by the test driver. 019 * 020 * @param product 021 * the product added to the store. 022 * @param salesPrice 023 * the price at which the product is sold in the store in Cent. 024 * @param amount 025 * the amount available in the store. 026 * @param minAmount 027 * the minimal amount which should be available. 028 */ 029 void insertStockItem(IProduct product, int salesPrice, int amount, 030 int minAmount) throws Exception; 031 032 /** 033 * Get the current amount of a product in this store. 034 * 035 * @param product 036 * the product whose amount we are interested in. 037 * @return the amount of the given product available in this store. 038 */ 039 int getAmount(IProduct product) throws Exception; 040 041 /** 042 * Creates a new, empty order, which can be filled with order items and 043 * executed in the ordering process. 044 */ 045 IOrder createOrder() throws Exception; 046 047 /** 048 * Execute an order, i.e., we are done with adding products to that order so 049 * it can be sent out. 050 * 051 * @param order 052 * the order being executed. 053 */ 054 void executeOrder(IOrder order) throws Exception; 055 056 /** 057 * Indicates that all products of this order have been received, so they 058 * should be added to the current stock. 059 * 060 * @param order 061 * the order being delivered. 062 */ 063 void rollInOrder(IOrder order) throws Exception; 064 }