Account GET data
[WebAppTest/.git] / src / main / java / com / prueba / authorization / persistence / dao / ApplicationResourceDao.java
1 package com.prueba.authorization.persistence.dao;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import javax.sql.DataSource;
9
10 import com.prueba.core.context.integration.database.impl.DataBaseAccessImpl;
11 import com.prueba.core.context.web.application.ApplicationWebContext;
12
13 public class ApplicationResourceDao {
14         public static final String URL_PATTERN = "URL_PATTERN";
15         public static final String HTTP_METHOD = "HTTP_METHOD";
16
17         public List<Map<String, String>> findURLsByUserName(String userName) {
18                 final DataSource dataSource = ApplicationWebContext.getInstance().getDataSource();
19                 final DataBaseAccessImpl dataBaseAccess = new DataBaseAccessImpl(dataSource);
20                 
21                 return dataBaseAccess.executeQuery(""
22                                 + "SELECT APP_RES.URL_PATTERN, APP_RES.HTTP_METHOD FROM APPLICATION_ROLE APP_ROLE "
23                                 + "INNER JOIN APPLICATION_RESOURCE_APPLICATION_ROLE APP_RES_APP_ROLE ON APP_ROLE.CODE = APP_RES_APP_ROLE.APPLICATION_ROLE_CODE "
24                                 + "INNER JOIN APPLICATION_RESOURCE APP_RES ON APP_RES.URL_PATTERN = APP_RES_APP_ROLE.APPLICATION_RESOURCE_URL_PATTERN "
25                                 + "INNER JOIN ACCOUNT ACC ON ACC.APPLICATION_ROLE_CODE = APP_ROLE.CODE "
26                                 + "WHERE ACC.CODE = ? ",
27                                 answer ->
28                 {
29                         final List<Map<String, String>> result = new ArrayList<>();
30                         while (answer.next()) {
31                                 final Map<String, String> row = new HashMap<>();
32                                 String urlPatternValue = answer.getString(URL_PATTERN);
33                                 String httpMethodValue = answer.getString(HTTP_METHOD);
34                                 row.put(URL_PATTERN, urlPatternValue);
35                                 row.put(HTTP_METHOD, httpMethodValue);
36                                 result.add(row);
37                         }
38               
39                         return result;
40                 },
41                 preparedStatement -> {
42                         preparedStatement.setString(1, userName);
43                 });
44         }
45 }
46