001    package videoautomat.contentcreator.stdactions;
002    import sale.Action;
003    import sale.SaleProcess;
004    import sale.SalesPoint;
005    import data.DataBasket;
006    
007    /**
008     * Standart action to start an {@link sale.SaleProcess}.
009     *
010     * @author Tobias Ruch
011     */
012    public class RunProcessAction implements Action {
013    
014       /** instance of the process which should be started by this action. */
015       private SaleProcess process;
016       
017       private DataBasket basket;
018       
019       
020       /**
021        * Constructs a new action to start the process.
022        * @param process - {@link sale.SaleProcess} which should be started by this action.
023        */
024       public RunProcessAction(SaleProcess process) {
025          this.process = process;
026       }
027       
028       /**
029        * Constructs a new action to start the process.
030        * @param process - {@link sale.SaleProcess} which should be started by this action.
031        * @param basket - {@link data.ooimpl.DataBasket} attached to the process.
032        */
033       public RunProcessAction(SaleProcess process, DataBasket basket)
034       {
035           this.process = process;
036           this.basket = basket;
037       }
038    
039       /**
040        * Applies the action and start the given process.
041        * @param saleProcess - current {@link sale.SaleProecess}
042        * @param salePoint   - current {@link sale.SalesPoint}
043        */
044       public void doAction(SaleProcess saleProcess, SalesPoint salePoint) throws Throwable {
045          if(basket != null)
046              salePoint.runProcess(process, basket);
047          else
048              salePoint.runProcess(process);
049       }
050    
051    }