Skip to content

Commit

Permalink
Fix quality flaws
Browse files Browse the repository at this point in the history
  • Loading branch information
julienlancelot committed Jul 3, 2015
1 parent 7f21801 commit 854f1e5
Show file tree
Hide file tree
Showing 47 changed files with 982 additions and 600 deletions.
Expand Up @@ -268,12 +268,7 @@ private void addActiveRules(ProjectRepositories ref) {
}

private Map<RuleKey, Rule> ruleByRuleKey(Iterator<Rule> rules) {
return Maps.uniqueIndex(rules, new Function<Rule, RuleKey>() {
@Override
public RuleKey apply(@Nullable Rule input) {
return input != null ? input.key() : null;
}
});
return Maps.uniqueIndex(rules, MatchRuleKey.INSTANCE);
}

private void addManualRules(ProjectRepositories ref) {
Expand Down Expand Up @@ -370,4 +365,13 @@ List<ComponentDto> findChildrenModule(String moduleKey) {
return newArrayList(moduleChildrenByModuleUuid.get(moduleUuid));
}
}

private enum MatchRuleKey implements Function<Rule, RuleKey>{
INSTANCE;

@Override
public RuleKey apply(@Nullable Rule input) {
return input != null ? input.key() : null;
}
}
}
Expand Up @@ -25,6 +25,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Set;
import javax.annotation.Nonnull;
import org.sonar.api.component.Component;
import org.sonar.api.utils.Paging;
import org.sonar.api.utils.log.Logger;
Expand Down Expand Up @@ -56,14 +57,8 @@ public DefaultComponentQueryResult find(ComponentQuery query, List<Component> al
}
}

private Collection<Component> search(final ComponentQuery query, List<? extends Component> allComponents) {
return newArrayList(Iterables.filter(allComponents, new Predicate<Component>() {
@Override
public boolean apply(Component component) {
return new KeyFilter().accept(component, query.keys()) &&
new NameFilter().accept(component, query.names());
}
}));
private Collection<Component> search(ComponentQuery query, List<? extends Component> allComponents) {
return newArrayList(Iterables.filter(allComponents, new MatchQuery(query)));
}

abstract static class Filter {
Expand Down Expand Up @@ -111,4 +106,18 @@ private static Collection<? extends Component> pagedComponents(Collection<? exte
return pagedComponents;
}

private static class MatchQuery implements Predicate<Component> {
private final ComponentQuery query;

public MatchQuery(ComponentQuery query) {
this.query = query;
}

@Override
public boolean apply(@Nonnull Component component) {
return new KeyFilter().accept(component, query.keys()) &&
new NameFilter().accept(component, query.names());
}
}

}
Expand Up @@ -84,10 +84,10 @@ public int hashCode() {

@Override
public String toString() {
return com.google.common.base.Objects.toStringHelper(this)
.add("metricKey", metricKey)
.add("ruleId", ruleId)
.add("characteristicId", characteristicId)
.toString();
return "MeasureKey{" +
"metricKey='" + metricKey + '\'' +
", ruleId=" + ruleId +
", characteristicId=" + characteristicId +
'}';
}
}
Expand Up @@ -25,10 +25,8 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.core.measure.db.MeasureDto;
import org.sonar.core.persistence.DbSession;
Expand Down Expand Up @@ -173,7 +171,7 @@ public SetMultimap<String, Measure> getRawMeasures(Component component) {

ImmutableSetMultimap.Builder<String, Measure> builder = ImmutableSetMultimap.builder();
for (Map.Entry<MeasureKey, Measure> entry : rawMeasures.entrySet()) {
builder.put(entry.getKey().metricKey, entry.getValue());
builder.put(entry.getKey().getMetricKey(), entry.getValue());
}
return builder.build();
}
Expand Down Expand Up @@ -222,55 +220,4 @@ private void addLocal(Component component, Metric metric, Measure measure, Overr
private enum OverridePolicy {
OVERRIDE, DO_NOT_OVERRIDE
}

@Immutable
private static final class MeasureKey {
private static final int DEFAULT_INT_VALUE = -6253;

private final String metricKey;
private final int ruleId;
private final int characteristicId;

public MeasureKey(String metricKey, @Nullable Integer ruleId, @Nullable Integer characteristicId) {
// defensive code in case we badly chose the default value, we want to know it right away!
checkArgument(ruleId == null || ruleId != DEFAULT_INT_VALUE, "Unsupported rule id");
checkArgument(characteristicId == null || characteristicId != DEFAULT_INT_VALUE, "Unsupported characteristic id");

this.metricKey = requireNonNull(metricKey, "MetricKey can not be null");
this.ruleId = ruleId == null ? DEFAULT_INT_VALUE : ruleId;
this.characteristicId = characteristicId == null ? DEFAULT_INT_VALUE : characteristicId;
}

public MeasureKey(String key, @Nullable RuleDto rule, @Nullable Characteristic characteristic) {
this(key, rule == null ? null : rule.getId(), characteristic == null ? null : characteristic.getId());
}

@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
MeasureKey that = (MeasureKey) o;
return metricKey.equals(that.metricKey)
&& ruleId == that.ruleId
&& characteristicId == that.characteristicId;
}

@Override
public int hashCode() {
return Objects.hash(metricKey, ruleId, characteristicId);
}

@Override
public String toString() {
return com.google.common.base.Objects.toStringHelper(this)
.add("metricKey", metricKey)
.add("ruleId", ruleId)
.add("characteristicId", characteristicId)
.toString();
}
}
}
Expand Up @@ -20,10 +20,12 @@

