001 package videoautomat.transition; 002 import sale.Gate; 003 import sale.SaleProcess; 004 import sale.Transition; 005 import users.User; 006 import videoautomat.SaleProcessRent; 007 008 /** 009 * <code>Transition</code> that rollback the money-transactions and leads back to the 010 * {@link SaleProcessRent#getInitialGate()} 011 * 012 * @author Tobias Ruch 013 */ 014 public class RentPayRollbackTransition implements Transition { 015 016 /** 017 * Performes the transition. 018 * @param sp - current process 019 * @param user - current user of this process 020 * 021 * @return the new <code>Gate</code> which should be shown after the transition 022 */ 023 public Gate perform(SaleProcess sp, User user) { 024 SaleProcessRent saleProcess = (SaleProcessRent) sp; 025 saleProcess.getBasket().rollbackSubBasket(SaleProcessRent.SUB_TMP_MONEY); 026 return saleProcess.restart(); 027 } 028 029 }