package com.globant.katari.sample.time.view; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.globant.katari.sample.time.application.SaveTimeEntryCommand; import com.globant.katari.sample.time.domain.TimeEntry; import com.globant.katari.sample.time.domain.TimeRepository; /** Spring MVC Controller to edit a time entry. * * Subclasses need to override <code>createCommandBean</code> and * <code>createViewTimeEntryCommand</code> to retrieve a backing object for * the current form. Use method injection to override * <code>createCommandBean</code> and <code>createViewTimeEntryCommand</code>. * * @author nicolas.frontini */ public abstract class EditTimeEntryController extends BaseTimeController { /** The class logger. */ private static Logger log = LoggerFactory.getLogger(EditTimeEntryController.class); /** Default initialization for the controller. * * @param theTimeRepository The time entry repository. */ public EditTimeEntryController(final TimeRepository theTimeRepository) { super(theTimeRepository); } /** Retrieve a backing object for the current form from the given request. * * @param request The HTTP request we are processing. * * @exception Exception if the application logic throws an exception. * * @return The command bean object. */ @Override protected Object formBackingObject(final HttpServletRequest request) throws Exception { log.trace("Entering formBackingObject"); SaveTimeEntryCommand saveTimeEntryCommand = (SaveTimeEntryCommand) createCommandBean(); TimeEntry timeEntry = getTimeRepository().findTimeEntry( Long.valueOf(request.getParameter("timeEntryId"))); saveTimeEntryCommand.setTimeEntryId(timeEntry.getId()); saveTimeEntryCommand.setActivityId(timeEntry.getActivity().getId()); saveTimeEntryCommand.setProjectId(timeEntry.getProject().getId()); saveTimeEntryCommand.setStart(timeEntry.getPeriod().getStartHour() + ":" + timeEntry.getPeriod().getStartMinutes()); saveTimeEntryCommand.setDuration(timeEntry.getPeriod().getDuration()); saveTimeEntryCommand.setComment(timeEntry.getComment()); saveTimeEntryCommand.setDate(timeEntry.getEntryDate()); log.trace("Leaving formBackingObject"); return saveTimeEntryCommand; } }