package org.sonar.server.computation.step;

import com.google.common.base.Function;
import com.google.common.collect.Maps;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.ObjectUtils;
Expand All @@ -34,7 +36,6 @@
import org.sonar.batch.protocol.output.BatchReport;
import org.sonar.core.component.ComponentDto;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.util.NonNullInputFunction;
import org.sonar.server.computation.batch.BatchReportReader;
import org.sonar.server.computation.component.Component;
import org.sonar.server.computation.component.DbIdsRepository;
Expand Down Expand Up @@ -275,12 +276,16 @@ private static String getFileQualifier(Component component) {
}

private static Map<String, ComponentDto> componentDtosByKey(List<ComponentDto> components) {
return Maps.uniqueIndex(components, new NonNullInputFunction<ComponentDto, String>() {
@Override
public String doApply(ComponentDto input) {
return input.key();
}
});
return Maps.uniqueIndex(components, ComponentKey.INSTANCE);
}

private enum ComponentKey implements Function<ComponentDto, String> {
INSTANCE;

@Override
public String apply(@Nonnull ComponentDto input) {
return input.key();
}
}

@Override
Expand Down
Expand Up @@ -129,10 +129,8 @@ public void visitProject(Component rawProject) {
}

private void validateWhenProvisioningEnforced(@Nullable ComponentDto baseProject, String rawProjectKey) {
if (baseProject == null) {
if (preventAutomaticProjectCreation) {
validationMessages.add(String.format("Unable to scan non-existing project '%s'", rawProjectKey));
}
if (baseProject == null && preventAutomaticProjectCreation) {
validationMessages.add(String.format("Unable to scan non-existing project '%s'", rawProjectKey));
}
}

Expand Down
Expand Up @@ -22,13 +22,12 @@
import java.sql.Connection;
import java.sql.SQLException;
import java.util.concurrent.atomic.AtomicLong;

import org.sonar.core.persistence.Database;
import org.sonar.server.util.ProgressLogger;

public class MassUpdate {

public static interface Handler {
public interface Handler {
/**
* Convert some column values of a given row.
*
Expand Down
Expand Up @@ -19,13 +19,16 @@
*/
package org.sonar.server.db.migrations.v451;

import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;

import javax.annotation.Nullable;

import org.sonar.api.utils.System2;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.persistence.migration.v45.Migration45Mapper;
Expand All @@ -35,12 +38,6 @@
import org.sonar.server.db.migrations.MigrationStep;
import org.sonar.server.util.ProgressLogger;

import com.google.common.base.Predicate;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;

/**
* See http://jira.sonarsource.com/browse/SONAR-5575
*
Expand Down Expand Up @@ -127,12 +124,20 @@ private void insertCustomRuleParameterIfNotAlreadyExisting(RuleParameter templat
}
}

private boolean hasParameter(final String parameter, Collection<RuleParameter> customRuleParams) {
return Iterables.any(customRuleParams, new Predicate<RuleParameter>() {
@Override
public boolean apply(@Nullable RuleParameter input) {
return input != null && input.getName().equals(parameter);
}
});
private boolean hasParameter(String parameter, Collection<RuleParameter> customRuleParams) {
return Iterables.any(customRuleParams, new MatchParameter(parameter));
}

private static class MatchParameter implements Predicate<RuleParameter> {
private final String parameter;

public MatchParameter(String parameter) {
this.parameter = parameter;
}

@Override
public boolean apply(@Nullable RuleParameter input) {
return input != null && input.getName().equals(parameter);
}
}
}
Expand Up @@ -21,7 +21,6 @@
package org.sonar.server.db.migrations.v50;

import java.sql.SQLException;

import org.sonar.api.utils.System2;
import org.sonar.core.persistence.Database;
import org.sonar.server.db.migrations.BaseDataChange;
Expand All @@ -45,21 +44,20 @@ public InsertProjectsAuthorizationUpdatedAtMigrationStep(Database db, System2 sy

@Override
public void execute(Context context) throws SQLException {
final long now = system.now();

MassUpdate massUpdate = context.prepareMassUpdate();
massUpdate.select("SELECT p.id FROM projects p WHERE p.scope=? AND p.enabled=? and p.authorization_updated_at IS NULL").setString(1, "PRJ").setBoolean(2, true);
massUpdate.update("UPDATE projects SET authorization_updated_at=? WHERE id=?");
massUpdate.rowPluralName("projects");
massUpdate.execute(new MassUpdate.Handler() {
@Override
public boolean handle(Select.Row row, SqlStatement update) throws SQLException {
Long id = row.getNullableLong(1);
update.setLong(1, now);
update.setLong(2, id);
return true;
}
});
massUpdate.execute(new MigrationHandler());
}

private class MigrationHandler implements MassUpdate.Handler {
@Override
public boolean handle(Select.Row row, SqlStatement update) throws SQLException {
Long id = row.getNullableLong(1);
update.setLong(1, system.now());
update.setLong(2, id);
return true;
}
}
}
Expand Up @@ -228,12 +228,7 @@ public List<Characteristic> characteristics() {

@CheckForNull
public Characteristic findCharacteristicByKey(final String key) {
Characteristic characteristic = Iterables.find(characteristics, new Predicate<Characteristic>() {
@Override
public boolean apply(@Nullable Characteristic input) {
return input != null && input.key.equals(key);
}
}, null);
Characteristic characteristic = Iterables.find(characteristics, new CharacteristicKey(key), null);
if (characteristic != null && characteristic.getParentId() != null) {
throw MessageException.of(String.format("'%s' must be a characteristic. " + ERROR_SUFFIX, characteristic.getName()));
}
Expand All @@ -242,12 +237,7 @@ public boolean apply(@Nullable Characteristic input) {

@CheckForNull
public Characteristic findSubCharacteristicByKey(final String key, Characteristic parent) {
Characteristic characteristic = Iterables.find(characteristics, new Predicate<Characteristic>() {
@Override
public boolean apply(@Nullable Characteristic input) {
return input != null && input.key.equals(key);
}
}, null);
Characteristic characteristic = Iterables.find(characteristics, new CharacteristicKey(key), null);
if (characteristic != null) {
Integer parentId = characteristic.getParentId();
if (parentId == null) {
Expand Down Expand Up @@ -324,4 +314,17 @@ public Characteristic read(Select.Row row) throws SQLException {
}
}
}

private static class CharacteristicKey implements Predicate<Characteristic> {
private final String key;

public CharacteristicKey(String key) {
this.key = key;
}

@Override
public boolean apply(@Nullable Characteristic input) {
return input != null && input.key.equals(key);
}
}
}

0 comments on commit 854f1e5

Please sign in to comment.