From: David Gageot Date: Wed, 18 Jul 2012 06:53:57 +0000 (+0200) Subject: Simplify code X-Git-Tag: 3.2~25 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fdc4b664a5d841ec80e15c0867d697dc02f2f4cb;p=sonarqube.git Simplify code --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java index 6d68a0b6478..ec036f13da4 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java +++ b/sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java @@ -23,14 +23,12 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.SetMultimap; -import org.apache.commons.lang.math.NumberUtils; import org.apache.ibatis.session.SqlSession; import org.slf4j.LoggerFactory; import org.sonar.api.database.model.MeasureMapper; import org.sonar.api.database.model.MeasureModel; import org.sonar.api.database.model.Snapshot; import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; import org.sonar.api.measures.RuleMeasure; import org.sonar.api.resources.Resource; import org.sonar.api.resources.ResourceUtils; @@ -104,34 +102,7 @@ public final class MeasurePersister { @VisibleForTesting static boolean shouldPersistMeasure(Resource resource, Measure measure) { return measure.getPersistenceMode().useDatabase() && - !(ResourceUtils.isEntity(resource) && isBestValueMeasure(measure, measure.getMetric())); - } - - @VisibleForTesting - static boolean isBestValueMeasure(Measure measure, Metric metric) { - return metric.isOptimizedBestValue() == Boolean.TRUE - && metric.getBestValue() != null - && (measure.getValue() == null || NumberUtils.compare(metric.getBestValue(), measure.getValue()) == 0) - && allNull(measure.getId(), measure.getAlertStatus(), measure.getDescription(), measure.getTendency(), measure.getUrl()) - && !measure.hasData() - && isZeroVariation(measure.getVariation1()) - && isZeroVariation(measure.getVariation2()) - && isZeroVariation(measure.getVariation3()) - && isZeroVariation(measure.getVariation4()) - && isZeroVariation(measure.getVariation5()); - } - - private static boolean isZeroVariation(Double variation) { - return (variation == null) || NumberUtils.compare(variation.doubleValue(), 0.0) == 0; - } - - private static boolean allNull(Object... values) { - for (Object value : values) { - if (null != value) { - return false; - } - } - return true; + !(ResourceUtils.isEntity(resource) && measure.isBestValue()); } private List getMeasuresToSave() { diff --git a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java index 240248427a2..9aa404b3569 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java @@ -232,16 +232,6 @@ public class MeasurePersisterTest extends AbstractDaoTestCase { assertThat(MeasurePersister.shouldPersistMeasure(aFile, duplicatedLines)).isTrue(); } - @Test - public void null_value_and_null_variations_should_be_considered_as_best_value() { - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation1(0.0), CoreMetrics.NEW_VIOLATIONS)).isTrue(); - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation1(1.0), CoreMetrics.NEW_VIOLATIONS)).isFalse(); - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation2(1.0), CoreMetrics.NEW_VIOLATIONS)).isFalse(); - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation3(1.0), CoreMetrics.NEW_VIOLATIONS)).isFalse(); - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation4(1.0), CoreMetrics.NEW_VIOLATIONS)).isFalse(); - assertThat(MeasurePersister.isBestValueMeasure(new Measure(CoreMetrics.NEW_VIOLATIONS_KEY).setVariation5(1.0), CoreMetrics.NEW_VIOLATIONS)).isFalse(); - } - private static Snapshot snapshot(int id) { Snapshot snapshot = mock(Snapshot.class); when(snapshot.getId()).thenReturn(id); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java b/sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java index 44008b1b2be..554b9d5ea9b 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java @@ -21,6 +21,7 @@ package org.sonar.api.measures; import com.google.common.annotations.Beta; import org.apache.commons.lang.builder.ReflectionToStringBuilder; +import org.apache.commons.lang.math.NumberUtils; import org.sonar.api.qualitymodel.Characteristic; import java.math.BigDecimal; @@ -609,6 +610,35 @@ public class Measure { return this; } + /** + * @since 3.2 + */ + public boolean isBestValue() { + return metric.isOptimizedBestValue() == Boolean.TRUE + && metric.getBestValue() != null + && (value == null || NumberUtils.compare(metric.getBestValue(), value) == 0) + && allNull(id, alertStatus, description, tendency, url, data) + && isZeroVariation(variation1, variation2, variation3, variation4, variation5); + } + + private static boolean isZeroVariation(Double... variations) { + for (Double variation : variations) { + if (!((variation == null) || NumberUtils.compare(variation.doubleValue(), 0.0) == 0)) { + return false; + } + } + return true; + } + + private static boolean allNull(Object... values) { + for (Object value : values) { + if (null != value) { + return false; + } + } + return true; + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/measures/MeasureTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/measures/MeasureTest.java index d14685681ba..1bb8ba4fd6e 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/measures/MeasureTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/measures/MeasureTest.java @@ -58,7 +58,7 @@ public class MeasureTest { @Test public void persistenceModeIsDatabaseForBigDataMeasures() { Measure bigDataMeasure = new Measure(CoreMetrics.COVERAGE_LINE_HITS_DATA, "long data") - .setPersistenceMode(PersistenceMode.DATABASE); + .setPersistenceMode(PersistenceMode.DATABASE); assertThat(bigDataMeasure.getPersistenceMode()).isEqualTo(PersistenceMode.DATABASE); } @@ -194,4 +194,15 @@ public class MeasureTest { assertThat(measure.hasData()).isFalse(); assertThat(measure.getData()).isNull(); } + + @Test + public void null_value_and_null_variations_should_be_considered_as_best_value() { + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation1(0.0).isBestValue()).isTrue(); + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation1(1.0).isBestValue()).isFalse(); + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation2(1.0).isBestValue()).isFalse(); + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation3(1.0).isBestValue()).isFalse(); + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation4(1.0).isBestValue()).isFalse(); + assertThat(new Measure(CoreMetrics.NEW_VIOLATIONS).setVariation5(1.0).isBestValue()).isFalse(); + } + }