]> source.dussan.org Git - sonarqube.git/commitdiff
Simplify code
authorDavid Gageot <david@gageot.net>
Wed, 18 Jul 2012 06:53:57 +0000 (08:53 +0200)
committerDavid Gageot <david@gageot.net>
Wed, 18 Jul 2012 06:54:35 +0000 (08:54 +0200)
sonar-batch/src/main/java/org/sonar/batch/index/MeasurePersister.java
sonar-batch/src/test/java/org/sonar/batch/index/MeasurePersisterTest.java
sonar-plugin-api/src/main/java/org/sonar/api/measures/Measure.java
sonar-plugin-api/src/test/java/org/sonar/api/measures/MeasureTest.java

index 6d68a0b647868b02556ec5f73b4fe78f15459083..ec036f13da4d9c74531a043abe44fdb751d1affa 100644 (file)
@@ -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<MeasureModel> getMeasuresToSave() {
index 240248427a2ac56220ead1559a69c9ef76965c99..9aa404b35693c9ac524ebb10f706ecd77489ef4c 100644 (file)
@@ -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);
index 44008b1b2be11c4ce18b979186b5b2f3d0c94818..554b9d5ea9b79cfcb6be6398967e352518fd2a33 100644 (file)
@@ -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) {
index d14685681ba979e56bceadeef10e05057843514c..1bb8ba4fd6e7844b028918fb230e02e7643d16ef 100644 (file)
@@ -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();
+  }
+
 }