Projekt

Obecné

Profil

« Předchozí | Další » 

Revize a8badaaf

Přidáno uživatelem Dominik Poch před téměř 6 roky(ů)

Re #7526 Database queries that handle requests

Zobrazit rozdíly:

server/src/main/java/cz/zcu/yamanager/repository/RequestRepository.java
1
package cz.zcu.yamanager.repository;
2

  
3
import cz.zcu.yamanager.dto.AuthorizationRequest;
4
import cz.zcu.yamanager.dto.Status;
5
import cz.zcu.yamanager.dto.VacationRequest;
6
import cz.zcu.yamanager.dto.VacationType;
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.jdbc.core.JdbcTemplate;
11
import org.springframework.stereotype.Repository;
12

  
13
import java.sql.ResultSet;
14
import java.util.List;
15

  
16
/**
17
 * An instance of the class RequestRepository handles queries which selects and updates requests in a database.
18
 */
19
@Repository
20
public class RequestRepository {
21
    /**
22
     * The logger.
23
     */
24
    private static final Logger log = LoggerFactory.getLogger(RequestRepository.class);
25

  
26
    /**
27
     * The connection to a database.
28
     */
29
    private final JdbcTemplate jdbc;
30

  
31
    /**
32
     * Creates a new instance of the class RequestRepository which selects and updates requests in a database.
33
     * @param jdbc A connection to the database.
34
     */
35
    @Autowired
36
    public RequestRepository(JdbcTemplate jdbc) {
37
        log.trace("Creating a new instance of the class RequestRepository");
38
        this.jdbc = jdbc;
39
    }
40

  
41
    /**
42
     * Gets all authorization request from a database.
43
     * @return A list of all authorization requests.
44
     */
45
    public List<AuthorizationRequest> getAllAuthorizations() {
46
        log.trace("Selecting all authorization requests from a database.");
47

  
48
        return jdbc.query("SELECT EU.id, EU.first_name, EU.last_name, EU.creation_date, APS.name " +
49
                "FROM end_user EU " +
50
                "INNER JOIN approval_status APS ON EU.status_id = APS.id",
51
                (ResultSet rs, int rowNum) -> {
52
            AuthorizationRequest request = new AuthorizationRequest();
53
            request.setId(rs.getLong("EU.id"));
54
            request.setFirstName(rs.getString("EU.first_name"));
55
            request.setLastName(rs.getString("EU.last_name"));
56
            request.setStatus(Status.getStatus(rs.getString("APS.name")));
57
            request.setTimestamp(rs.getTimestamp("EU.creation_date").toLocalDateTime());
58
            return request;
59
        });
60
    }
61

  
62
    /**
63
     * Gets all authorization request with the given status from a database.
64
     * @param status The approval status of the requests.
65
     * @return A list of all authorization requests.
66
     */
67
    public List<AuthorizationRequest> getAllAuthorizations(Status status) {
68
        log.debug("Selecting all authorization requests from a database with requested status: {}", status);
69

  
70
        return jdbc.query("SELECT EU.id, EU.first_name, EU.last_name, EU.creation_date " +
71
                "FROM end_user EU " +
72
                "INNER JOIN approval_status APS ON EU.status_id = APS.id " +
73
                "WHERE APS.name=?",
74
                new Object[]{status.name()},
75
                (ResultSet rs, int rowNum) -> {
76
            AuthorizationRequest request = new AuthorizationRequest();
77
            request.setId(rs.getLong("EU.id"));
78
            request.setFirstName(rs.getString("EU.first_name"));
79
            request.setLastName(rs.getString("EU.last_name"));
80
            request.setStatus(status);
81
            request.setTimestamp(rs.getTimestamp("EU.creation_date").toLocalDateTime());
82
            return request;
83
        });
84
    }
85

  
86
    /**
87
     * Updates a status of an authorization request with the given id.
88
     * @param id The id of the request.
89
     * @param status The new status of the request.
90
     */
91
    public void updateAuthorization(long id, Status status) {
92
        log.debug("Updating authorization request with id {} in a database to {}.", id, status);
93

  
94
        jdbc.update("UPDATE end_user EU, approval_status APS SET EU.status_id=APS.id WHERE EU.id=? AND APS.name=?", id, status.name());
95
    }
96

  
97
    /**
98
     * Updates a status of an authorization request from an AuthorizationRequest object.
99
     * @param request The AuthorizationRequest object with new values of the authorization request.
100
     */
101
    public void updateAuthorization(AuthorizationRequest request) {
102
        this.updateAuthorization(request.getId(), request.getStatus());
103
    }
104

  
105
    /**
106
     * Gets all vacation request from a database.
107
     * @return A list of all vacation requests.
108
     */
109
    public List<VacationRequest> getAllVacationRequests() {
110
        log.trace("Selecting all vacation requests from a database.");
111

  
112
        return jdbc.query("SELECT VD.id, VD.vacation_date, VD.time_from, VD.time_to, VD.creation_date, VT.name, APS.name, EU.first_name, EU.last_name " +
113
                "FROM vacation_day VD " +
114
                "INNER JOIN vacation_type VT on VD.type_id=VT.id " +
115
                "INNER JOIN approval_status APS ON VD.status_id=APS.id" +
116
                "INNER JOIN end_user EU ON VD.user_id=EU.id",
117
                (ResultSet rs, int rowNum) -> {
118
            VacationRequest request = new VacationRequest();
119
            request.setId(rs.getLong("VD.id"));
120
            request.setFirstName(rs.getString("EU.first_name"));
121
            request.setLastName(rs.getString("EU.last_name"));
122
            request.setDate(rs.getDate("VD.vacation_date").toLocalDate());
123
            request.setFrom(rs.getTime("VD.time_from").toLocalTime());
124
            request.setTo(rs.getTime("VD.time_to").toLocalTime());
125
            request.setType(VacationType.getVacationType("VT.name"));
126
            request.setStatus(Status.getStatus("APS.name"));
127
            return request;
128
        });
129
    }
130

  
131
    /**
132
     * Gets all vacation request with the given status from a database.
133
     * @param status The approval status of the requests.
134
     * @return A list of all vacation requests.
135
     */
136
    public List<VacationRequest> getAllVacationRequests(Status status) {
137
        log.debug("Selecting all vacation requests from a database with requested status: {}", status);
138

  
139
        return jdbc.query("SELECT VD.id, VD.vacation_date, VD.time_from, VD.time_to, VD.creation_date, VT.name, APS.name, EU.first_name, EU.last_name " +
140
                "FROM vacation_day VD " +
141
                "INNER JOIN vacation_type VT on VD.type_id=VT.id " +
142
                "INNER JOIN approval_status APS ON VD.status_id=APS.id" +
143
                "INNER JOIN end_user EU ON VD.user_id=EU.id" +
144
                "WHERE APS.name=?",
145
                new Object[]{status.name()},
146
                (ResultSet rs, int rowNum) -> {
147
            VacationRequest request = new VacationRequest();
148
            request.setId(rs.getLong("VD.id"));
149
            request.setFirstName(rs.getString("EU.first_name"));
150
            request.setLastName(rs.getString("EU.last_name"));
151
            request.setDate(rs.getDate("VD.vacation_date").toLocalDate());
152
            request.setFrom(rs.getTime("VD.time_from").toLocalTime());
153
            request.setTo(rs.getTime("VD.time_to").toLocalTime());
154
            request.setType(VacationType.getVacationType("VT.name"));
155
            request.setStatus(status);
156
            return request;
157
        });
158
    }
159

  
160
    /**
161
     * Updates a status of a vacation request with the given id.
162
     * @param id The id of the request.
163
     * @param status The new status of the request.
164
     */
165
    public void updateVacationRequest(long id, Status status) {
166
        log.debug("Updating vacation request with id {} in a database to {}.", id, status);
167

  
168
        jdbc.update("UPDATE vacation_day VD, approval_status APS SET VD.status_id=APS.id WHERE VD.id=? AND APS.name=?", id, status.name());
169
    }
170

  
171
    /**
172
     * Updates a status of a vacation request from a VacationRequest object.
173
     * @param request The VacationRequest object with new values of the vacation request.
174
     */
175
    public void updateVacationRequest(VacationRequest request) {
176
        this.updateAuthorization(request.getId(), request.getStatus());
177
    }
178
}

Také k dispozici: Unified diff