InsertAvailabilityServlet.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.concurrent.ExecutionException;

/**
 * this class controls the interaction between personal trainer and system.
 * return 1 if the insertion is done, 0 not done,
 * 2 if the availability already exists
 */
@WebServlet(name = "InsertAvailabilityServlet",
        value = "/availability-controller")
public class InsertAvailabilityServlet
        extends HttpServlet {
    /**
     * AgendaDAO.
     */
    private AgendaDAO agendaDAO =
            new AgendaDAOImpl();
    /**
     * AgendaService to use the service methods.
     */
    private AgendaService agendaService =
            new AgendaServiceImpl(agendaDAO);

    protected void doPost(HttpServletRequest request,
                          HttpServletResponse response)
            throws IOException {


        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");

        String data = request.getParameter("dataSelected");


        String x = request.getParameter("timeSelected");

        String res = "";
        try {

                    agendaService.checkAvailability(data, x);

            Availability prova =
                    agendaService.getAvailabilityByDateAndTime(
                            data, Integer.parseInt(x));

            if (prova == null) {
                //si puo creare availability poiche non esiste gia
                Availability avaiability =
                        new Availability(data, Integer.parseInt(x));
                agendaService.createAvailability(avaiability);
                res = new Gson().toJson(1);
            } else {    //non si puo creare availability poiche esiste gia
                res = new Gson().toJson(2);
            }
        } catch (IllegalArgumentException
                | InterruptedException | ExecutionException e) {
            // se non ritorna 1 o 2,allora ritorna un messaggio di errore
            res = new Gson().toJson(e.getMessage());
            response.getWriter().write(res);
            return;
        }
        response.getWriter().write(res);
        return;
    }

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws IOException {
        doPost(request, response);
    }
}