// Path: app/src/main/java/de/codecentric/controller/EditSessionController.java
// @Controller
// public class EditSessionController {
// 
//     private static final Logger LOGGER = Logger.getLogger(EditSessionController.class);
// 
//     @Autowired
//     private SessionDao sessionDao;
// 
//     @Autowired
//     private TimeslotDao timeslotDao;
// 
//     public EditSessionController() {
//         super();
//     }
// 
//     public EditSessionController(SessionDao sessionDao, TimeslotDao timeslotDao) {
//         this();
//         this.sessionDao = sessionDao;
//         this.timeslotDao = timeslotDao;
//     }
// 
//     @RequestMapping(value = "/createSession", method = RequestMethod.GET)
//     public ModelAndView createSession(ModelMap modelMap, HttpServletRequest request) {
//         modelMap.put("timeslots", timeslotDao.getTimeslots("Fri"));
//         modelMap.put("days", timeslotDao.getConferenceDays());
// 
//         OpenSpaceFormData data = new OpenSpaceFormData();
//         data.setStart(request.getParameter("start"));
//         data.setEnd(request.getParameter("end"));
//         data.setLocation(request.getParameter("location"));
//         data.setDate(request.getParameter("day"));
//         modelMap.put("sessionDataFormData", data);
//         modelMap.put("newSession", true);
// 
//         return new ModelAndView("editSession", modelMap);
//     }
// 
//     @RequestMapping(value = "/editSession", method = RequestMethod.GET)
//     public void setupForm(ModelMap modelMap, HttpServletRequest request) {
// 
//         modelMap.put("sessionDataFormData", new OpenSpaceFormData());
//         modelMap.put("timeslots", timeslotDao.getTimeslots("Fri"));
//         modelMap.put("days", timeslotDao.getConferenceDays());
//         modelMap.put("newSession", false);
// 
//         String sessionId = request.getParameter("sessionId");
// 
//         if (sessionId != null) {
//             try {
//                 Session session = sessionDao.getSessionById(sessionId);
//                 String descriptionWithoutBrTags = Html.brTagsToLineBreaks(session.getDescription());
//                 session.setDescription(descriptionWithoutBrTags);
//                 modelMap.put("session", session);
//                 modelMap.put("sessionDataFormData", new OpenSpaceFormData(session));
//                 modelMap.put("sessionId", sessionId);
//             } catch (Exception e) {
//                 LOGGER.error("To change body of catch statement use File | Settings | File Templates.", e);
//             }
//         }
// 
//     }
// 
//     @RequestMapping(value = "/editSession", method = RequestMethod.POST)
//     public ModelAndView processSubmit(HttpServletRequest request, ModelMap modelMap, @ModelAttribute("sessionDataFormData") OpenSpaceFormData formData, BindingResult result) {
// 
//         modelMap.put("sessionDataFormData", formData);
// 
//         if (result.hasErrors()) {
//             System.out.println("Validation errors ocurred.");
//             return new ModelAndView("editSession");
//         }
// 
//         String sessionId = request.getParameter("sessionId");
//         if (sessionId != null) {
//             try {
//                 Session session = sessionDao.getSessionById(sessionId);
//                 session.setAuthor(Html.escapeHtml(formData.getSpeaker()));
//                 session.setTitle(Html.escapeHtml(formData.getTitle()));
//                 session.setDescription(Html.lineBreaksToBrTags(Html.escapeHtml(formData.getDescription())));
//                 sessionDao.saveSession(session);
// 
//                 return new ModelAndView("redirect:allSessions");
//             } catch (Exception e) {
//                 // do nothing!
//             }
//         } else {
//             // save the data
//             Session session = new Session(formData.getDate(), formData.getStart(), formData.getLocation(), formData.getTitle(), formData.getSpeaker(), formData.getDescription());
//             session.setEnd(formData.getEnd());
//             session.setType(SessionType.openspace);
//             sessionDao.saveSession(session);
//         }
// 
//         return new ModelAndView("redirect:allSessions");
//     }
// 
//     @RequestMapping(value = "/timeslotsPerDay", method = RequestMethod.GET)
//     public @ResponseBody Map<String, String> getTimeslotForDay(@RequestParam("day") String day) {
// 
//         List<Timeslot> timeslots = timeslotDao.getTimeslots(day);
//         Map<String, String> timeslotsProjected = new HashMap<String, String>();
// 
//         for (Timeslot timeslot : timeslots) {
//             timeslotsProjected.put(timeslot.getStart(), timeslot.toString());
//         }
// 
//         return timeslotsProjected;
//     }
// 
// }
// 
// Path: app/src/main/java/de/codecentric/dao/SessionDao.java
// public interface SessionDao {
// 
//     List<Session> getAllSessions();
// 
//     List<String> getListOfConferenceDays();
// 
//     List<Session> getAllStaticSessions();
// 
//     /* returns all sessions for a specific date */
//     List<Session> getSessionsByDate(String date);
// 
//     Session saveSession(Session session);
// 
//     Session getSessionById(String id);
// 
//     List<Session> getStaticSessionsByDate(String shortName);
// 
//     List<Session> getCurrentSessions();
// 
//     List<Session> getAllSessionsByAuthor(String author);
// 
//     List<Session> getAllSessionsByDate(String now);
// 
//     List<Session> getAllSessionsByDateAndType(String date, SessionType... type);
// 
//     List<Session> getAllSessionsByAuthorOrTitleOrDescription(String searchTerm);
// 
// }


import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import de.codecentric.controller.EditSessionController;
import de.codecentric.dao.SessionDao;
package de.codecentric.controller;





public class EditSessionControllerTest {

    @Mock
    private SessionDao sessionDao;

