]> source.dussan.org Git - sonarqube.git/commitdiff
Using key for inheritance of activeRule instead of id
authorStephane Gamard <stephane.gamard@searchbox.com>
Wed, 14 May 2014 13:04:09 +0000 (15:04 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Wed, 14 May 2014 13:24:45 +0000 (15:24 +0200)
sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
sonar-server/src/main/java/org/sonar/server/qualityprofile/persistence/ActiveRuleDao.java
sonar-server/src/main/java/org/sonar/server/rule2/index/RuleNormalizer.java
sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java
sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java

index e494a06ca381ee1c94df45e7b96a98d901cf43ef..ef0c306589cf1e840468f8d844c61de432578525 100644 (file)
@@ -21,19 +21,24 @@ package org.sonar.server.qualityprofile;
 
 import org.sonar.core.qualityprofile.db.ActiveRuleKey;
 
+import javax.annotation.CheckForNull;
 import java.util.Map;
 
 public interface ActiveRule {
 
+  public enum Inheritance {
+    NONE, OVERRIDE, INHERIT
+  }
+
   ActiveRuleKey key();
 
   String severity();
 
-  Boolean override();
-
-  String inherit();
+  Inheritance  inheritance();
 
-  String parent();
+  @CheckForNull
+  ActiveRuleKey parentKey();
 
   Map<String, String> params();
+
 }
index fa8a1fc32b787a0dfd2ff3962ba7371261176ad7..28ddaf44cc818ac6782e22e91884faa3c777bc18 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.server.qualityprofile.index;
 import org.sonar.core.qualityprofile.db.ActiveRuleKey;
 import org.sonar.server.qualityprofile.ActiveRule;
 
+import javax.annotation.CheckForNull;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -40,24 +41,29 @@ public class ActiveRuleDoc implements ActiveRule {
     return this.key;
   }
 
-  @Override
-  public Boolean override() {
-    return (Boolean) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.OVERRIDE.key());
-  }
-
   @Override
   public String severity() {
     return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.SEVERITY.key());
   }
 
   @Override
-  public String inherit() {
-    return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.key());
+  public ActiveRule.Inheritance inheritance() {
+    String inheritance = (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.key());
+    if(inheritance != null && !inheritance.isEmpty()){
+      return Inheritance.valueOf(inheritance);
+    } else {
+      return Inheritance.NONE;
+    }
   }
 
   @Override
-  public String parent() {
-    return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARENT_ID.key());
+  @CheckForNull
+  public ActiveRuleKey parentKey() {
+    String data = (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARENT_KEY.key());
+    if(data != null && !data.isEmpty()){
+      return ActiveRuleKey.parse(data);
+    }
+    return null;
   }
 
   @Override
