org.sonar.api.batch.MockSensorContext.java Source code

Java tutorial

Introduction

Here is the source code for org.sonar.api.batch.MockSensorContext.java

Source

/*
 * Sonar Drools Plugin
 * Copyright (C) 2011 Jrmie Lagarde
 * dev@sonar.codehaus.org
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.sonar.api.batch;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.sonar.api.measures.Measure;
import org.sonar.api.measures.Metric;
import org.sonar.api.resources.Resource;
import org.sonar.api.rules.Violation;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

public abstract class MockSensorContext implements SensorContext {

    Multimap<Resource, Measure> measures;
    Map<String, String> sources;
    Collection<Violation> violations;

    private Multimap<Resource, Measure> getMeasures() {
        if (measures == null) {
            measures = ArrayListMultimap.create();
        }
        return measures;
    }

    private Collection<Violation> getViolations() {
        if (violations == null) {
            violations = new ArrayList<Violation>();
        }
        return violations;
    }

    private Map<String, String> getSources() {
        if (sources == null) {
            sources = new HashMap<String, String>();
        }
        return sources;
    }

    public Measure saveMeasure(Resource resource, Measure measure) {
        getMeasures().put(resource, measure);
        return measure;
    }

    public Measure saveMeasure(Resource resource, Metric metric, Double value) {
        Measure measure = new Measure(metric, value);
        getMeasures().put(resource, measure);
        return measure;
    }

    public Measure saveMeasure(Measure measure) {
        getMeasures().put(null, measure);
        return measure;
    }

    public Measure saveMeasure(Metric metric, Double value) {
        return saveMeasure(new Measure(metric, value));
    }

    public Measure getMeasure(Resource resource, Metric metric) {
        for (Measure measure : getMeasures().get(resource)) {
            if (measure.getMetric().equals(metric))
                return measure;
        }
        return null;
    }

    public Measure getMeasure(Metric metric) {
        return getMeasure(null, metric);
    }

    public Resource getResource(Resource resource) {
        // TODO check if its a saved resource ...
        return resource;
    }

    public void saveViolations(Collection<Violation> violations) {
        getViolations().addAll(violations);
    }

    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append(MockSensorContext.class.getCanonicalName()).append("\n");
        if (measures != null) {
            builder.append("  Measures ").append("\n");
            if ((measures.get(null) != null) && (measures.get(null).size() != 0)) {
                builder.append("    project : ");
                for (Measure measure : measures.get(null)) {
                    builder.append(measure.toString()).append(" ");
                }
                builder.append("\n");
            }
            for (Resource resource : measures.keySet()) {
                if (resource != null) {
                    builder.append("    ").append(resource.getName()).append(" ");
                    for (Measure measure : measures.get(resource)) {
                        builder.append("\"").append(measure.getMetric().getName()).append("\"=")
                                .append(measure.getValue()).append(" ");
                    }
                    builder.append("\n");
                }
            }
        }
        if (violations != null) {
            builder.append("  Violations ").append("\n");
            for (Violation violation : getViolations()) {
                builder.append("    ").append(violation.getResource().getName()).append(" : ")
                        .append(violation.getRule().getKey()).append(" ").append(violation.getMessage())
                        .append("\n");
            }
        }
        return builder.toString();
    }

    public void saveSource(Resource resource, String source) {
        getSources().put(resource.getKey(), source);
    }
}