]> source.dussan.org Git - sonarqube.git/commitdiff
quality models API: add Model.removeCharacteristic(...)
authorsimonbrandhof <simon.brandhof@gmail.com>
Mon, 4 Oct 2010 14:10:40 +0000 (14:10 +0000)
committersimonbrandhof <simon.brandhof@gmail.com>
Mon, 4 Oct 2010 14:10:40 +0000 (14:10 +0000)
sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java
sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java
sonar-plugin-api/src/test/java/org/sonar/api/qualitymodel/ModelTest.java

index c93be01d7fedd804817055ad3372baa6254a4159..fb1bac76cc41d204202e9dece278cf36484a6b7d 100644 (file)
@@ -174,6 +174,11 @@ public final class Characteristic implements Comparable<Characteristic> {
     return this;
   }
 
+  Characteristic removeChild(Characteristic child) {
+    children.remove(child);
+    return this;
+  }
+
   private static void propagateDepth(Characteristic characteristic, int depth) {
     characteristic.setDepth(depth);
     for (Characteristic child : characteristic.getChildren()) {
index 923767f577ed6e5fd5f66330992599f506830fb9..fb5b5ad6b43738250603ec295492f9eb11a17595 100644 (file)
@@ -176,6 +176,14 @@ public final class Model implements Comparable<Model> {
     return null;
   }
 
+  public Model removeCharacteristic(Characteristic characteristic) {
+    characteristic.setEnabled(false);
+    for (Characteristic child : characteristic.getChildren()) {
+      removeCharacteristic(child);
+    }
+    return this;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) {
index 6b6e5cba1a25a2f5876d4f23db127eaa5424a14d..e9fcf8053ec5e2ab4e558b4e2e175ecc0f14d9c1 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.api.qualitymodel;
 import org.junit.Test;
 import org.sonar.api.rules.Rule;
 
+import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertThat;
@@ -60,4 +61,25 @@ public class ModelTest {
     assertThat(model.getCharacteristicByRule(null), nullValue());
     assertThat(model.getCharacteristicByRule(Rule.create("foo", "bar", "Bar")), nullValue());
   }
+
+  @Test
+  public void shouldRemoveCharacteristic() {
+    Model model = Model.create();
+    Characteristic efficiency = model.createCharacteristicByName("Efficiency");
+    Characteristic usability = model.createCharacteristicByName("Usability");
+    assertThat(model.getCharacteristics().size(), is(2));
+
+    model.removeCharacteristic(efficiency);
+    assertThat(model.getCharacteristics().size(), is(1));
+    assertThat(model.getCharacteristicByName("Efficiency"), nullValue());
+    assertThat(model.getCharacteristicByName("Usability"), notNullValue());
+  }
+
+  @Test
+  public void shouldNotFailWhenRemovingUnknownCharacteristic() {
+    Model model = Model.create();
+    Characteristic efficiency = model.createCharacteristicByName("Efficiency");
+    model.removeCharacteristic(Characteristic.createByKey("foo", "Foo"));
+    assertThat(model.getCharacteristics().size(), is(1));
+  }
 }