]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5174 Rules search by characteristic or sub characteristic
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 27 Mar 2014 18:11:53 +0000 (19:11 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 27 Mar 2014 18:11:53 +0000 (19:11 +0100)
sonar-server/src/main/java/org/sonar/server/rule/RuleQuery.java
sonar-server/src/main/java/org/sonar/server/rule/RuleRegistry.java
sonar-server/src/test/java/org/sonar/server/rule/RuleRegistryTest.java

index 1f11bfc92fc52f89c862ba65a515b826aee08507..5448f4f136478eb82a8ce058c449a57efc6547d9 100644 (file)
@@ -35,7 +35,6 @@ public class RuleQuery {
   private String key;
   private String query;
   private String characteristicKey;
-  private String subCharacteristicKey;
 
   private int pageSize;
   private int pageIndex;
@@ -43,7 +42,6 @@ public class RuleQuery {
   private RuleQuery(Builder builder) {
     this.key = builder.key;
     this.query = builder.query;
-    this.subCharacteristicKey = builder.subCharacteristicKey;
     this.characteristicKey = builder.characteristicKey;
     this.pageSize = builder.pageSize;
     this.pageIndex = builder.pageIndex;
@@ -64,11 +62,6 @@ public class RuleQuery {
     return characteristicKey;
   }
 
-  @CheckForNull
-  public String subCharacteristicKey() {
-    return subCharacteristicKey;
-  }
-
   public int pageSize() {
     return pageSize;
   }
@@ -86,7 +79,6 @@ public class RuleQuery {
     private String key;
     private String query;
     private String characteristicKey;
-    private String subCharacteristicKey;
 
     private Integer pageSize;
     private Integer pageIndex;
@@ -106,11 +98,6 @@ public class RuleQuery {
       return this;
     }
 
-    public Builder subCharacteristicKey(@Nullable String subCharacteristicKey) {
-      this.subCharacteristicKey = subCharacteristicKey;
-      return this;
-    }
-
     public Builder pageSize(@Nullable Integer pageSize) {
       this.pageSize = pageSize;
       return this;
index d0dfe152eedfcb97d9a835f1c397ecdf226d7e8c..eb422f5de3394ebd0a8a8fd96ce3c6f58238b9db 100644 (file)
@@ -139,10 +139,9 @@ public class RuleRegistry {
         QueryBuilders.multiMatchQuery(query.query(), RuleDocument.FIELD_NAME + ".search", RuleDocument.FIELD_KEY).operator(Operator.AND)));
     }
     if (query.characteristicKey() != null) {
-      mainFilter.must(termFilter(RuleDocument.FIELD_CHARACTERISTIC_KEY, query.characteristicKey()));
-    }
-    if (query.subCharacteristicKey() != null) {
-      mainFilter.must(termFilter(RuleDocument.FIELD_SUB_CHARACTERISTIC_KEY, query.subCharacteristicKey()));
+      mainFilter.must(FilterBuilders.queryFilter(
+          QueryBuilders.multiMatchQuery(query.characteristicKey(), RuleDocument.FIELD_CHARACTERISTIC_KEY, RuleDocument.FIELD_SUB_CHARACTERISTIC_KEY).operator(Operator.OR))
+      );
     }
     Paging paging = Paging.create(query.pageSize(), query.pageIndex());
     SearchHits hits = searchIndex.executeRequest(
index ed21787d8cb26b96b5972dcd557c8eff1ddf0910..123cf8357de272ddd7aab1400549ac33e12ab828 100644 (file)
@@ -342,7 +342,7 @@ public class RuleRegistryTest {
   }
 
   @Test
-  public void find_rules_by_characteristic_and_sub_characteristic() {
+  public void find_rules_by_characteristic_or_sub_characteristic() {
     Map<Integer, CharacteristicDto> characteristics = newHashMap();
     characteristics.put(10, new CharacteristicDto().setId(10).setKey("REUSABILITY").setName("Reusability"));
     characteristics.put(11, new CharacteristicDto().setId(11).setKey("MODULARITY").setName("Modularity").setParentId(10));
@@ -353,12 +353,8 @@ public class RuleRegistryTest {
     registry.bulkRegisterRules(rules, characteristics, ArrayListMultimap.<Integer, RuleParamDto>create(),
       ArrayListMultimap.<Integer, RuleRuleTagDto>create());
 
-    assertThat(registry.find(RuleQuery.builder().subCharacteristicKey("MODULARITY").build()).results()).hasSize(1);
-    assertThat(registry.find(RuleQuery.builder().subCharacteristicKey("REUSABILITY").build()).results()).isEmpty();
-    assertThat(registry.find(RuleQuery.builder().subCharacteristicKey("Unknown").build()).results()).isEmpty();
-
+    assertThat(registry.find(RuleQuery.builder().characteristicKey("MODULARITY").build()).results()).hasSize(1);
     assertThat(registry.find(RuleQuery.builder().characteristicKey("REUSABILITY").build()).results()).hasSize(1);
-    assertThat(registry.find(RuleQuery.builder().characteristicKey("MODULARITY").build()).results()).isEmpty();
     assertThat(registry.find(RuleQuery.builder().characteristicKey("Unknown").build()).results()).isEmpty();
   }