]> source.dussan.org Git - sonarqube.git/commitdiff
DAOv2 - Added upsert generation method
authorStephane Gamard <stephane.gamard@searchbox.com>
Wed, 16 Jul 2014 08:26:29 +0000 (10:26 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Wed, 16 Jul 2014 08:26:39 +0000 (10:26 +0200)
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java
server/sonar-server/src/main/java/org/sonar/server/rule/index/RuleNormalizer.java
server/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java

index e3fa5b12271683c73b15013b9447f4a4a9f9bad0..a8be590c1dcb9fc06a5e999db0ca3f82cf40ad46 100644 (file)
@@ -159,8 +159,7 @@ public class ActiveRuleNormalizer extends BaseNormalizer<ActiveRuleDto, ActiveRu
       session.close();
     }
 
-    Map<String, Object> upsert = new HashMap<String, Object>(newRule);
-    upsert.put(ActiveRuleField.PARAMS.field(), new ArrayList());
+    Map<String, Object> upsert = getUpsertFor(ActiveRuleField.ALL_FIELDS, newRule);
 
     /* Creating updateRequest */
     return ImmutableList.of(new UpdateRequest()
index 1c2c91db539d10d47e478b764b652480a7141e75..e31c4c85b0b1e1e2404bb847db045c76a5b7e18c 100644 (file)
@@ -280,9 +280,8 @@ public class RuleNormalizer extends BaseNormalizer<RuleDto, RuleKey> {
       update.put(RuleField._TAGS.field(), Sets.union(rule.getSystemTags(), rule.getTags()));
 
       /** Upsert elements */
-      Map<String, Object> upsert = new HashMap<String, Object>(update);
+      Map<String, Object> upsert = getUpsertFor(RuleField.ALL_FIELDS, update);
       upsert.put(RuleField.KEY.field(), rule.getKey().toString());
-      upsert.put(RuleField.PARAMS.field(), new ArrayList<String>());
 
       /** Creating updateRequest */
       return ImmutableList.of(new UpdateRequest()
index 9532e464b003c896c48968a01e4422f651487830..5218a9000ad6e881d511887e2cf950ae3a7562fc 100644 (file)
@@ -24,7 +24,11 @@ import org.sonar.core.persistence.Dto;
 import org.sonar.server.db.DbClient;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public abstract class BaseNormalizer<DTO extends Dto<KEY>, KEY extends Serializable> {
 
@@ -38,6 +42,20 @@ public abstract class BaseNormalizer<DTO extends Dto<KEY>, KEY extends Serializa
     this.definition = definition;
   }
 
+  protected Map<String, Object> getUpsertFor(Set<IndexField> fields, Map<String, Object> update) {
+    Map<String, Object> upsert = new HashMap<String, Object>(update);
+    for (IndexField field : fields) {
+      if (!upsert.containsKey(field.field())) {
+        if (field.type().equals(IndexField.Type.OBJECT)) {
+          upsert.put(field.field(), new ArrayList<String>());
+        } else {
+          upsert.put(field.field(), null);
+        }
+      }
+    }
+    return upsert;
+  }
+
   public List<UpdateRequest> deleteNested(Object object, KEY key) {
     throw new IllegalStateException("Nested Delete not implemented in current normalizer!");
   }