ApplicationResourResource domain object
authorGustavo Martin Morcuende <gu.martinm@gmail.com>
Tue, 4 Oct 2016 12:37:25 +0000 (14:37 +0200)
committerGustavo Martin Morcuende <gu.martinm@gmail.com>
Tue, 4 Oct 2016 12:37:25 +0000 (14:37 +0200)
src/main/java/com/prueba/persistence/dao/ApplicationResourceDao.java
src/main/java/com/prueba/persistence/domain/ApplicationResourceResource.java [new file with mode: 0644]
src/main/java/com/prueba/services/impl/AuthorizationServicesImpl.java

index 0df20bb..fc352ab 100644 (file)
@@ -9,16 +9,17 @@ import javax.sql.DataSource;
 
 import com.prueba.core.context.integration.database.impl.DataBaseAccessImpl;
 import com.prueba.core.context.web.application.ApplicationWebContext;
+import com.prueba.persistence.domain.ApplicationResourceResource;
 
 public class ApplicationResourceDao {
-       public static final String URL_PATTERN = "URL_PATTERN";
-       public static final String HTTP_METHOD = "HTTP_METHOD";
+       private static final String URL_PATTERN = "URL_PATTERN";
+       private static final String HTTP_METHOD = "HTTP_METHOD";
 
-       public List<Map<String, String>> findURLsByUserName(String userName) {
+       public List<ApplicationResourceResource> findURLsByUserName(String userName) {
                final DataSource dataSource = ApplicationWebContext.getInstance().getDataSource();
                final DataBaseAccessImpl dataBaseAccess = new DataBaseAccessImpl(dataSource);
                
-               return dataBaseAccess.executeQuery(""
+               final List<Map<String, String>> results = dataBaseAccess.executeQuery(""
                                + "SELECT APP_RES.URL_PATTERN, APP_RES.HTTP_METHOD FROM APPLICATION_ROLE APP_ROLE "
                                + "INNER JOIN APPLICATION_RESOURCE_APPLICATION_ROLE APP_RES_APP_ROLE ON APP_ROLE.CODE = APP_RES_APP_ROLE.APPLICATION_ROLE_CODE "
                                + "INNER JOIN APPLICATION_RESOURCE APP_RES ON APP_RES.URL_PATTERN = APP_RES_APP_ROLE.APPLICATION_RESOURCE_URL_PATTERN "
@@ -41,6 +42,18 @@ public class ApplicationResourceDao {
                preparedStatement -> {
                        preparedStatement.setString(1, userName);
                });
+               
+               final List<ApplicationResourceResource> applicationResources = new ArrayList<>();
+               if (!results.isEmpty()) {
+                       results.forEach(row ->
+                       {
+                               ApplicationResourceResource resource =
+                                               new ApplicationResourceResource(row.get(URL_PATTERN), row.get(HTTP_METHOD));
+                               applicationResources.add(resource);
+                       });
+               }
+               
+               return applicationResources;
        }
 }
 
diff --git a/src/main/java/com/prueba/persistence/domain/ApplicationResourceResource.java b/src/main/java/com/prueba/persistence/domain/ApplicationResourceResource.java
new file mode 100644 (file)
index 0000000..7d528c2
--- /dev/null
@@ -0,0 +1,25 @@
+package com.prueba.persistence.domain;
+
+public class ApplicationResourceResource {
+       private final String urlPattern;
+       private final String httpMethod;
+       
+       public ApplicationResourceResource() {
+               this.urlPattern = null;
+               this.httpMethod = null;
+       }
+       
+       public ApplicationResourceResource(String urlPattern, String httpMethod) {
+               this.urlPattern = urlPattern;
+               this.httpMethod = httpMethod;
+       }
+
+       public String getUrlPattern() {
+               return urlPattern;
+       }
+
+       public String getHttpMethod() {
+               return httpMethod;
+       }
+
+}
index 77e9f22..d30f61d 100644 (file)
@@ -8,10 +8,10 @@ import org.slf4j.LoggerFactory;
 
 import com.prueba.core.context.util.AntPathMatcher;
 import com.prueba.persistence.dao.ApplicationResourceDao;
+import com.prueba.persistence.domain.ApplicationResourceResource;
 
 public class AuthorizationServicesImpl {
        private static final Logger LOGGER = LoggerFactory.getLogger(AuthorizationServicesImpl.class);
-
        private static final String USER_NAME_PARAM = "username";
        private static final String API_URL_PATTERN = "/app/api/users/{" + USER_NAME_PARAM + "}";
 
@@ -20,14 +20,14 @@ public class AuthorizationServicesImpl {
                
                final ApplicationResourceDao dao = new ApplicationResourceDao();
                
-               final List<Map<String, String>> urls = dao.findURLsByUserName(userName);
+               final List<ApplicationResourceResource> urls = dao.findURLsByUserName(userName);
                
-               return urls.stream().anyMatch(urlMap ->
+               return urls.stream().anyMatch(url ->
                {
-                       final String urlPatternValue = urlMap.get(ApplicationResourceDao.URL_PATTERN);
+                       final String urlPatternValue = url.getUrlPattern();
                        final String urlReplacedPatternValue = urlPatternValue.replace("{" + USER_NAME_PARAM + "}", userNameParam);
                        
-                       final String httpMethodValue = urlMap.get(ApplicationResourceDao.HTTP_METHOD);
+                       final String httpMethodValue = url.getHttpMethod();
                        
                        return urlReplacedPatternValue.equals(uri) && httpMethodValue.equals(httpMethod);
                });