mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
api: Fix search by name (#6032)
* Search by name * add keyword search for projectroles * remove unnecessary arg
This commit is contained in:
parent
648f2c1d82
commit
3a74ec78be
@ -74,9 +74,10 @@ public interface ProjectRoleService {
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param projectId ID of the project whosr project roles are to be listed
|
* @param projectId ID of the project whosr project roles are to be listed
|
||||||
|
* @param keyword
|
||||||
* @return List of all available project roles
|
* @return List of all available project roles
|
||||||
*/
|
*/
|
||||||
List<ProjectRole> findProjectRoles(Long projectId);
|
List<ProjectRole> findProjectRoles(Long projectId, String keyword);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a project role permission to be mapped to a project role.
|
* Creates a project role permission to be mapped to a project role.
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import org.apache.cloudstack.acl.ProjectRole;
|
|||||||
import org.apache.cloudstack.acl.RoleType;
|
import org.apache.cloudstack.acl.RoleType;
|
||||||
import org.apache.cloudstack.api.APICommand;
|
import org.apache.cloudstack.api.APICommand;
|
||||||
import org.apache.cloudstack.api.ApiConstants;
|
import org.apache.cloudstack.api.ApiConstants;
|
||||||
import org.apache.cloudstack.api.BaseCmd;
|
import org.apache.cloudstack.api.BaseListCmd;
|
||||||
import org.apache.cloudstack.api.Parameter;
|
import org.apache.cloudstack.api.Parameter;
|
||||||
import org.apache.cloudstack.api.response.ListResponse;
|
import org.apache.cloudstack.api.response.ListResponse;
|
||||||
import org.apache.cloudstack.api.response.ProjectResponse;
|
import org.apache.cloudstack.api.response.ProjectResponse;
|
||||||
@ -36,7 +36,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
@APICommand(name = ListProjectRolesCmd.APINAME, description = "Lists Project roles in CloudStack", responseObject = ProjectRoleResponse.class,
|
@APICommand(name = ListProjectRolesCmd.APINAME, description = "Lists Project roles in CloudStack", responseObject = ProjectRoleResponse.class,
|
||||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.15.0", authorized = {
|
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.15.0", authorized = {
|
||||||
RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User})
|
RoleType.Admin, RoleType.ResourceAdmin, RoleType.DomainAdmin, RoleType.User})
|
||||||
public class ListProjectRolesCmd extends BaseCmd {
|
public class ListProjectRolesCmd extends BaseListCmd {
|
||||||
public static final String APINAME = "listProjectRoles";
|
public static final String APINAME = "listProjectRoles";
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
@ -79,7 +79,7 @@ public class ListProjectRolesCmd extends BaseCmd {
|
|||||||
} else if (StringUtils.isNotBlank(getRoleName())) {
|
} else if (StringUtils.isNotBlank(getRoleName())) {
|
||||||
projectRoles = projRoleService.findProjectRolesByName(getProjectId(), getRoleName());
|
projectRoles = projRoleService.findProjectRolesByName(getProjectId(), getRoleName());
|
||||||
} else {
|
} else {
|
||||||
projectRoles = projRoleService.findProjectRoles(getProjectId());
|
projectRoles = projRoleService.findProjectRoles(getProjectId(), getKeyword());
|
||||||
}
|
}
|
||||||
final ListResponse<ProjectRoleResponse> response = new ListResponse<>();
|
final ListResponse<ProjectRoleResponse> response = new ListResponse<>();
|
||||||
final List<ProjectRoleResponse> roleResponses = new ArrayList<>();
|
final List<ProjectRoleResponse> roleResponses = new ArrayList<>();
|
||||||
|
|||||||
@ -25,5 +25,5 @@ import com.cloud.utils.db.GenericDao;
|
|||||||
|
|
||||||
public interface ProjectRoleDao extends GenericDao<ProjectRoleVO, Long> {
|
public interface ProjectRoleDao extends GenericDao<ProjectRoleVO, Long> {
|
||||||
List<ProjectRoleVO> findByName(String name, Long projectId);
|
List<ProjectRoleVO> findByName(String name, Long projectId);
|
||||||
List<ProjectRoleVO> findAllRoles(Long projectId);
|
List<ProjectRoleVO> findAllRoles(Long projectId, String keyword);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,15 +17,14 @@
|
|||||||
|
|
||||||
package org.apache.cloudstack.acl.dao;
|
package org.apache.cloudstack.acl.dao;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.acl.ProjectRoleVO;
|
|
||||||
|
|
||||||
import com.cloud.utils.db.GenericDaoBase;
|
import com.cloud.utils.db.GenericDaoBase;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
|
import org.apache.cloudstack.acl.ProjectRoleVO;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long> implements ProjectRoleDao{
|
public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long> implements ProjectRoleDao{
|
||||||
private final SearchBuilder<ProjectRoleVO> ProjectRoleSearch;
|
private final SearchBuilder<ProjectRoleVO> ProjectRoleSearch;
|
||||||
|
|
||||||
@ -33,8 +32,9 @@ public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long> imp
|
|||||||
super();
|
super();
|
||||||
|
|
||||||
ProjectRoleSearch = createSearchBuilder();
|
ProjectRoleSearch = createSearchBuilder();
|
||||||
ProjectRoleSearch.and("name", ProjectRoleSearch.entity().getName(), SearchCriteria.Op.LIKE);
|
ProjectRoleSearch.and("name", ProjectRoleSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
ProjectRoleSearch.and("project_id", ProjectRoleSearch.entity().getProjectId(), SearchCriteria.Op.EQ);
|
ProjectRoleSearch.and("project_id", ProjectRoleSearch.entity().getProjectId(), SearchCriteria.Op.EQ);
|
||||||
|
ProjectRoleSearch.and("keyword", ProjectRoleSearch.entity().getName(), SearchCriteria.Op.LIKE);
|
||||||
ProjectRoleSearch.done();
|
ProjectRoleSearch.done();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -42,20 +42,26 @@ public class ProjectRoleDaoImpl extends GenericDaoBase<ProjectRoleVO, Long> imp
|
|||||||
public List<ProjectRoleVO> findByName(String name, Long projectId) {
|
public List<ProjectRoleVO> findByName(String name, Long projectId) {
|
||||||
SearchCriteria<ProjectRoleVO> sc = ProjectRoleSearch.create();
|
SearchCriteria<ProjectRoleVO> sc = ProjectRoleSearch.create();
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name)) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
if (projectId != null) {
|
if (projectId != null) {
|
||||||
sc.setParameters("project_id", projectId);
|
sc.setParameters("project_id", projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return listBy(sc);
|
return listBy(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ProjectRoleVO> findAllRoles(Long projectId) {
|
public List<ProjectRoleVO> findAllRoles(Long projectId, String keyword) {
|
||||||
SearchCriteria<ProjectRoleVO> sc = ProjectRoleSearch.create();
|
SearchCriteria<ProjectRoleVO> sc = ProjectRoleSearch.create();
|
||||||
if (projectId != null) {
|
if (projectId != null) {
|
||||||
sc.setParameters("project_id", projectId);
|
sc.setParameters("project_id", projectId);
|
||||||
}
|
}
|
||||||
|
if (StringUtils.isNotEmpty(keyword)) {
|
||||||
|
SearchCriteria<ProjectRoleVO> ssc = createSearchCriteria();
|
||||||
|
ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");
|
||||||
|
sc.addAnd("name", SearchCriteria.Op.SC, ssc);
|
||||||
|
}
|
||||||
return listBy(sc);
|
return listBy(sc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -897,7 +897,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
|
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
|
|
||||||
SearchCriteria<InstanceGroupJoinVO> sc = sb.create();
|
SearchCriteria<InstanceGroupJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
@ -913,7 +913,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _vmGroupJoinDao.searchAndCount(sc, searchFilter);
|
return _vmGroupJoinDao.searchAndCount(sc, searchFilter);
|
||||||
@ -1012,7 +1012,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
|
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
|
||||||
sb.and("idIN", sb.entity().getId(), SearchCriteria.Op.IN);
|
sb.and("idIN", sb.entity().getId(), SearchCriteria.Op.IN);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("stateEQ", sb.entity().getState(), SearchCriteria.Op.EQ);
|
sb.and("stateEQ", sb.entity().getState(), SearchCriteria.Op.EQ);
|
||||||
sb.and("stateNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ);
|
sb.and("stateNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ);
|
||||||
sb.and("stateNIN", sb.entity().getState(), SearchCriteria.Op.NIN);
|
sb.and("stateNIN", sb.entity().getState(), SearchCriteria.Op.NIN);
|
||||||
@ -1160,7 +1160,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state != null) {
|
if (state != null) {
|
||||||
@ -1410,7 +1410,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
// pagination
|
// pagination
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
|
|
||||||
sb.and("name", sb.entity().getInstanceName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getInstanceName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.IN);
|
sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.IN);
|
||||||
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
|
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
|
||||||
@ -1470,7 +1470,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
@ -1892,7 +1892,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
||||||
// ids
|
// ids
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("type", sb.entity().getType(), SearchCriteria.Op.LIKE);
|
sb.and("type", sb.entity().getType(), SearchCriteria.Op.LIKE);
|
||||||
sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ);
|
sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ);
|
||||||
sb.and("dataCenterId", sb.entity().getZoneId(), SearchCriteria.Op.EQ);
|
sb.and("dataCenterId", sb.entity().getZoneId(), SearchCriteria.Op.EQ);
|
||||||
@ -1931,7 +1931,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
sc.setParameters("type", "%" + type);
|
sc.setParameters("type", "%" + type);
|
||||||
|
|||||||
@ -2338,7 +2338,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||||||
_accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
_accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
|
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("sourceIpAddress", sb.entity().getSourceIpAddressId(), SearchCriteria.Op.EQ);
|
sb.and("sourceIpAddress", sb.entity().getSourceIpAddressId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("networkId", sb.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
sb.and("networkId", sb.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("scheme", sb.entity().getScheme(), SearchCriteria.Op.EQ);
|
sb.and("scheme", sb.entity().getScheme(), SearchCriteria.Op.EQ);
|
||||||
@ -2379,7 +2379,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
|
|||||||
@ -1739,7 +1739,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||||||
final SearchBuilder<HostVO> sb = _hostDao.createSearchBuilder();
|
final SearchBuilder<HostVO> sb = _hostDao.createSearchBuilder();
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("idsNotIn", sb.entity().getId(), SearchCriteria.Op.NOTIN);
|
sb.and("idsNotIn", sb.entity().getId(), SearchCriteria.Op.NOTIN);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("type", sb.entity().getType(), SearchCriteria.Op.LIKE);
|
sb.and("type", sb.entity().getType(), SearchCriteria.Op.LIKE);
|
||||||
sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ);
|
sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ);
|
||||||
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
||||||
@ -1784,7 +1784,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
sc.setParameters("type", "%" + type);
|
sc.setParameters("type", "%" + type);
|
||||||
@ -1831,7 +1831,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||||||
final Filter searchFilter = new Filter(HostPodVO.class, "dataCenterId", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
final Filter searchFilter = new Filter(HostPodVO.class, "dataCenterId", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
final SearchBuilder<HostPodVO> sb = _hostPodDao.createSearchBuilder();
|
final SearchBuilder<HostPodVO> sb = _hostPodDao.createSearchBuilder();
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("allocationState", sb.entity().getAllocationState(), SearchCriteria.Op.EQ);
|
sb.and("allocationState", sb.entity().getAllocationState(), SearchCriteria.Op.EQ);
|
||||||
|
|
||||||
@ -1849,7 +1849,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (podName != null) {
|
if (podName != null) {
|
||||||
sc.setParameters("name", "%" + podName + "%");
|
sc.setParameters("name", podName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zoneId != null) {
|
if (zoneId != null) {
|
||||||
|
|||||||
@ -670,7 +670,7 @@ public class SnapshotManagerImpl extends MutualExclusiveIdsManagerBase implement
|
|||||||
|
|
||||||
sb.and("statusNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ); //exclude those Destroyed snapshot, not showing on UI
|
sb.and("statusNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ); //exclude those Destroyed snapshot, not showing on UI
|
||||||
sb.and("volumeId", sb.entity().getVolumeId(), SearchCriteria.Op.EQ);
|
sb.and("volumeId", sb.entity().getVolumeId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("idIN", sb.entity().getId(), SearchCriteria.Op.IN);
|
sb.and("idIN", sb.entity().getId(), SearchCriteria.Op.IN);
|
||||||
sb.and("snapshotTypeEQ", sb.entity().getSnapshotType(), SearchCriteria.Op.IN);
|
sb.and("snapshotTypeEQ", sb.entity().getSnapshotType(), SearchCriteria.Op.IN);
|
||||||
@ -715,7 +715,7 @@ public class SnapshotManagerImpl extends MutualExclusiveIdsManagerBase implement
|
|||||||
setIdsListToSearchCriteria(sc, ids);
|
setIdsListToSearchCriteria(sc, ids);
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
sc.setParameters("name", "%" + name + "%");
|
sc.setParameters("name", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
|
|||||||
@ -169,12 +169,12 @@ public class ProjectRoleManagerImpl extends ManagerBase implements ProjectRoleSe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ProjectRole> findProjectRoles(Long projectId) {
|
public List<ProjectRole> findProjectRoles(Long projectId, String keyword) {
|
||||||
if (projectId == null || projectId < 1L || projectDao.findById(projectId) == null) {
|
if (projectId == null || projectId < 1L || projectDao.findById(projectId) == null) {
|
||||||
LOGGER.warn("Invalid project ID provided");
|
LOGGER.warn("Invalid project ID provided");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return ListUtils.toListOfInterface(projRoleDao.findAllRoles(projectId));
|
return ListUtils.toListOfInterface(projRoleDao.findAllRoles(projectId, keyword));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user