001    package videoautomat.transition;
002    
003    import java.util.Arrays;
004    
005    import sale.FormSheet;
006    import sale.Gate;
007    import sale.SaleProcess;
008    import sale.Transition;
009    import sale.UIGate;
010    import users.User;
011    import users.UserManager;
012    import videoautomat.AutomatUser;
013    import videoautomat.contentcreator.RegisterContentCreator;
014    /**
015     * Transition to register a new {@link users.User}.
016     *
017     * @author Tobias Ruch
018     */
019    public class RegisterOKTransition implements Transition {
020    
021       /** Referenz the the given {@link RegisterContentCreator}*/
022    
023       private RegisterContentCreator creator;
024    
025       /**
026        * Construts a new <code>RegisterOKTransition</code> with the given ContentCreator
027        * from wich the Transition is called.
028        * @param creator - <code>RegisterContentCreator</code> which calls this {@link sale.Transition}
029        */
030       public RegisterOKTransition(RegisterContentCreator creator) {
031          this.creator = creator;
032       }
033       /**
034        * Implemeneted from the <code>Transition</code>-Interface to perform the registration
035        * @param sp - the process that triggered the Transition
036        * @param user - the user currently active in the process' ProcessContext
037        */
038       public Gate perform(SaleProcess sp, User user) {
039          //input validation
040    
041          StringBuffer errors = new StringBuffer("");
042    
043          // if no user name
044          if ("".equals(creator.getUserName())){
045             errors.append("You have to choose a user name!\n");
046          }
047    
048          //different passwords
049          if (!Arrays.equals(creator.getPassword(), creator.getConfirmedPassword())){
050             errors.append("The passwords are different!\n");
051    
052          }
053    
054          if (UserManager.getGlobalUM().getUserNames().contains(creator.getUserName())){
055             errors.append("User already exists!\n");
056          }
057    
058          // an error occurred
059          if (errors.length() != 0){
060             // set error message
061             creator.setErrorMessage(errors.toString());
062             // create new formsheet and reuse the old Content Creator
063             FormSheet register = new FormSheet("Register", creator, false);
064             // return the gate
065             return new UIGate(register, null);
066          }
067    
068    
069          //everything is ok: create the new user
070          UserManager.getGlobalUM().addUser(new AutomatUser(creator.getUserName(), creator.getPassword(), false));
071    
072          // return the commit gate
073          return sp.getCommitGate();
074       }
075    
076    }