|
1 | 1 | package com.balinski.api_project.database.dao;
|
2 | 2 |
|
3 | 3 |
|
4 |
| -import com.balinski.api_project.database.DaoManager; |
5 |
| -import com.balinski.api_project.database.model.Actor; |
| 4 | +import com.balinski.api_project.database.model.DatabaseModel; |
6 | 5 |
|
7 |
| -import java.sql.Timestamp; |
8 | 6 | import java.util.*;
|
9 | 7 |
|
10 | 8 | public class ActorDao extends Dao {
|
11 | 9 | public ActorDao(DaoManager manager, boolean transaction) {
|
12 |
| - super(manager, transaction); |
| 10 | + super(manager, ModelType.ACTOR, transaction); |
13 | 11 | }
|
14 | 12 |
|
15 |
| - public Actor getById(int id) { |
| 13 | + public List<? super DatabaseModel> getByFirstName(String firstName) { |
16 | 14 | List<Map<String, Object>> result = manager.queryGetData(
|
17 |
| - "SELECT * FROM ACTOR A WHERE A.ACTOR_ID = " + id + ";" |
| 15 | + String.format("SELECT * FROM ACTOR A WHERE lower(A.FIRST_NAME) = '%s';", firstName.toLowerCase()) |
18 | 16 | );
|
19 | 17 |
|
20 |
| - return result.size() > 0 ? toListOfActors(result).get(0) : null; |
| 18 | + return toListOfObjects(result); |
21 | 19 | }
|
22 | 20 |
|
23 |
| - public List<Actor> getByFirstName(String firstName) { |
| 21 | + public List<? super DatabaseModel> getByLastName(String lastName) { |
24 | 22 | List<Map<String, Object>> result = manager.queryGetData(
|
25 |
| - "SELECT * FROM ACTOR A WHERE lower(A.FIRST_NAME) = '" + firstName.toLowerCase() + "';" |
| 23 | + String.format("SELECT * FROM ACTOR A WHERE lower(A.LAST_NAME) = '%s';", lastName.toLowerCase()) |
26 | 24 | );
|
27 | 25 |
|
28 |
| - return toListOfActors(result); |
29 |
| - } |
30 |
| - |
31 |
| - public List<Actor> getByLastName(String lastName) { |
32 |
| - List<Map<String, Object>> result = manager.queryGetData( |
33 |
| - "SELECT * FROM ACTOR A WHERE lower(A.LAST_NAME) = '" + lastName.toLowerCase() + "';" |
34 |
| - ); |
35 |
| - |
36 |
| - return toListOfActors(result); |
37 |
| - } |
38 |
| - |
39 |
| - @Override |
40 |
| - public Integer getCount() { |
41 |
| - List<Map<String, Object>> result = manager.queryGetData( |
42 |
| - "SELECT COUNT(*) AS COUNT FROM ACTOR;" |
43 |
| - ); |
44 |
| - |
45 |
| - return ((Long)result.get(0).get("COUNT")).intValue(); |
46 |
| - } |
47 |
| - |
48 |
| - @Override |
49 |
| - public List<Actor> getAll() { |
50 |
| - List<Map<String, Object>> result = manager.queryGetData( |
51 |
| - "SELECT * FROM ACTOR;" |
52 |
| - ); |
53 |
| - |
54 |
| - return toListOfActors(result); |
55 |
| - } |
56 |
| - |
57 |
| - @Override |
58 |
| - public List<Actor> getIdBetween(int start, int stop) { |
59 |
| - List<Map<String, Object>> result = manager.queryGetData( |
60 |
| - "SELECT * FROM ACTOR A WHERE A.ACTOR_ID BETWEEN " + start + " AND " + stop + ";" |
61 |
| - ); |
62 |
| - |
63 |
| - return toListOfActors(result); |
64 |
| - } |
65 |
| - |
66 |
| - @Override |
67 |
| - public int add(Object obj) { |
68 |
| - if(!(obj instanceof Actor)) |
69 |
| - return 0; |
70 |
| - |
71 |
| - Actor actor = (Actor) obj; |
72 |
| - |
73 |
| - String sql = String.format("INSERT INTO ACTOR VALUES (%d, '%s', '%s', TIMESTAMP '%s');", |
74 |
| - actor.getId(), actor.getFirstName(), actor.getLastName(), actor.getLastUpdate().format(toDateTime)); |
75 |
| - |
76 |
| - int rowsAdded = manager.queryModify(sql, transaction); |
77 |
| - count += rowsAdded; |
78 |
| - |
79 |
| - return rowsAdded; |
80 |
| - } |
81 |
| - |
82 |
| - @Override |
83 |
| - public int addAll(List<Object> list) { |
84 |
| - if(list == null || list.size() == 0) |
85 |
| - return 0; |
86 |
| - |
87 |
| - StringBuilder sql = new StringBuilder("INSERT INTO ACTOR VALUES "); |
88 |
| - |
89 |
| - for(Object obj : list) { |
90 |
| - Actor actor = (Actor) obj; |
91 |
| - |
92 |
| - sql.append(String.format("(%d, '%s', '%s', TIMESTAMP '%s'), ", |
93 |
| - actor.getId(), actor.getFirstName(), actor.getLastName(), actor.getLastUpdate().format(toDateTime))); |
94 |
| - } |
95 |
| - |
96 |
| - sql.replace(sql.lastIndexOf(", "), sql.length(), ";"); |
97 |
| - |
98 |
| - int rowsAdded = manager.queryModify(sql.toString(), transaction); |
99 |
| - count += rowsAdded; |
100 |
| - |
101 |
| - return rowsAdded; |
102 |
| - } |
103 |
| - |
104 |
| - public List<Actor> toListOfActors(List<Map<String, Object>> listOfMaps) { |
105 |
| - if(listOfMaps == null) |
106 |
| - return null; |
107 |
| - |
108 |
| - List<Actor> listOfActors = new ArrayList<>(listOfMaps.size()); |
109 |
| - |
110 |
| - for(var actor : listOfMaps) { |
111 |
| - listOfActors.add(new Actor((int)actor.get("ACTOR_ID"), (String)actor.get("FIRST_NAME"), |
112 |
| - (String)actor.get("LAST_NAME"), ((Timestamp)actor.get("LAST_UPDATE")).toLocalDateTime())); |
113 |
| - } |
114 |
| - |
115 |
| - return listOfActors; |
| 26 | + return toListOfObjects(result); |
116 | 27 | }
|
117 | 28 |
|
118 | 29 | }
|
0 commit comments