Skip to content
This repository was archived by the owner on Jun 11, 2022. It is now read-only.

Commit d7341c4

Browse files
committed
Start working on servlets
1 parent 22a219d commit d7341c4

File tree

4 files changed

+44
-11
lines changed

4 files changed

+44
-11
lines changed

server/src/main/java/com/balinski/api_project/Main.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ static void testDatabase() {
3232
System.out.println(film.getTitle());
3333
} catch (DaoException e) {
3434
e.printStackTrace();
35-
System.exit(-1);
3635
}
3736
}
3837
}

server/src/main/java/com/balinski/api_project/database/dao/Dao.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@ public int getCount() throws DaoException {
2121
return ((Long)result.get(0).get("COUNT")).intValue();
2222
}
2323

24-
public T getById(int id) throws DaoException {
24+
public List<T> getById(int id) throws DaoException {
2525
List<Map<String, Object>> result = DaoManager.getData(
2626
String.format("SELECT * FROM %s T WHERE T.%s_ID = %d;", type.toString(), type.toString(), id)
2727
);
2828

29-
return result.size() > 0 ? toListOfObjects(result).get(0) : null;
29+
return toListOfObjects(result);
3030
}
3131

3232
public List<T> getAll() throws DaoException {
3333
List<Map<String, Object>> result = DaoManager.getData(
3434
String.format("SELECT * FROM %s;", type.toString())
3535
);
36-
36+
3737
return toListOfObjects(result);
3838
}
3939

server/src/main/java/com/balinski/api_project/server/handler/WebAppContextWrapper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ public WebAppContext getWebAppContext() {
2424
}
2525

2626
private void registerServlets() {
27-
context.addServlet(ActorServlet.class, "/actors");
28-
context.addServlet(FilmServlet.class, "/films");
29-
context.addServlet(LanguageServlet.class, "/languages");
30-
context.addServlet(UserServlet.class, "/users");
27+
context.addServlet(ActorServlet.class, "/actors/*");
28+
context.addServlet(FilmServlet.class, "/films/*");
29+
context.addServlet(LanguageServlet.class, "/languages/*");
30+
context.addServlet(UserServlet.class, "/users/*");
3131
}
3232

3333
}

server/src/main/java/com/balinski/api_project/servlet/ActorServlet.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,54 @@
1010
import javax.servlet.http.HttpServletResponse;
1111
import java.io.IOException;
1212
import java.io.PrintWriter;
13-
import java.util.List;
13+
import java.util.*;
14+
import java.util.stream.Collectors;
1415

1516

1617
public class ActorServlet extends HttpServlet {
1718
@Override
1819
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
1920
resp.setHeader("Content-Type", "application/vnd.api+json");
2021
PrintWriter writer = resp.getWriter();
22+
23+
var enumeration = req.getParameterNames();
24+
25+
var supportedParameters = Set.of("id", "page", "perPage", "firstName", "lastName", "order");
26+
var param = Collections.list(enumeration)
27+
.stream()
28+
.distinct()
29+
.filter(supportedParameters::contains)
30+
.collect(Collectors.toMap(x -> x, req::getParameter));
31+
32+
List<Actor> actors;
33+
var dao = DaoManager.getActorDao();
34+
2135
try {
22-
List<Actor> actors = DaoManager.getActorDao().getAll();
36+
if(param.get("id") != null)
37+
actors = dao.getById(Integer.parseInt(param.get("id")));
38+
else if(param.get("firstName") != null)
39+
actors = dao.getByFirstName(param.get("firstName"));
40+
else if(param.get("lastName") != null)
41+
actors = dao.getByLastName(param.get("lastName"));
42+
else if(param.get("perPage") != null && param.get("page") != null) {
43+
int perPage = Integer.parseInt(param.get("perPage"));
44+
int page = Integer.parseInt(param.get("page"));
45+
actors = dao.getIdBetween(perPage*page+1, perPage*(page+1));
46+
} else {
47+
actors = dao.getAll();
48+
}
49+
50+
if(param.get("order") != null) {
51+
if(param.get("order").equalsIgnoreCase("desc"))
52+
actors.sort(Comparator.comparing(Actor::getLastName).thenComparing(Actor::getFirstName).reversed());
53+
else
54+
actors.sort(Comparator.comparing(Actor::getLastName).thenComparing(Actor::getFirstName));
55+
}
56+
2357
String response = JsonResponseBuilder.mergeFromList(actors);
2458
writer.print(response);
2559
} catch (DaoException e) {
26-
System.err.println("An error occured in ActorServlet: " + e.getMessage());
60+
System.err.println("An error occurred in ActorServlet: " + e.getMessage());
2761
writer.print(JsonResponseBuilder.getErrorJson(e));
2862
e.printStackTrace();
2963
}

0 commit comments

Comments
 (0)