From: simonbrandhof Date: Mon, 4 Oct 2010 14:10:40 +0000 (+0000) Subject: quality models API: add Model.removeCharacteristic(...) X-Git-Tag: 2.6~889 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fff7e6b8f66198eee455a89323c84f40dd6f2802;p=sonarqube.git quality models API: add Model.removeCharacteristic(...) --- diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java b/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java index c93be01d7fe..fb1bac76cc4 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Characteristic.java @@ -174,6 +174,11 @@ public final class Characteristic implements Comparable { 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()) { diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java b/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java index 923767f577e..fb5b5ad6b43 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/qualitymodel/Model.java @@ -176,6 +176,14 @@ public final class Model implements Comparable { 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) { diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/qualitymodel/ModelTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/qualitymodel/ModelTest.java index 6b6e5cba1a2..e9fcf8053ec 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/qualitymodel/ModelTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/qualitymodel/ModelTest.java @@ -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)); + } }