]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6085 Index "real" projects in Views index
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 27 Jan 2015 12:42:55 +0000 (13:42 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 27 Jan 2015 12:55:36 +0000 (13:55 +0100)
server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java
server/sonar-server/src/main/java/org/sonar/server/view/index/ViewIndexer.java
server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java
server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared_views.xml
server/sonar-server/src/test/resources/org/sonar/server/view/index/ViewIndexerTest/index.xml
sonar-core/src/main/java/org/sonar/core/component/db/ComponentMapper.java
sonar-core/src/main/resources/org/sonar/core/component/db/ComponentMapper.xml

index 39b5688a0a3c1b5b57dd42d1bed7e704052199b3..84091b1343e7fd5d46648fa36d3b4514b1fbe560 100644 (file)
@@ -147,7 +147,7 @@ public class ComponentDao extends BaseDao<ComponentMapper, ComponentDto, String>
     return mapper(session).selectAllViewsAndSubViews(Qualifiers.VIEW, Qualifiers.SUBVIEW);
   }
 
-  public List<String> selectProjectsFromView(DbSession session, String projectViewUuid, String viewUuid) {
-    return mapper(session).selectProjectsFromView(projectViewUuid, "%." + viewUuid + ".%", Qualifiers.SUBVIEW);
+  public List<String> selectProjectsFromView(DbSession session, String viewUuid, String projectViewUuid) {
+    return mapper(session).selectProjectsFromView("%." + viewUuid + ".%", projectViewUuid, Qualifiers.SUBVIEW);
   }
 }
index c8844d122a7b23a790404ad4f1f8819abf68ada6..78bc4f7d2c60e3562232cd07f2ab8f47a3e5c33b 100644 (file)
@@ -87,7 +87,7 @@ public class ViewIndexer extends BaseIndexer {
   }
 
   private void doIndex(DbSession dbSession, BulkIndexer bulk, String uuid, String projectUuid) {
-    List<String> projects = dbClient.componentDao().selectProjectsFromView(dbSession, projectUuid, uuid);
+    List<String> projects = dbClient.componentDao().selectProjectsFromView(dbSession, uuid, projectUuid);
     bulk.add(newUpsertRequest(new ViewDoc(Maps.<String, Object>newHashMap())
       .setUuid(uuid)
       .setProjects(projects)));
index 248da521479e0afa2f59930ee792d789dd020496..daf012ab2a049981b78de6501a3aea56d0b8d8ed 100644 (file)
@@ -452,9 +452,9 @@ public class ComponentDaoTest extends AbstractDaoTestCase {
   public void select_projects_from_view() {
     setupData("shared_views");
 
-    assertThat(dao.selectProjectsFromView(session, "ABCD", "ABCD")).containsExactly("BCDE");
-    assertThat(dao.selectProjectsFromView(session, "EFGH", "EFGH")).containsExactly("GHIJ", "HIJK");
-    assertThat(dao.selectProjectsFromView(session, "EFGH", "FGHI")).containsExactly("HIJK");
+    assertThat(dao.selectProjectsFromView(session, "ABCD", "ABCD")).containsExactly("JKLM");
+    assertThat(dao.selectProjectsFromView(session, "EFGH", "EFGH")).containsExactly("KLMN", "JKLM");
+    assertThat(dao.selectProjectsFromView(session, "FGHI", "EFGH")).containsExactly("JKLM");
     assertThat(dao.selectProjectsFromView(session, "IJKL", "IJKL")).isEmpty();
     assertThat(dao.selectProjectsFromView(session, "Unknown", "Unknown")).isEmpty();
   }
index cac123fea8e495844d86881b76dc3f1d33dea539..966b66d940198372d748fcf464fe63410301c1db 100644 (file)
@@ -78,9 +78,9 @@ public class ViewIndexerTest {
       }
     });
 
-    assertThat(viewsByUuid.get("ABCD").projects()).containsOnly("BCDE");
-    assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("GHIJ", "HIJK");
-    assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("HIJK");
+    assertThat(viewsByUuid.get("ABCD").projects()).containsOnly("JKLM");
+    assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("KLMN", "JKLM");
+    assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("JKLM");
     assertThat(viewsByUuid.get("IJKL").projects()).isEmpty();
   }
 
@@ -116,8 +116,8 @@ public class ViewIndexerTest {
       }
     });
 
-    assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("GHIJ", "HIJK");
-    assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("HIJK");
+    assertThat(viewsByUuid.get("EFGH").projects()).containsOnly("KLMN", "JKLM");
+    assertThat(viewsByUuid.get("FGHI").projects()).containsOnly("JKLM");
   }
 
 }
index 03f24d4fb95cfa9b2f8d331ed667592fbf461317..b9164edb7784214fd25d347d8e2eb26ed3d0d8a9 100644 (file)
@@ -5,22 +5,34 @@
             kee="MASTER_PROJECT" scope="PRJ" qualifier="VW" name="All projects" path="[null]"/>
 
   <projects id="110" uuid="BCDE" project_uuid="ABCD" module_uuid="ABCD" module_uuid_path=".ABCD." copy_resource_id="100"
-            kee="MASTER_PROJECTstruts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
+            kee="MASTER_PROJECTorg.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
 
   <!-- View with sub view -->
   <projects id="11" uuid="EFGH" project_uuid="EFGH" module_uuid="[null]" module_uuid_path="." copy_resource_id="[null]"
             kee="LANGUAGE_VIEW" scope="PRJ" qualifier="VW" name="By Language" path="[null]"/>
   <projects id="112" uuid="GHIJ" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_resource_id="101"
