*/
package org.sonar.jpa.dao;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Predicate;
-import org.sonar.api.database.DatabaseSession;
-import org.sonar.api.measures.Metric;
-
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
-import static com.google.common.collect.Lists.newArrayList;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
+import org.sonar.api.database.DatabaseSession;
+import org.sonar.api.measures.Metric;
public class MeasuresDao {
this.session = session;
}
- public Metric getMetric(Metric metric) {
- return getMetricsByName().get(metric.getKey());
- }
-
- public List<Metric> getMetrics(List<Metric> metrics) {
- List<Metric> result = newArrayList();
- for (Metric metric : metrics) {
- result.add(getMetric(metric));
- }
- return result;
- }
-
public Metric getMetric(String metricName) {
return getMetricsByName().get(metricName);
}
});
}
- public Collection<Metric> getUserDefinedMetrics() {
- return CollectionUtils.select(getMetricsByName().values(), new Predicate() {
- @Override
- public boolean evaluate(Object o) {
- Metric m = (Metric) o;
- return m.getEnabled() && m.getOrigin() != Metric.Origin.JAV;
- }
- });
- }
-
public void disableAutomaticMetrics() {
session.createQuery("update " + Metric.class.getSimpleName() + " m set m.enabled=false where m.userManaged=false").executeUpdate();
session.commit();
}
private void persistMetricWithoutClear(Metric metric) {
- Metric dbMetric = getMetric(metric);
+ Metric dbMetric = getMetric(metric.getKey());
if (dbMetric != null) {
dbMetric.merge(metric);
session.getEntityManager().merge(dbMetric);
}
}
- public void persistMetric(Metric metric) {
- persistMetricWithoutClear(metric);
- metricsByName.clear();
- }
-
- public void disabledMetrics(Collection<Metric> metrics) {
- for (Metric metric : metrics) {
- metric.setEnabled(Boolean.FALSE);
- session.getEntityManager().persist(metric);
- metricsByName.put(metric.getName(), metric);
- }
- }
-
private Map<String, Metric> getMetricsByName() {
if (metricsByName.isEmpty()) {
List<Metric> metrics = session.getResults(Metric.class);
getSession().save(project);
}
- @Test
- public void shouldReturnUserDefinedMetrics() {
- for (Metric metric : createMetrics()) {
- getSession().save(metric);
- }
-
- Collection<Metric> metrics = service.getUserDefinedMetrics();
- assertThat(metrics.size(), is(2));
- for (Metric metric : metrics) {
- assertThat(metric.getOrigin(), not(Metric.Origin.JAV));
- }
- }
-
@Test
public void shouldRegisterMetrics() {
Collection<Metric> newMetrics = createMetrics();
assertThat(metrics.size(), is(newMetrics.size()));
}
- @Test
- public void shouldDisabledMetrics() {
- Collection<Metric> newMetrics = createMetrics();
-
- service.disabledMetrics(newMetrics);
-
- Collection<Metric> allMetrics = service.getMetrics();
- assertThat(allMetrics.size(), is(newMetrics.size()));
-
- Collection<Metric> disabledMetrics = service.getEnabledMetrics();
- assertThat(disabledMetrics.size(), is(0));
- }
-
-
private Collection<Metric> createMetrics() {
Metric m1 = new Metric("metric1");
m1.setEnabled(false);