import com.google.common.collect.Lists;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.batch.SonarIndex;
-import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplication;
import org.sonar.api.design.Dependency;
-import org.sonar.api.measures.*;
+import org.sonar.api.measures.Measure;
+import org.sonar.api.measures.MeasuresFilter;
+import org.sonar.api.measures.MeasuresFilters;
+import org.sonar.api.measures.MeasuresFilters.MetricFilter;
+import org.sonar.api.measures.Metric;
+import org.sonar.api.measures.MetricFinder;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.Resource;
import org.sonar.api.rules.Violation;
import org.sonar.api.utils.SonarException;
import org.sonar.batch.duplication.DuplicationCache;
-import org.sonar.batch.duplication.DuplicationUtils;
import org.sonar.batch.scan.measure.MeasureCache;
import org.sonar.batch.sensor.coverage.CoverageExclusions;
-import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public <M> M getMeasures(MeasuresFilter<M> filter) {
Collection<Measure> unfiltered;
if (filter instanceof MeasuresFilters.MetricFilter) {
- unfiltered = getMeasuresOfASingleMetric(filter);
+ // optimization
+ unfiltered = getMeasuresOfASingleMetric((MetricFilter<M>) filter);
} else {
unfiltered = measuresByMetric.values();
}
return filter.filter(unfiltered);
}
- private <M> Collection<Measure> getMeasuresOfASingleMetric(MeasuresFilter<M> filter) {
- Collection<Measure> unfiltered;
+ private <M> Collection<Measure> getMeasuresOfASingleMetric(MeasuresFilters.MetricFilter<M> filter) {
String metricKey = ((MeasuresFilters.MetricFilter<M>) filter).filterOnMetricKey();
- if (CoreMetrics.DUPLICATIONS_DATA_KEY.equals(metricKey)) {
- // Hack for SONAR-5765
- Iterable<DefaultDuplication> group = duplicationCache.byComponent(resource.getEffectiveKey());
- unfiltered = Arrays.asList(new Measure(CoreMetrics.DUPLICATIONS_DATA, DuplicationUtils.toXml(group)));
- } else {
- // optimization
- unfiltered = measuresByMetric.get(metricKey);
- }
- return unfiltered;
+ return measuresByMetric.get(metricKey);
}
@Override
+++ /dev/null
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.batch.duplication;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.sonar.api.batch.sensor.duplication.Duplication;
-import org.sonar.api.batch.sensor.duplication.internal.DefaultDuplication;
-
-public class DuplicationUtils {
-
- private DuplicationUtils() {
- // Utility class
- }
-
- public static String toXml(Iterable<DefaultDuplication> duplications) {
- StringBuilder xml = new StringBuilder();
- xml.append("<duplications>");
- for (Duplication duplication : duplications) {
- xml.append("<g>");
- toXml(xml, duplication.originBlock());
- for (Duplication.Block part : duplication.duplicates()) {
- toXml(xml, part);
- }
- xml.append("</g>");
- }
- xml.append("</duplications>");
- return xml.toString();
- }
-
- private static void toXml(StringBuilder xml, Duplication.Block part) {
- xml.append("<b s=\"").append(part.startLine())
- .append("\" l=\"").append(part.length())
- .append("\" r=\"").append(StringEscapeUtils.escapeXml(part.resourceKey()))
- .append("\"/>");
- }
-}