ViewAvailabilityServlet.java
package it.unisa.c03.myPersonalTrainer.agenda.control;
import com.google.gson.Gson;
import it.unisa.c03.myPersonalTrainer.agenda.bean.Availability;
import it.unisa.c03.myPersonalTrainer.agenda.dao.AgendaDAO;
import it.unisa.c03.myPersonalTrainer.agenda.dao.AgendaDAOImpl;
import it.unisa.c03.myPersonalTrainer.agenda.service.AgendaService;
import it.unisa.c03.myPersonalTrainer.agenda.service.AgendaServiceImpl;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.concurrent.ExecutionException;
/**
* this class controls the interaction between personal
* trainer and system to view personal trainer availability.
* return 1+"Message" if there is an error in the date input,
* 0 if there aren't availability, else return the
* availability list for this date.
*/
@WebServlet(name = "ViewAvailabilityServlet",
value = "/view-availability")
public class ViewAvailabilityServlet
extends HttpServlet {
/**
* AgendaDAO.
*/
private AgendaDAO agendaDAO =
new AgendaDAOImpl();
/**
* AgendaService to use the service methods.
*/
private AgendaService agendaService =
new AgendaServiceImpl(agendaDAO);
/**
*parametro fittizio per effettuare solo il check sulla data.
* @param request
* @param response
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
final String TIME_PASS = "15";
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
/**
* data presa dalla jsp
*/
String data =
request.getParameter("dataSelected");
/**
* stringa che verra' data in output in formato json
*/
String res = "";
try {
agendaService.checkAvailability(
data, TIME_PASS);
ArrayList<Availability> list =
(ArrayList<Availability>)
agendaService.getAvailabilityByDate(data);
if (list.size() == 0) {
res = new Gson().toJson(0);
//non ci sono disponibilita per quella data.
} else { //ritorna le disponibilita' per la data scelta
list.sort(Comparator.comparing(Availability::getTime));
res = new Gson().toJson(list);
}
} catch (IllegalArgumentException
| InterruptedException | ExecutionException e) {
//ritorna il valore 1+il messaggio del relativo errore.
// 1 e' un valore sentinella.
res = new Gson().toJson(
"1" + e.getMessage());
//formato non valido o data precedente
response.getWriter().write(res);
return;
}
response.getWriter().write(res);
return;
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException {
doPost(request, response);
}
}