001    package market.swing;
002    
003    import sale.SaleProcess;
004    import sale.SalesPoint;
005    import data.Catalog;
006    import data.CatalogItem;
007    import data.CountingStock;
008    import data.DataBasket;
009    import data.NotEnoughElementsException;
010    import data.stdforms.twotableformsheet.CCSStrategy;
011    
012    /**
013     * Defines the behaviour of the shifting buttons in the manager's Purchase-TwoTableFormSheet
014     */
015    public class CCSStrategyMarket extends CCSStrategy {
016    
017        public CCSStrategyMarket() {
018            super();
019        }
020    
021        /**
022         * Removes at most as much items as are left in the stock.
023         * @param p the current SaleProcess.
024         * @param sp the SalesPoint on which the TTFS is displayed.
025         * @param cSource the source Catalog.
026         * @param csDest the destination CountingStock.
027         * @param db the transaction's DataBasket.
028         * @param ci the affected CatalogItem
029         * @param nCount the amount of Items to be shifted.
030         */
031        protected void moveToSource (SaleProcess p, SalesPoint sp, Catalog cSource,
032                CountingStock csDest, DataBasket db, CatalogItem ci, int nCount) {
033            int count = csDest.countItems(ci.getName(),db);
034            count = Math.min(count, nCount);
035            try {
036                csDest.remove (ci.getName(), count, db);
037            }
038            catch (NotEnoughElementsException nee) {
039                error (p, NOT_ENOUGH_ELEMENTS_ERROR);
040            }
041            catch (data.events.VetoException ve) {
042                error (p, REMOVE_VETO_EXCEPTION);
043            }
044            catch (Exception e) {
045                System.out.println(e);
046            }
047        }
048    }