001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2009 SonarSource SA 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.batch; 021 022 import org.sonar.api.batch.Event; 023 import org.sonar.api.batch.SensorContext; 024 import org.sonar.api.design.Dependency; 025 import org.sonar.api.measures.Measure; 026 import org.sonar.api.measures.MeasuresFilter; 027 import org.sonar.api.measures.Metric; 028 import org.sonar.api.resources.Project; 029 import org.sonar.api.resources.ProjectLink; 030 import org.sonar.api.resources.Resource; 031 import org.sonar.api.rules.Violation; 032 import org.sonar.batch.indexer.DefaultSonarIndex; 033 034 import java.util.Collection; 035 import java.util.Date; 036 import java.util.List; 037 import java.util.Set; 038 039 public class DefaultSensorContext implements SensorContext { 040 041 private DefaultSonarIndex index; 042 private Project project; 043 044 public DefaultSensorContext(DefaultSonarIndex index, Project project) { 045 this.index = index; 046 this.project = project; 047 } 048 049 public Project getProject() { 050 return project; 051 } 052 053 public Measure getMeasure(Metric metric) { 054 return index.getMeasure(project, metric); 055 } 056 057 public <M> M getMeasures(MeasuresFilter<M> filter) { 058 return index.getMeasures(project, filter); 059 } 060 061 public Measure saveMeasure(Measure measure) { 062 return index.saveMeasure(project, measure); 063 } 064 065 public Measure saveMeasure(Metric metric, Double value) { 066 return index.saveMeasure(project, new Measure(metric, value)); 067 } 068 069 public Measure getMeasure(Resource resource, Metric metric) { 070 return index.getMeasure(resource, metric); 071 } 072 073 public String saveResource(Resource resource) { 074 Resource persistedResource = index.addResource(resource); 075 if (persistedResource!=null) { 076 return persistedResource.getEffectiveKey(); 077 } 078 return null; 079 } 080 081 public Resource getResource(Resource resource) { 082 return index.getResource(resource); 083 } 084 085 public <M> M getMeasures(Resource resource, MeasuresFilter<M> filter) { 086 return index.getMeasures(resource, filter); 087 } 088 089 public Measure saveMeasure(Resource resource, Metric metric, Double value) { 090 return index.saveMeasure(resourceOrProject(resource), new Measure(metric, value)); 091 } 092 093 public Measure saveMeasure(Resource resource, Measure measure) { 094 return index.saveMeasure(resourceOrProject(resource), measure); 095 } 096 097 public void saveViolation(Violation violation) { 098 if (violation.getResource()==null) { 099 violation.setResource(resourceOrProject(violation.getResource())); 100 } 101 index.addViolation(violation); 102 } 103 104 public void saveViolations(Collection<Violation> violations) { 105 if (violations!=null) { 106 for (Violation violation : violations) { 107 saveViolation(violation); 108 } 109 } 110 } 111 112 public Dependency saveDependency(Dependency dependency) { 113 return index.saveDependency(dependency); 114 } 115 116 public Set<Dependency> getDependencies() { 117 return index.getDependencies(); 118 } 119 120 public Collection<Dependency> getIncomingDependencies(Resource to) { 121 return index.getIncomingEdges(resourceOrProject(to)); 122 } 123 124 public Collection<Dependency> getOutgoingDependencies(Resource from) { 125 return index.getOutgoingEdges(resourceOrProject(from)); 126 } 127 128 public void saveSource(Resource resource, String source) { 129 index.setSource(resource, source); 130 } 131 132 public void saveLink(ProjectLink link) { 133 index.saveLink(link); 134 } 135 136 public void deleteLink(String key) { 137 index.deleteLink(key); 138 } 139 140 public List<Event> getEvents(Resource resource) { 141 return index.getEvents(resource); 142 } 143 144 public Event createEvent(Resource resource, String name, String description, String category, Date date) { 145 return index.createEvent(resource, name, description, category, date); 146 } 147 148 public void deleteEvent(Event event) { 149 index.deleteEvent(event); 150 } 151 152 private Resource resourceOrProject(Resource resource) { 153 return (resource!=null ? resource : project); 154 } 155 }