private void validateAddMeasure(String metricKey) { checkArgument(definition.getOutputMetrics().contains(metricKey), "Only metrics in %s can be used to add measures. Metric '%s' is not allowed.", definition.getOutputMetrics(), metricKey); if (componentMeasureByMetricKey.get(metricKey) != null) { throw new UnsupportedOperationException(String.format("A measure on metric '%s' already exists", metricKey)); } } }
private void validateInputMetric(String metric) { Set<String> allowedMetrics = new HashSet<>(); allowedMetrics.addAll(definition.getInputMetrics()); allowedMetrics.addAll(definition.getOutputMetrics()); checkArgument(allowedMetrics.contains(metric), "Only metrics in %s can be used to load measures", definition.getInputMetrics()); }
private static Set<String> allowedMetric(MeasureComputerDefinition definition) { Set<String> allowedMetrics = new HashSet<>(); allowedMetrics.addAll(definition.getInputMetrics()); allowedMetrics.addAll(definition.getOutputMetrics()); return allowedMetrics; }
private static MeasureComputerDefinition validateDef(MeasureComputerDefinition def) { if (def instanceof MeasureComputerDefinitionImpl) { return def; } // If the computer has not been created by the builder, we recreate it to make sure it's valid Set<String> inputMetrics = def.getInputMetrics(); Set<String> outputMetrics = def.getOutputMetrics(); return new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(from(inputMetrics).toArray(String.class)) .setOutputMetrics(from(outputMetrics).toArray(String.class)) .build(); } }
@Override public Collection<String> apply(@Nonnull MeasureComputerWrapper input) { return input.getDefinition().getOutputMetrics(); } }
private static void feedComputersByMetric(List<MeasureComputerWrapper> wrappers, Map<String, MeasureComputerWrapper> computersByOutputMetric, Map<String, MeasureComputerWrapper> computersByInputMetric) { for (MeasureComputerWrapper computer : wrappers) { for (String outputMetric : computer.getDefinition().getOutputMetrics()) { computersByOutputMetric.put(outputMetric, computer); } for (String inputMetric : computer.getDefinition().getInputMetrics()) { computersByInputMetric.put(inputMetric, computer); } } }
private void validateAddMeasure(Metric metric) { checkArgument(definition.getOutputMetrics().contains(metric.getKey()), "Only metrics in %s can be used to add measures. Metric '%s' is not allowed.", definition.getOutputMetrics(), metric.getKey()); if (measureRepository.getRawMeasure(internalComponent, metric).isPresent()) { throw new UnsupportedOperationException(String.format("A measure on metric '%s' already exists on component '%s'", metric.getKey(), internalComponent.getKey())); } }
private static Set<String> allowedMetric(MeasureComputerDefinition definition) { Set<String> allowedMetrics = new HashSet<>(); allowedMetrics.addAll(definition.getInputMetrics()); allowedMetrics.addAll(definition.getOutputMetrics()); return allowedMetrics; }
@Override public boolean apply(@Nonnull MeasureComputerWrapper wrapper) { for (String outputMetric : wrapper.getDefinition().getOutputMetrics()) { checkState(!allOutputMetrics.contains(outputMetric), "Output metric '%s' is already defined by another measure computer '%s'", outputMetric, wrapper.getComputer()); allOutputMetrics.add(outputMetric); } return true; } }
private void validateAddMeasure(String metricKey) { checkArgument(definition.getOutputMetrics().contains(metricKey), "Only metrics in %s can be used to add measures. Metric '%s' is not allowed.", definition.getOutputMetrics(), metricKey); if (componentMeasureByMetricKey.get(metricKey) != null) { throw new UnsupportedOperationException(String.format("A measure on metric '%s' already exists", metricKey)); } } }
private void validateInputMetric(String metric) { Set<String> allowedMetrics = new HashSet<>(); allowedMetrics.addAll(definition.getInputMetrics()); allowedMetrics.addAll(definition.getOutputMetrics()); checkArgument(allowedMetrics.contains(metric), "Only metrics in %s can be used to load measures", definition.getInputMetrics()); }
private static MeasureComputerDefinition validateDef(MeasureComputerDefinition def) { if (def instanceof MeasureComputerDefinitionImpl) { return def; } // If the computer has not been created by the builder, we recreate it to make sure it's valid Set<String> inputMetrics = def.getInputMetrics(); Set<String> outputMetrics = def.getOutputMetrics(); return new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(from(inputMetrics).toArray(String.class)) .setOutputMetrics(from(outputMetrics).toArray(String.class)) .build(); } }
@Test public void build_definition() { MeasureComputerDefinition definition = new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); assertThat(definition.getInputMetrics()).containsOnly("INPUT_1", "INPUT_2"); assertThat(definition.getOutputMetrics()).containsOnly("OUTPUT_1", "OUTPUT_2"); }
private static void feedComputersByMetric(List<MeasureComputerWrapper> wrappers, Map<String, MeasureComputerWrapper> computersByOutputMetric, Map<String, MeasureComputerWrapper> computersByInputMetric) { for (MeasureComputerWrapper computer : wrappers) { for (String outputMetric : computer.getDefinition().getOutputMetrics()) { computersByOutputMetric.put(outputMetric, computer); } for (String inputMetric : computer.getDefinition().getInputMetrics()) { computersByInputMetric.put(inputMetric, computer); } } }
@Test public void build_measure_computer_definition() { String inputMetric = "ncloc"; String outputMetric = "comment_density"; MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(inputMetric) .setOutputMetrics(outputMetric) .build(); assertThat(measureComputer.getInputMetrics()).containsOnly(inputMetric); assertThat(measureComputer.getOutputMetrics()).containsOnly(outputMetric); }
@Test public void build_definition_without_input_metric() { MeasureComputerDefinition definition = new MeasureComputerDefinitionBuilderImpl() .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); assertThat(definition.getInputMetrics()).isEmpty(); assertThat(definition.getOutputMetrics()).containsOnly("OUTPUT_1", "OUTPUT_2"); }
@Test public void build_measure_computer_with_multiple_metrics() { String[] inputMetrics = {"ncloc", "comment"}; String[] outputMetrics = {"comment_density_1", "comment_density_2"}; MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(inputMetrics) .setOutputMetrics(outputMetrics) .build(); assertThat(measureComputer.getInputMetrics()).containsOnly(inputMetrics); assertThat(measureComputer.getOutputMetrics()).containsOnly(outputMetrics); }
private void validateAddMeasure(Metric metric) { checkArgument(definition.getOutputMetrics().contains(metric.getKey()), "Only metrics in %s can be used to add measures. Metric '%s' is not allowed.", definition.getOutputMetrics(), metric.getKey()); if (measureRepository.getRawMeasure(internalComponent, metric).isPresent()) { throw new UnsupportedOperationException(String.format("A measure on metric '%s' already exists on component '%s'", metric.getKey(), internalComponent.getDbKey())); } }
@Override public boolean apply(@Nonnull MeasureComputerWrapper wrapper) { for (String outputMetric : wrapper.getDefinition().getOutputMetrics()) { checkState(!allOutputMetrics.contains(outputMetric), "Output metric '%s' is already defined by another measure computer '%s'", outputMetric, wrapper.getComputer()); allOutputMetrics.add(outputMetric); } return true; } }
@Override public Collection<String> apply(@Nonnull MeasureComputerWrapper input) { return input.getDefinition().getOutputMetrics(); } }