package flapjack.controller; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import com.google.common.collect.ImmutableMap; import org.glassfish.jersey.server.mvc.Viewable; import com.yammer.metrics.annotation.Timed; import flapjack.entity.Person; import flapjack.entity.Session; import flapjack.manager.PersonManager; import flapjack.utils.AppUtils; /** * Controller for the account page * * @author Ray Vanderborght */ @Path("/account") public class AccountController { @Inject private PersonManager personManager; /** * Get the account page */ @GET @Produces(MediaType.TEXT_HTML) @Timed public Viewable account() { Map<String, String> model = new HashMap<String, String>(); return new Viewable("/account.html", model); } /** * Handle account setup form submission */ @POST @Path("/setup") @Produces(MediaType.APPLICATION_JSON) @Timed public Map<String, String> setup(@Context HttpServletRequest request, @FormParam("name") String name) { if (!AppUtils.isValid(name, 3, 32)) { return ImmutableMap.of("errorMessage", "Must supply a name between 3 and 32 characters long"); } Session session = personManager.findSession(request); if (session == null) { return ImmutableMap.of("errorMessage", "Must be logged in"); } Person person = session.getPerson(); person.setName(name); personManager.update(person); return ImmutableMap.of("status", "success"); } }