package controllers; import java.util.List; import dao.Dao; import exceptions.ExceptionMapper; import managers.StationManager; import managers.UserManager; import managers.WorkItemManager; import models.Station; import models.User; import models.WorkItem; import models.WorkItemStateTransition; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; /** * WorkItem CRUD services. * * @author: bbenson */ public class WorkItems extends Controller { private static final WorkItemManager workItemManager = new WorkItemManager(new Dao<WorkItem>(WorkItem.class), new Dao<WorkItemStateTransition>(WorkItemStateTransition.class), new UserManager(new Dao<User>(User.class)), new StationManager(new Dao<Station>(Station.class))); public static Result list() { try { Long projectId = toLong(play.data.Form.form().bindFromRequest().get("projectId")); Long assigneeId = toLong(play.data.Form.form().bindFromRequest().get("assigneeId")); Long stationId = toLong(play.data.Form.form().bindFromRequest().get("stationId")); String state = play.data.Form.form().bindFromRequest().get("state"); List<WorkItem> workItems = (workItemManager.list(projectId, assigneeId, stationId, state)); return ok(Json.toJson(workItems)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result read(Long workItemId) { try { WorkItem workItem = workItemManager.read(workItemId); return ok(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result create() { try { WorkItem workItemIn = Json.fromJson(request().body().asJson(), WorkItem.class); WorkItem workItem = workItemManager.create(workItemIn); return created(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result update(Long workItemId) { try { WorkItem workItemIn = Json.fromJson(request().body().asJson(), WorkItem.class); WorkItem workItem = workItemManager.update(workItemIn); return ok(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result delete(Long workItemId) { try { workItemManager.delete(workItemId); return ok(); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result assign(Long workItemId) { try { Long assigneeId = toLong(play.data.Form.form().bindFromRequest().get("assigneeId")); Long transitionerId = toLong(play.data.Form.form().bindFromRequest().get("transitionerId")); String comment = play.data.Form.form().bindFromRequest().get("comment"); WorkItem workItem = workItemManager.assign(workItemId, assigneeId, transitionerId, comment); return ok(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result process(Long workItemId) { try { Long transitionerId = toLong(play.data.Form.form().bindFromRequest().get("transitionerId")); String comment = play.data.Form.form().bindFromRequest().get("comment"); WorkItem workItem = workItemManager.process(workItemId, transitionerId, comment); return ok(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } public static Result next(Long workItemId) { try { Long nextStationId = toLong(play.data.Form.form().bindFromRequest().get("nextStationId")); Long transitionerId = toLong(play.data.Form.form().bindFromRequest().get("transitionerId")); String comment = play.data.Form.form().bindFromRequest().get("comment"); WorkItem workItem = workItemManager.next(workItemId, nextStationId, transitionerId, comment); return ok(Json.toJson(workItem)); } catch (RuntimeException ex) { return ExceptionMapper.toResult(ex); } } private static Long toLong(String parm) { Long converted = null; if (parm != null) { converted = Long.parseLong(parm); } return converted; } }