001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 SonarSource 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.batch.SonarIndex; 025 import org.sonar.api.design.Dependency; 026 import org.sonar.api.measures.Measure; 027 import org.sonar.api.measures.MeasuresFilter; 028 import org.sonar.api.measures.Metric; 029 import org.sonar.api.resources.*; 030 import org.sonar.api.rules.Violation; 031 032 import java.util.Collection; 033 import java.util.Date; 034 import java.util.List; 035 import java.util.Set; 036 037 public class DefaultSensorContext implements SensorContext { 038 039 private SonarIndex index; 040 private Project project; 041 042 public DefaultSensorContext(SonarIndex index, Project project) { 043 this.index = index; 044 this.project = project; 045 } 046 047 public Project getProject() { 048 return project; 049 } 050 051 public boolean index(Resource resource) { 052 return index.index(resource); 053 } 054 055 public boolean index(Resource resource, Resource parentReference) { 056 return index.index(resource, parentReference); 057 } 058 059 public boolean isExcluded(Resource reference) { 060 return index.isExcluded(reference); 061 } 062 063 public boolean isIndexed(Resource reference, boolean acceptExcluded) { 064 return index.isIndexed(reference, acceptExcluded); 065 } 066 067 public Resource getParent(Resource reference) { 068 return index.getParent(reference); 069 } 070 071 public Collection<Resource> getChildren(Resource reference) { 072 return index.getChildren(reference); 073 } 074 075 public Measure getMeasure(Metric metric) { 076 return index.getMeasure(project, metric); 077 } 078 079 public <M> M getMeasures(MeasuresFilter<M> filter) { 080 return index.getMeasures(project, filter); 081 } 082 083 public Measure saveMeasure(Measure measure) { 084 return index.addMeasure(project, measure); 085 } 086 087 public Measure saveMeasure(Metric metric, Double value) { 088 return index.addMeasure(project, new Measure(metric, value)); 089 } 090 091 public Measure getMeasure(Resource resource, Metric metric) { 092 return index.getMeasure(resource, metric); 093 } 094 095 public String saveResource(Resource resource) { 096 Resource persistedResource = index.addResource(resource); 097 if (persistedResource != null) { 098 return persistedResource.getEffectiveKey(); 099 } 100 return null; 101 } 102 103 public boolean saveResource(Resource resource, Resource parentReference) { 104 return index.index(resource, parentReference); 105 } 106 107 public Resource getResource(Resource resource) { 108 return index.getResource(resource); 109 } 110 111 public <M> M getMeasures(Resource resource, MeasuresFilter<M> filter) { 112 return index.getMeasures(resource, filter); 113 } 114 115 public Measure saveMeasure(Resource resource, Metric metric, Double value) { 116 return index.addMeasure(resourceOrProject(resource), new Measure(metric, value)); 117 } 118 119 public Measure saveMeasure(Resource resource, Measure measure) { 120 return index.addMeasure(resourceOrProject(resource), measure); 121 } 122 123 public void saveViolation(Violation violation, boolean force) { 124 if (violation.getResource() == null) { 125 violation.setResource(resourceOrProject(violation.getResource())); 126 } 127 index.addViolation(violation, force); 128 } 129 130 public void saveViolation(Violation violation) { 131 saveViolation(violation, false); 132 } 133 134 public void saveViolations(Collection<Violation> violations) { 135 if (violations != null) { 136 for (Violation violation : violations) { 137 saveViolation(violation); 138 } 139 } 140 } 141 142 public Dependency saveDependency(Dependency dependency) { 143 return index.addDependency(dependency); 144 } 145 146 public Set<Dependency> getDependencies() { 147 return index.getDependencies(); 148 } 149 150 public Collection<Dependency> getIncomingDependencies(Resource to) { 151 return index.getIncomingEdges(resourceOrProject(to)); 152 } 153 154 public Collection<Dependency> getOutgoingDependencies(Resource from) { 155 return index.getOutgoingEdges(resourceOrProject(from)); 156 } 157 158 public void saveSource(Resource reference, String source) throws DuplicatedSourceException { 159 index.setSource(reference, source); 160 } 161 162 public void saveLink(ProjectLink link) { 163 index.addLink(link); 164 } 165 166 public void deleteLink(String key) { 167 index.deleteLink(key); 168 } 169 170 public List<Event> getEvents(Resource resource) { 171 return index.getEvents(resource); 172 } 173 174 public Event createEvent(Resource resource, String name, String description, String category, Date date) { 175 return index.addEvent(resource, name, description, category, date); 176 } 177 178 public void deleteEvent(Event event) { 179 index.deleteEvent(event); 180 } 181 182 private Resource resourceOrProject(Resource resource) { 183 return (resource != null ? resource : project); 184 } 185 }