001/*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2014 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * SonarQube 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 * SonarQube 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 License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019 */
020package org.sonar.api.batch.sensor.internal;
021
022import org.sonar.api.batch.sensor.SensorDescriptor;
023
024import org.sonar.api.batch.fs.InputFile;
025import org.sonar.api.batch.measure.Metric;
026
027import java.util.Arrays;
028import java.util.Collection;
029
030public class DefaultSensorDescriptor implements SensorDescriptor {
031
032  private String name;
033  private Metric<?>[] dependsOn = new Metric<?>[0];
034  private Metric<?>[] provides = new Metric<?>[0];
035  private String[] languages = new String[0];
036  private InputFile.Type[] types = new InputFile.Type[0];
037  private String[] ruleRepositories = new String[0];
038
039  public String name() {
040    return name;
041  }
042
043  public Metric[] dependsOn() {
044    return dependsOn;
045  }
046
047  public Metric[] provides() {
048    return provides;
049  }
050
051  public Collection<String> languages() {
052    return Arrays.asList(languages);
053  }
054
055  public Collection<InputFile.Type> types() {
056    return Arrays.asList(types);
057  }
058
059  public Collection<String> ruleRepositories() {
060    return Arrays.asList(ruleRepositories);
061  }
062
063  @Override
064  public DefaultSensorDescriptor name(String name) {
065    this.name = name;
066    return this;
067  }
068
069  @Override
070  public DefaultSensorDescriptor dependsOn(Metric<?>... metrics) {
071    this.dependsOn = metrics;
072    return this;
073  }
074
075  @Override
076  public DefaultSensorDescriptor provides(Metric<?>... metrics) {
077    this.provides = metrics;
078    return this;
079  }
080
081  @Override
082  public DefaultSensorDescriptor workOnLanguages(String... languageKeys) {
083    this.languages = languageKeys;
084    return this;
085  }
086
087  @Override
088  public DefaultSensorDescriptor workOnFileTypes(InputFile.Type... types) {
089    this.types = types;
090    return this;
091  }
092
093  @Override
094  public DefaultSensorDescriptor createIssuesForRuleRepositories(String... repositoryKeys) {
095    this.ruleRepositories = repositoryKeys;
096    return this;
097  }
098
099}