Skip to content
Snippets Groups Projects
Commit 2aa59ba4 authored by Gwendal Margely's avatar Gwendal Margely :alembic:
Browse files

Adding the first state of Ingredient WebServlet

parent 7d38fafe
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ import java.sql.*; ...@@ -5,7 +5,7 @@ import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DAOIngredients { public class IngredientDAO {
// JDBC URL, username, and password of PostgresSQL server // JDBC URL, username, and password of PostgresSQL server
private static final String url = "jdbc:postgresql://"; //CHANGE URL private static final String url = "jdbc:postgresql://"; //CHANGE URL
private static final String user = "gwendalmargelyetu"; private static final String user = "gwendalmargelyetu";
...@@ -85,4 +85,7 @@ public class DAOIngredients { ...@@ -85,4 +85,7 @@ public class DAOIngredients {
close(); close();
return ingredient; return ingredient;
} }
public void deleteIngredient(int id) {
}
} }
package Servlets;
import DAO.IngredientDAO;
import POJO.Ingredient;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
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.List;
@WebServlet("/ingredients/*")
public class IngredientServlet extends HttpServlet {
private IngredientDAO ingredientDAO;
private ObjectMapper objectMapper;
@Override
public void init() throws ServletException {
ingredientDAO = new IngredientDAO();
objectMapper = new ObjectMapper();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
if (pathInfo == null || pathInfo.equals("/")) {
// Get all ingredients
try {
List<Ingredient> ingredients = ingredientDAO.getAllIngredients();
resp.setContentType("application/json");
resp.getWriter().write(objectMapper.writeValueAsString(ingredients));
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
resp.getWriter().write("Error fetching ingredients: " + e.getMessage());
}
} else {
String[] pathParts = pathInfo.split("/");
if (pathParts.length == 2) {
// Get ingredient by id
try {
int id = Integer.parseInt(pathParts[1]);
Ingredient ingredient = ingredientDAO.getIngredient(id);
if (ingredient != null) {
resp.setContentType("application/json");
resp.getWriter().write(objectMapper.writeValueAsString(ingredient));
} else {
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
resp.getWriter().write("Ingredient not found with id: " + id);
}
} catch (NumberFormatException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid ingredient id: " + pathParts[1]);
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
resp.getWriter().write("Error fetching ingredient: " + e.getMessage());
}
} else if (pathParts.length == 3 && pathParts[2].equals("name")) {
// Get ingredient name by id
try {
int id = Integer.parseInt(pathParts[1]);
Ingredient ingredient = ingredientDAO.getIngredient(id);
if (ingredient != null) {
resp.setContentType("application/json");
resp.getWriter().write(objectMapper.writeValueAsString(ingredient.getName()));
} else {
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
resp.getWriter().write("Ingredient not found with id: " + id);
}
} catch (NumberFormatException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid ingredient id: " + pathParts[1]);
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
resp.getWriter().write("Error fetching ingredient name: " + e.getMessage());
}
} else {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid endpoint");
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Add new ingredient
try {
Ingredient ingredient = objectMapper.readValue(req.getInputStream(), Ingredient.class);
IngredientDAO.insertIngredient(ingredient);
resp.setStatus(HttpServletResponse.SC_CREATED);
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
resp.getWriter().write("Error adding ingredient: " + e.getMessage());
}
}
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
if (pathInfo != null && !pathInfo.equals("/")) {
String[] pathParts = pathInfo.split("/");
if (pathParts.length == 2) {
// Delete ingredient by id
try {
int id = Integer.parseInt(pathParts[1]);
ingredientDAO.deleteIngredient(id); // Create this method
resp.setStatus(HttpServletResponse.SC_OK);
} catch (NumberFormatException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid ingredient id: " + pathParts[1]);
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
resp.getWriter().write("Error deleting ingredient: " + e.getMessage());
}
} else {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid endpoint");
}
} else {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().write("Invalid endpoint");
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment