package handlers; import com.google.gson.Gson; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import dao.DataAccessException; import request.FillRequest; import request.LoadRequest; import request.PersonRequest; import result.FillResult; import result.LoadResult; import result.PersonResult; import result.PersonsResult; import services.FillService; import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class FillHandler implements HttpHandler { final int DEFAULT_GENERATIONS = 4; public void handle(HttpExchange exchange) throws IOException { try { if (exchange.getRequestMethod().equals("POST")) { Gson gson = new Gson(); String URLPath = exchange.getRequestURI().getPath(); List<String> urlElements = new ArrayList<>(); Scanner s = new Scanner(URLPath).useDelimiter("/"); while (s.hasNext()) { urlElements.add(s.next()); } if (urlElements.size() == 3 && Integer.parseInt(urlElements.get(2)) > 0) { FillRequest request = new FillRequest(urlElements.get(1), Integer.parseInt(urlElements.get(2))); FillService service = new FillService(); FillResult result = service.fill(request); if (!result.isSuccess()) { exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_REQUEST, 0); } else { exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0); } DefaultHandler handler = new DefaultHandler(); OutputStream resBody = exchange.getResponseBody(); String jsonString = gson.toJson(result); handler.writeString(jsonString, resBody); resBody.close(); } else { FillRequest request = new FillRequest(urlElements.get(1), DEFAULT_GENERATIONS); FillService service = new FillService(); FillResult result = service.fill(request); if (!result.isSuccess()) { exchange.sendResponseHeaders(HttpURLConnection.HTTP_BAD_REQUEST, 0); } else { exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0); } DefaultHandler handler = new DefaultHandler(); OutputStream resBody = exchange.getResponseBody(); String jsonString = gson.toJson(result); handler.writeString(jsonString, resBody); resBody.close(); } } } catch (IOException | DataAccessException e) { exchange.sendResponseHeaders(HttpURLConnection.HTTP_SERVER_ERROR, 0); exchange.getResponseBody().close(); e.printStackTrace(); } } }