001 package org.sonar.core.components; 002 003 import com.google.common.collect.Lists; 004 import org.sonar.api.measures.Metric; 005 import org.sonar.api.measures.MetricFinder; 006 import org.sonar.jpa.session.DatabaseSessionFactory; 007 008 import java.util.Collection; 009 import java.util.List; 010 011 public class DefaultMetricFinder implements MetricFinder { 012 013 private DatabaseSessionFactory sessionFactory; 014 015 public DefaultMetricFinder(DatabaseSessionFactory sessionFactory) { 016 this.sessionFactory = sessionFactory; 017 } 018 019 public Metric findById(int id) { 020 return sessionFactory.getSession().getSingleResult(Metric.class, "id", id, "enabled", true); 021 } 022 023 public Metric findByKey(String key) { 024 return sessionFactory.getSession().getSingleResult(Metric.class, "key", key, "enabled", true); 025 } 026 027 public Collection<Metric> findAll(List<String> metricKeys) { 028 List<Metric> result = Lists.newLinkedList(); 029 for (String metricKey : metricKeys) { 030 Metric metric = findByKey(metricKey); 031 if (metric != null) { 032 result.add(metric); 033 } 034 } 035 return result; 036 } 037 038 public Collection<Metric> findAll() { 039 return doFindAll(); 040 } 041 042 protected Collection<Metric> doFindAll() { 043 return sessionFactory.getSession().getResults(Metric.class, "enabled", true); 044 } 045 046 }