-            kee="VIEW2sslr" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/>
+            kee="VIEW2org.elasticsearch:elasticsearch" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/>
 
   <!-- Sub view -->
   <projects id="13" uuid="FGHI" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_resource_id="[null]"
             kee="JAVA_PROJECTS" scope="PRJ" qualifier="SVW" name="Java projects" path="[null]"/>
   <projects id="113" uuid="HIJK" project_uuid="EFGH" module_uuid="FGHI" module_uuid_path=".EFGH.FGHI." copy_resource_id="100"
-            kee="VIEW2struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
+            kee="VIEW2org.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
 
   <!-- View without project -->
   <projects id="14" uuid="IJKL" project_uuid="IJKL" module_uuid="[null]" module_uuid_path="." copy_resource_id="[null]"
             kee="OTHER" scope="PRJ" qualifier="VW" name="Other projects" path="[null]"/>
 
+  <!-- Real projects -->
+
+  <projects id="100" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" deprecated_kee="org.struts:struts" name="Struts"
+            uuid="JKLM" project_uuid="JKLM" module_uuid="[null]" module_uuid_path="."
+            description="the description" long_name="Apache Struts"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="123456789"/>
+
+  <projects id="101" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.elasticsearch:elasticsearch" deprecated_kee="org.elasticsearch:elasticsearch" name="Elasticsearch"
+            uuid="KLMN" project_uuid="KLMN" module_uuid="[null]" module_uuid_path="."
+            description="the description" long_name="Elasticsearch"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="123456789"/>
+
 </dataset>
index 03f24d4fb95cfa9b2f8d331ed667592fbf461317..b9164edb7784214fd25d347d8e2eb26ed3d0d8a9 100644 (file)
@@ -5,22 +5,34 @@
             kee="MASTER_PROJECT" scope="PRJ" qualifier="VW" name="All projects" path="[null]"/>
 
   <projects id="110" uuid="BCDE" project_uuid="ABCD" module_uuid="ABCD" module_uuid_path=".ABCD." copy_resource_id="100"
-            kee="MASTER_PROJECTstruts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
+            kee="MASTER_PROJECTorg.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
 
   <!-- View with sub view -->
   <projects id="11" uuid="EFGH" project_uuid="EFGH" module_uuid="[null]" module_uuid_path="." copy_resource_id="[null]"
             kee="LANGUAGE_VIEW" scope="PRJ" qualifier="VW" name="By Language" path="[null]"/>
   <projects id="112" uuid="GHIJ" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_resource_id="101"
-            kee="VIEW2sslr" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/>
+            kee="VIEW2org.elasticsearch:elasticsearch" scope="FIL" qualifier="TRK" name="SSLR" path="[null]"/>
 
   <!-- Sub view -->
   <projects id="13" uuid="FGHI" project_uuid="EFGH" module_uuid="EFGH" module_uuid_path=".EFGH." copy_resource_id="[null]"
             kee="JAVA_PROJECTS" scope="PRJ" qualifier="SVW" name="Java projects" path="[null]"/>
   <projects id="113" uuid="HIJK" project_uuid="EFGH" module_uuid="FGHI" module_uuid_path=".EFGH.FGHI." copy_resource_id="100"
-            kee="VIEW2struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
+            kee="VIEW2org.struts:struts" scope="FIL" qualifier="TRK" name="Struts" path="[null]"/>
 
   <!-- View without project -->
   <projects id="14" uuid="IJKL" project_uuid="IJKL" module_uuid="[null]" module_uuid_path="." copy_resource_id="[null]"
             kee="OTHER" scope="PRJ" qualifier="VW" name="Other projects" path="[null]"/>
 
+  <!-- Real projects -->
+
+  <projects id="100" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" deprecated_kee="org.struts:struts" name="Struts"
+            uuid="JKLM" project_uuid="JKLM" module_uuid="[null]" module_uuid_path="."
+            description="the description" long_name="Apache Struts"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="123456789"/>
+
+  <projects id="101" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.elasticsearch:elasticsearch" deprecated_kee="org.elasticsearch:elasticsearch" name="Elasticsearch"
+            uuid="KLMN" project_uuid="KLMN" module_uuid="[null]" module_uuid_path="."
+            description="the description" long_name="Elasticsearch"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="123456789"/>
+
 </dataset>
index 250b43df51805ba12a0ed4298312d7dd21199774..81215f8d55772d322ae8faeb101b16dabf6d6fe9 100644 (file)
@@ -93,7 +93,7 @@ public interface ComponentMapper {
   /**
    * Return technical projects from a view or a sub-view
    */
-  List<String> selectProjectsFromView(@Param("projectViewUuid") String projectViewUuid, @Param("viewUuidLikeQuery") String viewUuidLikeQuery,
+  List<String> selectProjectsFromView(@Param("viewUuidLikeQuery") String viewUuidLikeQuery, @Param("projectViewUuid") String projectViewUuid,
     @Param("subViewQualifier") String subViewQualifier);
 
   long countById(long id);
index 9edb28eff5cdbba2e9980b52b5c4d8361ea80cca..c9a2d7ca514b31ea7ca14d9fb1a150977ddcf8d2 100644 (file)
   </select>
 
   <select id="selectProjectsFromView" resultType="String">
-    SELECT p.uuid FROM projects p
+    SELECT p.uuid FROM projects technical_projects
+    INNER JOIN projects p on p.id=technical_projects.copy_resource_id AND p.enabled=${_true}
     <where>
-      p.enabled=${_true} AND p.project_uuid=#{projectViewUuid} AND p.qualifier&lt;&gt;#{subViewQualifier}
-      AND p.module_uuid_path LIKE #{viewUuidLikeQuery}
+      technical_projects.enabled=${_true} AND technical_projects.project_uuid=#{projectViewUuid}
+      AND technical_projects.module_uuid_path LIKE #{viewUuidLikeQuery}
     </where>
   </select>