/* * Sonar Drools Plugin * Copyright (C) 2011 Jérémie 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); } }