Added hasQuery param to listRolesByGroup web-service.

Rename query access.

Change-Id: Iab63af14f37045d9b34b41554f15758f1d24b0c1
diff --git a/src/main/java/de/ids_mannheim/korap/dto/QueryAccessDto.java b/src/main/java/de/ids_mannheim/korap/dto/RoleDto.java
similarity index 71%
rename from src/main/java/de/ids_mannheim/korap/dto/QueryAccessDto.java
rename to src/main/java/de/ids_mannheim/korap/dto/RoleDto.java
index f6e1173..0e16496 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/QueryAccessDto.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/RoleDto.java
@@ -2,12 +2,13 @@
 
 import java.util.List;
 
-import de.ids_mannheim.korap.entity.UserGroupMember;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
 import lombok.Getter;
 import lombok.Setter;
 
 /**
- * Defines the structure of query accesses, e.g. as JSON
+ * Defines the structure of query roles, e.g. as JSON
  * objects in HTTP Responses.
  * 
  * @author margaretha
@@ -15,9 +16,12 @@
  */
 @Getter
 @Setter
-public class QueryAccessDto {
+public class RoleDto {
     private int roleId;
+    private String privilege;
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
     private int queryId;
+    @JsonInclude(JsonInclude.Include.NON_NULL)
     private String queryName;
     private int userGroupId;
     private String userGroupName;
diff --git a/src/main/java/de/ids_mannheim/korap/dto/converter/QueryAccessConverter.java b/src/main/java/de/ids_mannheim/korap/dto/converter/RoleConverter.java
similarity index 68%
rename from src/main/java/de/ids_mannheim/korap/dto/converter/QueryAccessConverter.java
rename to src/main/java/de/ids_mannheim/korap/dto/converter/RoleConverter.java
index e2445e4..08ddb8e 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/converter/QueryAccessConverter.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/converter/RoleConverter.java
@@ -6,7 +6,7 @@
 
 import org.springframework.stereotype.Component;
 
-import de.ids_mannheim.korap.dto.QueryAccessDto;
+import de.ids_mannheim.korap.dto.RoleDto;
 import de.ids_mannheim.korap.entity.Role;
 import de.ids_mannheim.korap.entity.UserGroupMember;
 
@@ -20,16 +20,19 @@
  *
  */
 @Component
-public class QueryAccessConverter {
+public class RoleConverter {
 
-    public List<QueryAccessDto> createRoleDto (Set<Role> roles) {
-        List<QueryAccessDto> dtos = new ArrayList<>(roles.size());
+    public List<RoleDto> createRoleDto (Set<Role> roles) {
+        List<RoleDto> dtos = new ArrayList<>(roles.size());
         for (Role role : roles) {
-            QueryAccessDto dto = new QueryAccessDto();
+            RoleDto dto = new RoleDto();
             dto.setRoleId(role.getId());
-//            dto.setCreatedBy(role.getCreatedBy());
-            dto.setQueryId(role.getQuery().getId());
-            dto.setQueryName(role.getQuery().getName());
+            dto.setPrivilege(role.getPrivilege().name());
+            
+            if (role.getQuery() != null) {
+                dto.setQueryId(role.getQuery().getId());
+                dto.setQueryName(role.getQuery().getName());
+            }
             dto.setUserGroupId(role.getUserGroup().getId());
             dto.setUserGroupName(role.getUserGroup().getName());
             List<String> members = new ArrayList<>(
diff --git a/src/main/java/de/ids_mannheim/korap/service/QueryService.java b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
index cf3f70e..b9d7c3c 100644
--- a/src/main/java/de/ids_mannheim/korap/service/QueryService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
@@ -29,9 +29,9 @@
 import de.ids_mannheim.korap.dao.RoleDao;
 import de.ids_mannheim.korap.dao.UserGroupDao;
 import de.ids_mannheim.korap.dao.UserGroupMemberDao;
-import de.ids_mannheim.korap.dto.QueryAccessDto;
+import de.ids_mannheim.korap.dto.RoleDto;
 import de.ids_mannheim.korap.dto.QueryDto;
-import de.ids_mannheim.korap.dto.converter.QueryAccessConverter;
+import de.ids_mannheim.korap.dto.converter.RoleConverter;
 import de.ids_mannheim.korap.dto.converter.QueryConverter;
 import de.ids_mannheim.korap.entity.QueryDO;
 import de.ids_mannheim.korap.entity.Role;
@@ -97,7 +97,7 @@
     @Autowired
     private QueryConverter converter;
     @Autowired
-    private QueryAccessConverter accessConverter;
+    private RoleConverter accessConverter;
 
     private void verifyUsername (String contextUsername, String pathUsername)
             throws KustvaktException {
@@ -577,16 +577,15 @@
 //        return accessConverter.createQueryAccessDto(accessList);
 //    }
 
-    public List<QueryAccessDto> listRolesByGroup (String username,
-            String groupName) throws KustvaktException {
+    public List<RoleDto> listRolesByGroup (String username,
+            String groupName, boolean hasQuery) throws KustvaktException {
         UserGroup userGroup = userGroupService
                 .retrieveUserGroupByName(groupName);
 
         Set<Role> roles;
         if (adminDao.isAdmin(username)
                 || userGroupService.isUserGroupAdmin(username, userGroup)) {
-            //            accessList = accessDao.retrieveAllAccessByGroup(userGroup.getId());
-            roles = roleDao.retrieveRoleByGroupId(userGroup.getId(), true);
+            roles = roleDao.retrieveRoleByGroupId(userGroup.getId(), hasQuery);
 
         }
         else {
diff --git a/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java b/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
index 879963e..cb1ceda 100644
--- a/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
+++ b/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
@@ -9,7 +9,7 @@
 
 import de.ids_mannheim.korap.constant.OAuth2Scope;
 import de.ids_mannheim.korap.constant.QueryType;
-import de.ids_mannheim.korap.dto.QueryAccessDto;
+import de.ids_mannheim.korap.dto.RoleDto;
 import de.ids_mannheim.korap.dto.QueryDto;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.exceptions.StatusCodes;
@@ -27,6 +27,7 @@
 import de.ids_mannheim.korap.web.utils.ResourceFilters;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.DefaultValue;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.POST;
 import jakarta.ws.rs.PUT;
@@ -413,14 +414,15 @@
      */
     @GET
     @Path("access")
-    public List<QueryAccessDto> listRoles (
-            @Context SecurityContext securityContext,
-            @QueryParam("groupName") String groupName) {
+    public List<RoleDto> listRoles (@Context SecurityContext securityContext,
+            @QueryParam("groupName") String groupName,
+            @DefaultValue("true") @QueryParam("hasQuery") boolean hasQuery) {
         TokenContext context = (TokenContext) securityContext
                 .getUserPrincipal();
         try {
             scopeService.verifyScope(context, OAuth2Scope.VC_ACCESS_INFO);
-            return service.listRolesByGroup(context.getUsername(), groupName);
+            return service.listRolesByGroup(context.getUsername(), groupName,
+                    hasQuery);
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);