Skip to content

Instantly share code, notes, and snippets.

@vcatalano
Created March 10, 2017 19:54
Show Gist options
  • Select an option

  • Save vcatalano/c1af2a258a9417b749c52e675ab01c7c to your computer and use it in GitHub Desktop.

Select an option

Save vcatalano/c1af2a258a9417b749c52e675ab01c7c to your computer and use it in GitHub Desktop.

Revisions

  1. vcatalano created this gist Mar 10, 2017.
    44 changes: 44 additions & 0 deletions RegistrationExampleService.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    import com.example.exceptions.RegistrationException;
    import com.example.User;
    import com.example.UserRole;
    import com.example.AccountDAO;
    import com.example.UserDAO;
    import com.example.UserRoleDAO;
    import org.skife.jdbi.v2.sqlobject.CreateSqlObject;
    import org.skife.jdbi.v2.sqlobject.Transaction;

    /**
    * Simple registration service using a JDBI Transaction.
    */
    public abstract class RegistrationExampleService {

    @CreateSqlObject
    abstract AccountDAO accountDAO();

    @CreateSqlObject
    abstract UserDAO userDAO();

    @CreateSqlObject
    abstract UserRoleDAO userRoleDAO();

    @Transaction
    public User createUser(String website, String email, String password) throws RegistrationException {

    User user = userDAO().getByEmail(email);

    if (user != null) {
    throw new RegistrationException("Email already exists");
    }

    Account account = new Account(website);
    user = new User(email, password, account.getId());

    account.setOwnerId(user.getId());
    accountDAO().insert(account);
    userDAO().insert(user);
    userRoleDAO().insert(user.getId(), UserRole.ACCOUNT_ADMIN);

    return user;
    }

    }