index cacab3ec7fc96f8c2235f8a1cd6c7687025fbb65..2d864a2398b5a82d5632f549be81772dbeb023f3 100644 (file)
@@ -34,11 +34,11 @@ import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
 public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRuleKey> {
 
   public static enum ActiveRuleField {
-    OVERRIDE("override"),
+    KEY("key"),
     INHERITANCE("inheritance"),
     PROFILE_ID("profile"),
     SEVERITY("severity"),
-    PARENT_ID("parent"),
+    PARENT_KEY("parentKey"),
     PARAMS("params");
 
     private final String key;
@@ -126,14 +126,23 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu
         throw new IllegalStateException("Cannot normalize ActiveRuleDto with null key");
       }
 
+
+
       document.startObject(RuleNormalizer.RuleField.ACTIVE.key());
       document.startObject(key.toString());
-      indexField("_id", rule.getKey(), document);
-      indexField(ActiveRuleField.OVERRIDE.key(), rule.doesOverride(), document);
+      indexField(ActiveRuleField.KEY.key(), rule.getKey(), document);
       indexField(ActiveRuleField.INHERITANCE.key(), rule.getInheritance(), document);
       indexField(ActiveRuleField.PROFILE_ID.key(), rule.getProfileId(), document);
       indexField(ActiveRuleField.SEVERITY.key(), rule.getSeverityString(), document);
-      indexField(ActiveRuleField.PARENT_ID.key(), rule.getParentId(), document);
+
+      //TODO this should be generated by RegisterRule and modified in DTO.
+      if(rule.getParentId() != null){
+        DbSession session = db.openSession(false);
+        ActiveRuleDto dto = this.db.activeRuleDao().getById(rule.getParentId(), session);
+        session.close();
+        indexField(ActiveRuleField.PARENT_KEY.key(), dto.getKey().toString(), document);
+      }
+
 
     /* Done normalizing for Rule */
       document.endObject();
index f29d341c2f452236f1f93aacfdbaf10e05ca9582..449387e73c771c34928ebd2468f490976a7c4b3a 100644 (file)
@@ -64,7 +64,13 @@ public class ActiveRuleDao extends BaseDao<ActiveRuleMapper, ActiveRuleDto, Acti
 
   @Deprecated
   public ActiveRuleDto getById(int activeRuleId, DbSession session) {
-    return mapper(session).selectById(activeRuleId);
+    ActiveRuleDto rule =  mapper(session).selectById(activeRuleId);
+
+    rule.setKey(ActiveRuleKey.of(
+      profileDao.selectById(rule.getProfileId(), session).getKey(),
+      ruleDao.getById(rule.getRulId(), session).getKey()));
+
+    return rule;
   }
 
   @Override
index a2f73746b3ad3bc8bf38afc40c2a2154d2d127d5..8e232e736daa9866f51869bc39fe55da7a2bdb64 100644 (file)
@@ -48,7 +48,8 @@ public class RuleNormalizer extends BaseNormalizer<RuleDto, RuleKey> {
     TEMPLATE("template"),
     UPDATED_AT("updatedAt"),
     PARAMS("params"),
-    ACTIVE("active");
+    ACTIVE("active"),
+    DEBT_FUNCTION("debtRemFunction");
 
     private final String key;
 
@@ -117,6 +118,10 @@ public class RuleNormalizer extends BaseNormalizer<RuleDto, RuleKey> {
       indexField(RuleField.LANGUAGE.key(), rule.getLanguage(), document);
       indexField(RuleField.INTERNAL_KEY.key(), rule.getConfigKey(), document);
       indexField(RuleField.TEMPLATE.key(), rule.getCardinality() == Cardinality.MULTIPLE, document);
+      indexField(RuleField.DEBT_FUNCTION.key(), rule.getDefaultRemediationFunction(),document);
+
+
+
 
       document.array(RuleField.TAGS.key(), rule.getTags().toArray(new String[rule.getTags().size()]));
       document.array(RuleField.SYSTEM_TAGS.key(), rule.getSystemTags().toArray(new String[rule.getSystemTags().size()]));
index adedeeda843f236eb4f670a4b5d7fa58a523e715..4125a220432d08e4474908cd944b569aad66c8aa 100644 (file)
@@ -242,10 +242,9 @@ public class SearchAction implements RequestHandler {
         json
           .beginObject()
           .prop("key",activeRule.key().toString())
-          .prop("inherit", activeRule.inherit())
-          .prop("override", activeRule.override())
+          .prop("inherit", activeRule.inheritance().name())
           .prop("severity", activeRule.severity())
-          .prop("parent", activeRule.parent())
+          .prop("parent", activeRule.parentKey().toString())
           .name("params").beginArray();
         for (Map.Entry<String, String> param : activeRule.params().entrySet()) {
           json.beginObject()
index d1bb3e914baede1f9af8196afa2e7d40a17076ad..fe72e8d11a93183070fd49ed64abf7da9aec28f2 100644 (file)
@@ -33,7 +33,7 @@ public abstract class BaseNormalizer<E extends Dto<K>, K extends Serializable> {
 
   private static final Logger LOG = LoggerFactory.getLogger(BaseNormalizer.class);
 
-  private final DbClient db;
+  protected final DbClient db;
 
   protected BaseNormalizer(DbClient db) {
     this.db = db;