diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-26 10:40:08 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-09-26 11:02:37 +0200 |
commit | e38085cd200784a4ce3898a39c2f085773d9c516 (patch) | |
tree | c9f1a946cb520cd4bb8497ad956fd76713f5d856 /sonar-core | |
parent | 0c86e50379487869b62bc070f21a69d905731b36 (diff) | |
download | sonarqube-e38085cd200784a4ce3898a39c2f085773d9c516.tar.gz sonarqube-e38085cd200784a4ce3898a39c2f085773d9c516.zip |
SONAR-5531 Return sub projects in components list of issues search ws
Diffstat (limited to 'sonar-core')
5 files changed, 69 insertions, 1 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java b/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java index c64127cc8ba..fb22bf18d91 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java +++ b/sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java @@ -32,11 +32,13 @@ public class ComponentDto extends AuthorizedComponentDto implements Component { private String name; private String longName; private String language; - private Long projectId; private Long subProjectId; private boolean enabled = true; private Date authorizationUpdatedAt; + // Return by join for the moment + private Long projectId; + public ComponentDto setId(Long id) { super.setId(id); return this; diff --git a/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java b/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java index 58cfdba2b5d..9102b8601d5 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java @@ -25,6 +25,7 @@ import org.sonar.core.component.ComponentDto; import javax.annotation.CheckForNull; +import java.util.Collection; import java.util.List; /** @@ -49,6 +50,15 @@ public interface ComponentMapper { */ List<ComponentDto> findModulesByProject(@Param("projectKey") String projectKey); + /** + * Return sub project of component keys + */ + List<ComponentDto> findSubProjectsByComponentKeys(@Param("keys") Collection<String> keys); + + List<ComponentDto> findByIds(@Param("ids") Collection<Long> ids); + + List<ComponentDto> findByKeys(@Param("keys") Collection<String> keys); + long countById(long id); @CheckForNull diff --git a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java index e09a68c1669..578df00d41d 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java @@ -34,6 +34,8 @@ public interface IssueMapper { IssueDto selectByKey(String key); + List<IssueDto> selectByKeys(Collection<String> keys); + /** * Return a paginated list of authorized issue ids for a user. * If the role is null, then the authorisation check is disabled. diff --git a/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml b/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml index c910c80e875..a2b4e19ae77 100644 --- a/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml @@ -86,6 +86,47 @@ </where> </select> + <select id="findByIds" parameterType="long" resultType="Component"> + select <include refid="componentColumns"/> + from projects p + inner join snapshots s on s.project_id=p.id and s.islast=${_true} + <where> + p.enabled=${_true} + and p.id in + <foreach collection="ids" open="(" close=")" item="id" separator=","> + #{id} + </foreach> + </where> + </select> + + <select id="findByKeys" parameterType="String" resultType="Component"> + select <include refid="componentColumns"/> + from projects p + inner join snapshots s on s.project_id=p.id and s.islast=${_true} + <where> + p.enabled=${_true} + and p.kee in + <foreach collection="keys" open="(" close=")" item="key" separator=","> + #{key} + </foreach> + </where> + </select> + + <select id="findSubProjectsByComponentKeys" parameterType="String" resultType="Component"> + SELECT <include refid="componentColumns"/> + FROM projects p + INNER JOIN snapshots s ON s.project_id=p.id AND s.islast=${_true} + INNER JOIN projects child ON child.root_id=p.id AND child.enabled=${_true} + <where> + AND p.enabled=${_true} + AND p.scope='PRJ' + AND child.kee in + <foreach collection="keys" open="(" close=")" item="key" separator=","> + #{key} + </foreach> + </where> + </select> + <select id="selectAuthorizedComponentById" parameterType="long" resultType="AuthorizedComponent"> SELECT <include refid="authorizedComponentColumns"/> FROM projects p diff --git a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml index cd9e5cfa79d..ff7b9069678 100644 --- a/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml @@ -204,6 +204,19 @@ </foreach> </select> + <select id="selectByKeys" parameterType="map" resultType="Issue"> + select + <include refid="issueColumns"/> + from issues i + inner join rules r on r.id=i.rule_id + inner join projects p on p.id=i.component_id + inner join projects root on root.id=i.root_component_id + where i.kee in + <foreach collection="list" open="(" close=")" item="key" separator=","> + #{key} + </foreach> + </select> + <select id="selectIssues" parameterType="map" resultType="Issue"> select <include refid="issueColumns"/> |