private static String computeMeasureKey(Measure m) { StringBuilder sb = new StringBuilder(); if (m.getMetricKey() != null) { sb.append(m.getMetricKey()); } sb.append("|"); Integer personId = m.getPersonId(); if (personId != null) { sb.append(personId); } return sb.toString(); }
public void init() { Iterable<Measure> unfiltered = measureCache.byResource(resource); for (Measure measure : unfiltered) { measuresByMetric.put(measure.getMetricKey(), measure); } }
private static void validateMeasure(Measure measure, String componentKey) { if (measure.getValue() == null && measure.getData() == null) { throw new IllegalArgumentException(String.format("Measure on metric '%s' and component '%s' has no value, but it's not allowed", measure.getMetricKey(), componentKey)); } }
public MeasureCache put(Resource resource, Measure measure) { Preconditions.checkNotNull(resource.getEffectiveKey()); Preconditions.checkNotNull(measure.getMetricKey()); cache.put(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure), measure); return this; }
public boolean contains(Resource resource, Measure measure) { Preconditions.checkNotNull(resource.getEffectiveKey()); Preconditions.checkNotNull(measure.getMetricKey()); return cache.containsKey(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure)); }
public boolean contains(Resource resource, Measure measure) { Preconditions.checkNotNull(resource.getEffectiveKey()); Preconditions.checkNotNull(measure.getMetricKey()); return cache.containsKey(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure)); }
public MeasureCache put(Resource resource, Measure measure) { Preconditions.checkNotNull(resource.getEffectiveKey()); Preconditions.checkNotNull(measure.getMetricKey()); cache.put(resource.getEffectiveKey(), measure.getMetricKey(), computeMeasureKey(measure), measure); return this; }
@Override public Measure filter(Collection<Measure> measures) { if (measures == null) { return null; } for (Measure measure : measures) { if (measure.getClass().equals(Measure.class) && measure.getMetricKey().equals(metricKey) && measure.getCharacteristic() == null && measure.getPersonId() == null) { return measure; } } return null; } };
private static String computeMeasureKey(Measure m) { StringBuilder sb = new StringBuilder(); if (m.getMetricKey() != null) { sb.append(m.getMetricKey()); } sb.append("|"); Characteristic characteristic = m.getCharacteristic(); if (characteristic != null) { sb.append(characteristic.key()); } sb.append("|"); Integer personId = m.getPersonId(); if (personId != null) { sb.append(personId); } if (m instanceof RuleMeasure) { sb.append("|"); sb.append(((RuleMeasure) m).ruleKey()); } return sb.toString(); }
private boolean apply(Measure measure) { return measure instanceof RuleMeasure && filterOnMetricKey().equals(measure.getMetricKey()) && measure.getPersonId() == null && doApply((RuleMeasure) measure); }
@Override public DecoratorContext saveMeasure(Measure measure) { checkReadOnly(SAVE_MEASURE_METHOD); Metric metric = metricFinder.findByKey(measure.getMetricKey()); if (metric == null) { throw new SonarException("Unknown metric: " + measure.getMetricKey()); } measure.setMetric(metric); if (coverageFilter.accept(resource, measure)) { List<Measure> metricMeasures = measuresByMetric.get(measure.getMetricKey()); boolean add = true; if (metricMeasures != null) { int index = metricMeasures.indexOf(measure); if (index > -1) { if (metricMeasures.get(index) == measure) { add = false; } else { throw new SonarException("Can not add twice the same measure on " + resource + ": " + measure); } } } if (add) { measuresByMetric.put(measure.getMetricKey(), measure); } } return this; }
public org.sonar.api.measures.Measure saveMeasure(Resource resource, org.sonar.api.measures.Measure measure) { if (DEPRECATED_METRICS_KEYS.contains(measure.getMetricKey())) { // Ignore deprecated metrics return null; } org.sonar.api.batch.measure.Metric metric = metricFinder.findByKey(measure.getMetricKey()); if (metric == null) { throw new SonarException("Unknown metric: " + measure.getMetricKey()); } if (!measure.isFromCore() && INTERNAL_METRICS.contains(metric)) { LOG.debug("Metric " + metric.key() + " is an internal metric computed by SonarQube. Provided value is ignored."); return measure; } if (measureCache.contains(resource, measure)) { throw new SonarException("Can not add the same measure twice on " + resource + ": " + measure); } measureCache.put(resource, measure); return measure; }
@Override public Measure addMeasure(Resource resource, Measure measure) { Bucket bucket = getBucket(resource); if (bucket != null) { org.sonar.api.batch.measure.Metric metric = metricFinder.findByKey(measure.getMetricKey()); if (metric == null) { throw new SonarException("Unknown metric: " + measure.getMetricKey()); } if (!isViewResource(resource) && !measure.isFromCore() && INTERNAL_METRICS.contains(metric)) { LOG.debug("Metric " + metric.key() + " is an internal metric computed by SonarQube. Provided value is ignored."); return measure; } if (measureCache.contains(resource, measure)) { throw new SonarException("Can not add the same measure twice on " + resource + ": " + measure); } measureCache.put(resource, measure); } return measure; }
private BatchReport.Measure toReportMeasure(BatchReport.Measure.Builder builder, Measure measure) { builder.clear(); builder.setValueType(getMeasureValueType(measure.getMetric().getType())); setValueAccordingToType(builder, measure); // Because some numeric measures also have a data (like Sqale rating) String data = measure.getData(); if (data != null) { builder.setStringValue(data); } builder.setMetricKey(measure.getMetricKey()); return builder.build(); }
@Override public void persist() { try (DbSession session = mybatis.openSession(true)) { MeasureMapper mapper = session.getMapper(MeasureMapper.class); for (Entry<Measure> entry : measureCache.entries()) { String effectiveKey = entry.key()[0].toString(); Measure measure = entry.value(); BatchResource batchResource = resourceCache.get(effectiveKey); // Reload Metric to have all Hibernate fields populated measure.setMetric(metricFinder.findByKey(measure.getMetricKey())); if (shouldPersistMeasure(batchResource.resource(), measure)) { MeasureModel measureModel = model(measure, ruleFinder).setSnapshotId(batchResource.snapshotId()); mapper.insert(measureModel); } } session.commit(); } catch (Exception e) { throw new IllegalStateException("Unable to save some measures", e); } }
@Override public void put(Value value, Object object, CoderContext context) { Measure<?> m = (Measure) object; value.putUTF(m.getMetricKey()); value.put(m.getValue()); putUTFOrNull(value, m.getData()); putUTFOrNull(value, m.getDescription()); value.putString(m.getAlertStatus() != null ? m.getAlertStatus().name() : null); putUTFOrNull(value, m.getAlertText()); value.putDate(m.getDate()); value.put(m.getVariation1()); value.put(m.getVariation2()); value.put(m.getVariation3()); value.put(m.getVariation4()); value.put(m.getVariation5()); putUTFOrNull(value, m.getUrl()); Integer personId = m.getPersonId(); value.put(personId != null ? personId.intValue() : null); PersistenceMode persistenceMode = m.getPersistenceMode(); value.putString(persistenceMode != null ? persistenceMode.name() : null); }
@Override public void put(Value value, Object object, CoderContext context) { Measure<?> m = (Measure) object; value.putUTF(m.getMetricKey()); value.put(m.getValue()); putUTFOrNull(value, m.getData()); putUTFOrNull(value, m.getDescription()); value.putString(m.getAlertStatus() != null ? m.getAlertStatus().name() : null); putUTFOrNull(value, m.getAlertText()); value.put(m.getTendency()); value.putDate(m.getDate()); value.put(m.getVariation1()); value.put(m.getVariation2()); value.put(m.getVariation3()); value.put(m.getVariation4()); value.put(m.getVariation5()); putUTFOrNull(value, m.getUrl()); Characteristic characteristic = m.getCharacteristic(); value.put(characteristic != null ? characteristic.id() : null); Requirement requirement = m.getRequirement(); value.put(requirement != null ? requirement.id() : null); Integer personId = m.getPersonId(); value.put(personId != null ? personId.intValue() : null); PersistenceMode persistenceMode = m.getPersistenceMode(); value.putString(persistenceMode != null ? persistenceMode.name() : null); }