]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4560 Only add twoletters long index entries for two letters long resources
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 9 Aug 2013 11:58:26 +0000 (13:58 +0200)
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 9 Aug 2013 11:58:26 +0000 (13:58 +0200)
14 files changed:
sonar-core/src/main/java/org/sonar/core/resource/ResourceIndexerDao.java
sonar-core/src/test/java/org/sonar/core/resource/ResourceIndexerDaoTest.java
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldIndexMultiModulesProject-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldIndexProjects-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldIndexResource-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldIndexTwoLettersLongResource-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldNotReindexUnchangedResource-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldNotReindexUnchangedResource.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource-result.xml [new file with mode: 0644]
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource.xml [new file with mode: 0644]
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource-result.xml [new file with mode: 0644]
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource.xml [new file with mode: 0644]
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReindexProjectAfterRenaming-result.xml
sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReindexResource-result.xml

index d516c1948f8f45c5e93343e0c53a71b8bf640355..0256c625bc006bbbb3e8089e8ab33df45bb83acd 100644 (file)
@@ -29,7 +29,8 @@ import org.sonar.core.persistence.MyBatis;
 
 public class ResourceIndexerDao {
 
-  public static final int MINIMUM_KEY_SIZE = 1;
+  public static final int MINIMUM_KEY_SIZE = 3;
+  public static final int SINGLE_INDEX_SIZE = 2;
 
   // The scopes and qualifiers that are not in the following constants are not indexed at all.
   // Directories and packages are explicitly excluded.
@@ -117,18 +118,8 @@ public class ResourceIndexerDao {
 
   void doIndex(ResourceDto resource, ResourceIndexerMapper mapper) {
     String key = nameToKey(resource.getName());
-    if (key.length() >= MINIMUM_KEY_SIZE) {
-      ResourceIndexDto dto = new ResourceIndexDto()
-          .setResourceId(resource.getId())
-          .setQualifier(resource.getQualifier())
-          .setRootProjectId(resource.getRootId())
-          .setNameSize(resource.getName().length());
-
-      for (int position = 0; position <= key.length() - MINIMUM_KEY_SIZE; position++) {
-        dto.setPosition(position);
-        dto.setKey(StringUtils.substring(key, position));
-        mapper.insert(dto);
-      }
+    if (key.length() >= MINIMUM_KEY_SIZE || key.length() == SINGLE_INDEX_SIZE) {
+      insertIndexEntries(key, resource.getId(), resource.getQualifier(), resource.getRootId(), resource.getName().length(), mapper);
     }
   }
 
@@ -166,27 +157,31 @@ public class ResourceIndexerDao {
   private boolean indexResource(long id, String name, String qualifier, long rootId, SqlSession session, ResourceIndexerMapper mapper) {
     boolean indexed = false;
     String key = nameToKey(name);
-    if (key.length() >= MINIMUM_KEY_SIZE) {
+    if (key.length() >= MINIMUM_KEY_SIZE || key.length() == SINGLE_INDEX_SIZE) {
       indexed = true;
       boolean toBeIndexed = sanitizeIndex(id, key, mapper);
       if (toBeIndexed) {
-        ResourceIndexDto dto = new ResourceIndexDto()
-            .setResourceId(id)
-            .setQualifier(qualifier)
-            .setRootProjectId(rootId)
-            .setNameSize(name.length());
-
-        for (int position = 0; position <= key.length() - MINIMUM_KEY_SIZE; position++) {
-          dto.setPosition(position);
-          dto.setKey(StringUtils.substring(key, position));
-          mapper.insert(dto);
-        }
+        insertIndexEntries(key, id, qualifier, rootId, name.length(), mapper);
         session.commit();
       }
     }
     return indexed;
   }
 
+  private void insertIndexEntries(String key, long resourceId, String qualifier, long rootId, int nameLength, ResourceIndexerMapper mapper) {
+    ResourceIndexDto dto = new ResourceIndexDto()
+      .setResourceId(resourceId)
+      .setQualifier(qualifier)
+      .setRootProjectId(rootId)
+      .setNameSize(nameLength);
+
+    int maxPosition = key.length() == SINGLE_INDEX_SIZE ? 0 : key.length() - MINIMUM_KEY_SIZE;
+    for (int position = 0; position <= maxPosition; position++) {
+      dto.setPosition(position);
+      dto.setKey(StringUtils.substring(key, position));
+      mapper.insert(dto);
+    }
+  }
 
   /**
    * Return true if the resource must be indexed, false if the resource is already indexed.
index 4784e2a26bcc9a2a66d655d5b6988d34e5ceb7e2..e57b1433a48784fb6775d83190aac3a5540f4793 100644 (file)
@@ -112,11 +112,29 @@ public class ResourceIndexerDaoTest extends AbstractDaoTestCase {
   public void shouldIndexTwoLettersLongResources() {
     setupData("shouldIndexTwoLettersLongResource");
 
-    dao.indexResource(10, "AB", Qualifiers.FILE, 3);
+    dao.indexResource(10, "AB", Qualifiers.PROJECT, 3);
 
     checkTables("shouldIndexTwoLettersLongResource", new String[] {"id"}, "resource_index");
   }
 
+  @Test
+  public void shouldReIndexTwoLettersLongResources() {
+    setupData("shouldReIndexTwoLettersLongResource");
+
+    dao.indexResource(1, "AS", Qualifiers.PROJECT, 1);
+
+    checkTables("shouldReIndexTwoLettersLongResource", new String[] {"id"}, "resource_index");
+  }
+
+  @Test
+  public void shouldReIndexNewTwoLettersLongResource() {
+    setupData("shouldReIndexNewTwoLettersLongResource");
+
+    dao.indexResource(1, "AS", Qualifiers.PROJECT, 1);
+
+    checkTables("shouldReIndexNewTwoLettersLongResource", new String[] {"id"}, "resource_index");
+  }
+
   @Test
   public void shouldReindexResource() {
     setupData("shouldReindexResource");
index 657d233a00a3d2b3907042ec359cd85b5e13ff01..7210c845707aacc4df4e5c307989f0cf7e3582d7 100644 (file)
   <resource_index kee="ntext" position="9" name_size="14" resource_id="4" root_project_id="1" qualifier="CLA"/>
   <resource_index kee="text" position="10" name_size="14" resource_id="4" root_project_id="1" qualifier="CLA"/>
   <resource_index kee="ext" position="11" name_size="14" resource_id="4" root_project_id="1" qualifier="CLA"/>
-  <resource_index kee="xt" position="12" name_size="14" resource_id="4" root_project_id="1" qualifier="CLA"/>
-  <resource_index kee="t" position="13" name_size="14" resource_id="4" root_project_id="1" qualifier="CLA"/>
 
   <!-- Struts -->
   <resource_index kee="struts" position="0" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="truts" position="1" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="ruts" position="2" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="uts" position="3" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="ts" position="4" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="s" position="5" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
 
   <!-- Struts Core -->
   <resource_index kee="struts core" position="0" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
@@ -64,8 +60,6 @@
   <resource_index kee=" core" position="6" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
   <resource_index kee="core" position="7" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
   <resource_index kee="ore" position="8" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
-  <resource_index kee="re" position="9" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
-  <resource_index kee="e" position="10" name_size="11" resource_id="2" root_project_id="1" qualifier="BRC"/>
 
 
 </dataset>
index e25372f5746aef93cc5f30b4bfbcb4626fc0e06a..c7484ec4a2a4e5ce714cc9b83278ab5960e9f02a 100644 (file)
   <resource_index kee="ntext" position="9" name_size="14" resource_id="3" root_project_id="1" qualifier="CLA"/>
   <resource_index kee="text" position="10" name_size="14" resource_id="3" root_project_id="1" qualifier="CLA"/>
   <resource_index kee="ext" position="11" name_size="14" resource_id="3" root_project_id="1" qualifier="CLA"/>
-  <resource_index kee="xt" position="12" name_size="14" resource_id="3" root_project_id="1" qualifier="CLA"/>
-  <resource_index kee="t" position="13" name_size="14" resource_id="3" root_project_id="1" qualifier="CLA"/>
 
   <!-- Struts -->
   <resource_index kee="struts" position="0" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="truts" position="1" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="ruts" position="2" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="uts" position="3" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="ts" position="4" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="s" position="5" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
 
 </dataset>
index 22bca4ad0f468a26eee3169020b0c65412e8dbf1..f4cf0805ede43b991b89f0fd7b9a3f3081889aa8 100644 (file)
@@ -5,6 +5,4 @@
   <resource_index kee="utils" position="3" name_size="8" resource_id="10" root_project_id="8" qualifier="FIL"/>
   <resource_index kee="tils" position="4" name_size="8" resource_id="10" root_project_id="8" qualifier="FIL"/>
   <resource_index kee="ils" position="5" name_size="8" resource_id="10" root_project_id="8" qualifier="FIL"/>
-  <resource_index kee="ls" position="6" name_size="8" resource_id="10" root_project_id="8" qualifier="FIL"/>
-  <resource_index kee="s" position="7" name_size="8" resource_id="10" root_project_id="8" qualifier="FIL"/>
 </dataset>
\ No newline at end of file
index 75e71f72ef4f2ec9f93b706188bef934182a0672..c9941e492bdad63e4aa7de1fc497e811b0f140c1 100644 (file)
@@ -1,4 +1,3 @@
 <dataset>
-  <resource_index kee="ab" position="0" name_size="2" resource_id="10" root_project_id="3" qualifier="FIL"/>
-  <resource_index kee="b" position="1" name_size="2" resource_id="10" root_project_id="3" qualifier="FIL"/>
+  <resource_index kee="ab" position="0" name_size="2" resource_id="10" root_project_id="3" qualifier="TRK"/>
 </dataset>
\ No newline at end of file
index 65f006f11aeee6510e2c8db4dbe0820b38f8c657..4292af5708d44c051557cc66374a35db83e96f2d 100644 (file)
@@ -3,6 +3,4 @@
   <resource_index kee="truts" position="1" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="ruts" position="2" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="uts" position="3" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="ts" position="4" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="s" position="5" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
 </dataset>
\ No newline at end of file
index 515ffcc9c08e989a80c2681a59a4c2409cf17cbe..89a3a8c465d60d5bfc2bfbadcb5b8dc0411d2b2d 100644 (file)
@@ -3,6 +3,4 @@
   <resource_index id="2" kee="truts" position="1" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index id="3" kee="ruts" position="2" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index id="4" kee="uts" position="3" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index id="5" kee="ts" position="4" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index id="6" kee="s" position="5" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
 </dataset>
\ No newline at end of file
diff --git a/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource-result.xml b/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource-result.xml
new file mode 100644 (file)
index 0000000..52db35f
--- /dev/null
@@ -0,0 +1,3 @@
+<dataset>
+  <resource_index kee="as" position="0" name_size="2" resource_id="1" root_project_id="1" qualifier="TRK"/>
+</dataset>
\ No newline at end of file
diff --git a/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource.xml b/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexNewTwoLettersLongResource.xml
new file mode 100644 (file)
index 0000000..e89ad40
--- /dev/null
@@ -0,0 +1,16 @@
+<dataset>
+
+  <projects long_name="[null]" id="1" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="AS"
+            root_id="[null]"
+            description="[null]"
+            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"/>
+
+  <snapshots purge_status="[null]" id="1" islast="[true]" root_project_id="1" project_id="1" scope="PRJ" qualifier="TRK"/>
+
+  <!-- the index is on the old name "ST" but not on "AS" -->
+  <resource_index id="1" kee="struts" position="0" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
+  <resource_index id="2" kee="truts" position="1" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
+  <resource_index id="3" kee="ruts" position="2" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
+  <resource_index id="4" kee="uts" position="3" name_size="6" resource_id="1" root_project_id="1" qualifier="TRK"/>
+
+</dataset>
diff --git a/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource-result.xml b/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource-result.xml
new file mode 100644 (file)
index 0000000..52db35f
--- /dev/null
@@ -0,0 +1,3 @@
+<dataset>
+  <resource_index kee="as" position="0" name_size="2" resource_id="1" root_project_id="1" qualifier="TRK"/>
+</dataset>
\ No newline at end of file
diff --git a/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource.xml b/sonar-core/src/test/resources/org/sonar/core/resource/ResourceIndexerDaoTest/shouldReIndexTwoLettersLongResource.xml
new file mode 100644 (file)
index 0000000..7ac2a5e
--- /dev/null
@@ -0,0 +1,13 @@
+<dataset>
+
+  <projects long_name="[null]" id="1" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="AS"
+            root_id="[null]"
+            description="[null]"
+            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]"/>
+
+  <snapshots purge_status="[null]" id="1" islast="[true]" root_project_id="1" project_id="1" scope="PRJ" qualifier="TRK"/>
+
+  <!-- the index is on the old name "ST" but not on "AS" -->
+  <resource_index id="1" kee="st" position="0" name_size="2" resource_id="1" root_project_id="1" qualifier="TRK"/>
+
+</dataset>
index 40b02449634de3068cc671554c5b75910797390f..4909ab381445870ccd5ce3d54955bfcd80242304 100644 (file)
@@ -18,7 +18,5 @@
   <resource_index kee="truts" position="8" name_size="13" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="ruts" position="9" name_size="13" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="uts" position="10" name_size="13" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="ts" position="11" name_size="13" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="s" position="12" name_size="13" resource_id="1" root_project_id="1" qualifier="TRK"/>
 
 </dataset>
index 53b68f1782a8852792063d71fedff228a0c67c64..b9f39157aeacce68765f63e2b06e0721379af146 100644 (file)
@@ -7,6 +7,4 @@
   <resource_index kee="truts" position="5" name_size="10" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="ruts" position="6" name_size="10" resource_id="1" root_project_id="1" qualifier="TRK"/>
   <resource_index kee="uts" position="7" name_size="10" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="ts" position="8" name_size="10" resource_id="1" root_project_id="1" qualifier="TRK"/>
-  <resource_index kee="s" position="9" name_size="10" resource_id="1" root_project_id="1" qualifier="TRK"/>
 </dataset>
\ No newline at end of file