52 lines
2.0 KiB
Java
52 lines
2.0 KiB
Java
package ru.charm.back.controller.rest;
|
|
|
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.json.JsonMapper;
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import jakarta.servlet.annotation.MultipartConfig;
|
|
import jakarta.servlet.annotation.WebServlet;
|
|
import jakarta.servlet.http.HttpServlet;
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import ru.charm.back.dto.ProfileGetDto;
|
|
import ru.charm.back.service.ProfileService;
|
|
|
|
import java.io.IOException;
|
|
import java.io.PrintWriter;
|
|
import java.util.Optional;
|
|
|
|
import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
|
|
import static ru.charm.back.utils.UrlUtils.REST_URL;
|
|
|
|
@WebServlet(REST_URL + "/profile")
|
|
@MultipartConfig
|
|
public class ProfileController extends HttpServlet {
|
|
private final ProfileService service = ProfileService.getInstance();
|
|
|
|
private final ObjectMapper objectMapper = JsonMapper.builder()
|
|
.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
|
|
.addModule(new JavaTimeModule())
|
|
.build();
|
|
|
|
@Override
|
|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
|
try (PrintWriter writer = resp.getWriter()) {
|
|
resp.setContentType("application/json");
|
|
resp.setCharacterEncoding("UTF-8");
|
|
|
|
String sId = req.getParameter("id");
|
|
if (sId != null) {
|
|
Optional<ProfileGetDto> optProfileDto = service.findById(Long.parseLong(sId));
|
|
if (optProfileDto.isPresent()) {
|
|
ProfileGetDto profileGetDto = optProfileDto.get();
|
|
objectMapper.writeValue(writer, profileGetDto);
|
|
} else {
|
|
resp.sendError(SC_NOT_FOUND);
|
|
}
|
|
} else {
|
|
objectMapper.writeValue(writer, service.findAll());
|
|
}
|
|
}
|
|
}
|
|
} |