Java tutorial
/* * Copyright 2015 Garret Leotta, Jonathan Lynch, Joseph Mandarino, * Michael Yeung * * This file is part of GG Testing Center Scheduler. * GG Testing Center Scheduler is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * GG Testing Center Scheduler is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along * with GG Testing Center Scheduler. If not, see http://www.gnu.org/licenses/. */ package com.gigglinggnus.controllers; import com.gigglinggnus.testingcenter.Course; import java.io.File; import java.io.IOException; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.stream.Collectors; import java.time.Duration; import java.time.Instant; import java.time.Clock; import java.time.ZoneId; import java.time.LocalDateTime; import javax.persistence.Persistence; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.TypedQuery; import javax.persistence.NoResultException; import javax.servlet.ServletException; import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONObject; import org.json.JSONArray; import com.gigglinggnus.testingcenter.Appointment; import com.gigglinggnus.testingcenter.Term; import com.gigglinggnus.testingcenter.User; import com.gigglinggnus.testingcenter.Exam; import com.gigglinggnus.testingcenter.Seating; public class ModifyAppointmentController extends HttpServlet { public ModifyAppointmentController() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { EntityManager em = (EntityManager) request.getSession().getAttribute("em"); Clock clk = (Clock) (request.getSession().getAttribute("clock")); String userId = request.getParameter("u"); String examId = request.getParameter("e"); User student = em.find(User.class, userId); Exam exam = em.find(Exam.class, examId); Appointment appt = student.getAppointmentByExam(exam); request.setAttribute("appt", appt); RequestDispatcher rd = request.getRequestDispatcher("/admin/modify-apmt.jsp"); rd.forward(request, response); } /** * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { EntityManager em = (EntityManager) request.getSession().getAttribute("em"); Clock clk = (Clock) (request.getSession().getAttribute("clock")); boolean modified = false; String userId = request.getParameter("userid"); User user = em.find(User.class, userId); String examId = request.getParameter("examid"); Exam exam = em.find(Exam.class, examId); Appointment appt = user.getAppointmentByExam(exam); String startTime = request.getParameter("startTime"); String seatZone = request.getParameter("seatingZone"); String seatNum = request.getParameter("seatNum"); String cancel = request.getParameter("cancel"); try { em.getTransaction().begin(); if (startTime != "") { appt.changeStartTime(Instant.parse(startTime), clk); em.persist(appt); modified = true; } if (seatZone != "") { appt.setSeatingZone(Seating.parse(seatZone)); em.persist(appt); modified = true; } if (seatNum != "") { appt.setSeatNum(Integer.parseInt(seatNum)); em.persist(appt); modified = true; } em.getTransaction().commit(); } catch (Exception e) { em.getTransaction().rollback(); request.setAttribute("msg", e); RequestDispatcher rd = request.getRequestDispatcher("/home.jsp"); rd.forward(request, response); } if (cancel != null) { request.setAttribute("msg", "Appointment cancelled"); RequestDispatcher rd = request.getRequestDispatcher("/home.jsp"); rd.forward(request, response); } if (modified == true) { request.setAttribute("msg", "Appointment modified"); RequestDispatcher rd = request.getRequestDispatcher("/home.jsp"); rd.forward(request, response); } else { request.setAttribute("msg", "Appointment unchanged"); RequestDispatcher rd = request.getRequestDispatcher("/home.jsp"); rd.forward(request, response); } } }