    private EditSessionController controller;

// Path: app/src/main/java/de/codecentric/controller/EditSessionController.java
// @Controller
// public class EditSessionController {
// 
//     private static final Logger LOGGER = Logger.getLogger(EditSessionController.class);
// 
//     @Autowired
//     private SessionDao sessionDao;
// 
//     @Autowired
//     private TimeslotDao timeslotDao;
// 
//     public EditSessionController() {
//         super();
//     }
// 
//     public EditSessionController(SessionDao sessionDao, TimeslotDao timeslotDao) {
//         this();
//         this.sessionDao = sessionDao;
//         this.timeslotDao = timeslotDao;
//     }
// 
//     @RequestMapping(value = "/createSession", method = RequestMethod.GET)
//     public ModelAndView createSession(ModelMap modelMap, HttpServletRequest request) {
//         modelMap.put("timeslots", timeslotDao.getTimeslots("Fri"));
//         modelMap.put("days", timeslotDao.getConferenceDays());
// 
//         OpenSpaceFormData data = new OpenSpaceFormData();
//         data.setStart(request.getParameter("start"));
//         data.setEnd(request.getParameter("end"));
//         data.setLocation(request.getParameter("location"));
//         data.setDate(request.getParameter("day"));
//         modelMap.put("sessionDataFormData", data);
//         modelMap.put("newSession", true);
// 
//         return new ModelAndView("editSession", modelMap);
//     }
// 
//     @RequestMapping(value = "/editSession", method = RequestMethod.GET)
//     public void setupForm(ModelMap modelMap, HttpServletRequest request) {
// 
//         modelMap.put("sessionDataFormData", new OpenSpaceFormData());
//         modelMap.put("timeslots", timeslotDao.getTimeslots("Fri"));
//         modelMap.put("days", timeslotDao.getConferenceDays());
//         modelMap.put("newSession", false);
// 
//         String sessionId = request.getParameter("sessionId");
// 
//         if (sessionId != null) {
//             try {
//                 Session session = sessionDao.getSessionById(sessionId);
//                 String descriptionWithoutBrTags = Html.brTagsToLineBreaks(session.getDescription());
//                 session.setDescription(descriptionWithoutBrTags);
//                 modelMap.put("session", session);
//                 modelMap.put("sessionDataFormData", new OpenSpaceFormData(session));
//                 modelMap.put("sessionId", sessionId);
//             } catch (Exception e) {
//                 LOGGER.error("To change body of catch statement use File | Settings | File Templates.", e);
//             }
//         }
// 
//     }
// 
//     @RequestMapping(value = "/editSession", method = RequestMethod.POST)
//     public ModelAndView processSubmit(HttpServletRequest request, ModelMap modelMap, @ModelAttribute("sessionDataFormData") OpenSpaceFormData formData, BindingResult result) {
// 
//         modelMap.put("sessionDataFormData", formData);
// 
//         if (result.hasErrors()) {
//             System.out.println("Validation errors ocurred.");
//             return new ModelAndView("editSession");
//         }
// 
//         String sessionId = request.getParameter("sessionId");
//         if (sessionId != null) {
//             try {
//                 Session session = sessionDao.getSessionById(sessionId);
//                 session.setAuthor(Html.escapeHtml(formData.getSpeaker()));
//                 session.setTitle(Html.escapeHtml(formData.getTitle()));
//                 session.setDescription(Html.lineBreaksToBrTags(Html.escapeHtml(formData.getDescription())));
//                 sessionDao.saveSession(session);
// 
//                 return new ModelAndView("redirect:allSessions");
//             } catch (Exception e) {
//                 // do nothing!
//             }
//         } else {
//             // save the data
//             Session session = new Session(formData.getDate(), formData.getStart(), formData.getLocation(), formData.getTitle(), formData.getSpeaker(), formData.getDescription());
//             session.setEnd(formData.getEnd());
//             session.setType(SessionType.openspace);
//             sessionDao.saveSession(session);
//         }
// 
//         return new ModelAndView("redirect:allSessions");
//     }
// 
//     @RequestMapping(value = "/timeslotsPerDay", method = RequestMethod.GET)
//     public @ResponseBody Map<String, String> getTimeslotForDay(@RequestParam("day") String day) {
// 
//         List<Timeslot> timeslots = timeslotDao.getTimeslots(day);
//         Map<String, String> timeslotsProjected = new HashMap<String, String>();
// 
//         for (Timeslot timeslot : timeslots) {
//             timeslotsProjected.put(timeslot.getStart(), timeslot.toString());
//         }
// 
//         return timeslotsProjected;
//     }
// 
// }
// 
// Path: app/src/main/java/de/codecentric/dao/SessionDao.java
// public interface SessionDao {
// 
//     List<Session> getAllSessions();
// 
//     List<String> getListOfConferenceDays();
// 
//     List<Session> getAllStaticSessions();
// 
//     /* returns all sessions for a specific date */
//     List<Session> getSessionsByDate(String date);
// 
//     Session saveSession(Session session);
// 
//     Session getSessionById(String id);
// 
//     List<Session> getStaticSessionsByDate(String shortName);
// 
//     List<Session> getCurrentSessions();
// 
//     List<Session> getAllSessionsByAuthor(String author);
// 
//     List<Session> getAllSessionsByDate(String now);
// 
//     List<Session> getAllSessionsByDateAndType(String date, SessionType... type);
// 
//     List<Session> getAllSessionsByAuthorOrTitleOrDescription(String searchTerm);
// 
// }


// Path: app/src/test/java/de/codecentric/controller/EditSessionControllerTest.java
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import de.codecentric.controller.EditSessionController;
import de.codecentric.dao.SessionDao;

package de.codecentric.controller;





public class EditSessionControllerTest {

    @Mock
    private SessionDao sessionDao;

    private EditSessionController controller;

    @Before