22
33import java .io .IOException ;
44import java .util .List ;
5+ import java .util .Map ;
56import java .util .stream .Collectors ;
67
78import javax .servlet .ServletException ;
1112import javax .servlet .http .HttpServletResponse ;
1213
1314import com .fasterxml .jackson .databind .ObjectMapper ;
15+ import com .fasterxml .jackson .databind .SerializationFeature ;
16+ import com .fasterxml .jackson .datatype .jsr310 .JavaTimeModule ;
1417
1518import daoimplementors .UserImplementor ;
1619import daointerfaces .UserDAO ;
1720import dtos .UserDTO ;
1821import models .User ;
22+ import models .User .Role ;
1923
2024/**
2125 * Servlet implementation class UserServlet
@@ -32,6 +36,16 @@ public UserServlet() {
3236 super ();
3337 // TODO Auto-generated constructor stub
3438 }
39+
40+ @ Override
41+ protected void service (HttpServletRequest req , HttpServletResponse resp ) throws ServletException , IOException {
42+ if ("PATCH" .equalsIgnoreCase (req .getMethod ())) {
43+ doPatch (req , resp );
44+ } else {
45+ super .service (req , resp );
46+ }
47+ }
48+
3549
3650 /**
3751 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
@@ -44,20 +58,22 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
4458 System .out .println ("UserServlet hit for: " + request .getRequestURI ());
4559 System .out .println (path );
4660 ObjectMapper mapper = new ObjectMapper ();
61+ mapper .registerModule (new JavaTimeModule ());
62+ mapper .disable (SerializationFeature .WRITE_DATES_AS_TIMESTAMPS );
4763
4864 if (path == null || path .equals ("/IssuesandDeploymentTracker/api/users" )) {
4965 List <User > users = userdao .findAll ();
5066 List <UserDTO > userDtos = users .stream ()
5167 .map (u -> new UserDTO (u .getId (), u .getFullName (), u .getEmail (),
52- (u .getRole () != null ) ? u .getRole ().toString () : "NONE" ))
68+ (u .getRole () != null ) ? u .getRole ().toString () : "NONE" , u .getCreatedAt (),
69+ u .getUpdatedAt ()))
5370 .collect (Collectors .toList ());
5471 response .setContentType ("application/json" );
5572 mapper .writeValue (response .getWriter (), userDtos );
5673 return ;
5774
58- } else {
59-
6075 }
76+
6177 response .setStatus (HttpServletResponse .SC_NOT_FOUND );
6278 response .getWriter ().write ("{\" message\" :\" Endpoint not found\" }" );
6379 }
@@ -72,4 +88,57 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
7288 doGet (request , response );
7389 }
7490
91+ protected void doPatch (HttpServletRequest request , HttpServletResponse response )
92+ throws ServletException , IOException {
93+ // TODO Auto-generated method stub
94+ String path = request .getRequestURI ();
95+ System .out .println ("UserServlet hit for: " + request .getRequestURI ());
96+ System .out .println (path );
97+ ObjectMapper mapper = new ObjectMapper ();
98+ mapper .registerModule (new JavaTimeModule ());
99+ mapper .disable (SerializationFeature .WRITE_DATES_AS_TIMESTAMPS );
100+ if (path .equals ("/IssuesandDeploymentTracker/api/users/changeRole" )) {
101+
102+ if ("PATCH" .equalsIgnoreCase (request .getMethod ())) {
103+ try {
104+ // Read JSON body
105+
106+ Map <String , Object > body = mapper .readValue (request .getReader (), Map .class );
107+
108+ Long id = Long .valueOf (body .get ("id" ).toString ());
109+ Object roleObj = body .get ("role" );
110+ Role role = null ;
111+ if (roleObj != null && !"NONE" .equals (roleObj .toString ())) {
112+ role = Role .valueOf (roleObj .toString ());
113+ }
114+
115+
116+ boolean success = userdao .changeRole (id , role );
117+
118+ response .setContentType ("application/json" );
119+ response .setCharacterEncoding ("UTF-8" );
120+
121+ if (success ) {
122+ response .setStatus (HttpServletResponse .SC_OK );
123+ response .setContentType ("application/json" );
124+ response .setCharacterEncoding ("UTF-8" );
125+ response .getWriter ().write ("{\" message\" :\" Role updated successfully\" }" );
126+ } else {
127+ response .setStatus (HttpServletResponse .SC_NOT_FOUND );
128+ response .setContentType ("application/json" );
129+ response .setCharacterEncoding ("UTF-8" );
130+ response .getWriter ().write ("{\" message\" :\" User not found or some other error\" }" );
131+ }
132+
133+ } catch (Exception e ) {
134+ e .printStackTrace ();
135+ response .setStatus (HttpServletResponse .SC_INTERNAL_SERVER_ERROR );
136+ response .getWriter ().write ("{\" error\" :\" Server error\" }" );
137+ }
138+ } else {
139+ response .setStatus (HttpServletResponse .SC_METHOD_NOT_ALLOWED );
140+ }
141+ }
142+ }
143+
75144}
0 commit comments