aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-26 10:40:08 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-09-26 11:02:37 +0200
commite38085cd200784a4ce3898a39c2f085773d9c516 (patch)
treec9f1a946cb520cd4bb8497ad956fd76713f5d856 /sonar-core
parent0c86e50379487869b62bc070f21a69d905731b36 (diff)
downloadsonarqube-e38085cd200784a4ce3898a39c2f085773d9c516.tar.gz
sonarqube-e38085cd200784a4ce3898a39c2f085773d9c516.zip
SONAR-5531 Return sub projects in components list of issues search ws
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/component/ComponentDto.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java10
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/db/IssueMapper.java2
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml41
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/issue/db/IssueMapper.xml13
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"/>