@@ -23,7 +23,6 @@ import java.util.Map; | |||
import org.sonar.db.Dao; | |||
import org.sonar.db.Database; | |||
import org.sonar.db.MyBatis; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.server.qualityprofile.db.ActiveRuleDao; | |||
import org.sonar.server.rule.db.RuleDao; | |||
import org.sonar.server.user.db.GroupDao; | |||
@@ -37,7 +36,6 @@ public class DbClient extends org.sonar.db.DbClient { | |||
private ActiveRuleDao activeRuleDao; | |||
private GroupDao groupDao; | |||
private MetricDao metricDao; | |||
private RuleDao ruleDao; | |||
private UserDao userDao; | |||
@@ -49,7 +47,6 @@ public class DbClient extends org.sonar.db.DbClient { | |||
protected void doOnLoad(Map<Class, Dao> daoByClass) { | |||
this.activeRuleDao = (ActiveRuleDao) daoByClass.get(ActiveRuleDao.class); | |||
this.groupDao = (GroupDao) daoByClass.get(GroupDao.class); | |||
this.metricDao = (MetricDao) daoByClass.get(MetricDao.class); | |||
this.ruleDao = (RuleDao) daoByClass.get(RuleDao.class); | |||
this.userDao = (UserDao) daoByClass.get(UserDao.class); | |||
} | |||
@@ -62,10 +59,6 @@ public class DbClient extends org.sonar.db.DbClient { | |||
return groupDao; | |||
} | |||
public MetricDao metricDao() { | |||
return metricDao; | |||
} | |||
public RuleDao ruleDao() { | |||
return ruleDao; | |||
} |
@@ -1,24 +0,0 @@ | |||
/* | |||
* SonarQube, open source software quality management tool. | |||
* Copyright (C) 2008-2014 SonarSource | |||
* mailto:contact AT sonarsource DOT com | |||
* | |||
* SonarQube is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* SonarQube is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
@ParametersAreNonnullByDefault | |||
package org.sonar.server.metric.persistence; | |||
import javax.annotation.ParametersAreNonnullByDefault; |
@@ -92,7 +92,7 @@ public class SearchAction implements MetricsWsAction { | |||
Boolean isCustom = request.paramAsBoolean(PARAM_IS_CUSTOM); | |||
DbSession dbSession = dbClient.openSession(false); | |||
try { | |||
List<MetricDto> metrics = dbClient.metricDao().selectEnabled(dbSession, isCustom, searchOptions); | |||
List<MetricDto> metrics = dbClient.metricDao().selectEnabled(dbSession, isCustom, searchOptions.getOffset(), searchOptions.getLimit()); | |||
int nbMetrics = dbClient.metricDao().countEnabled(dbSession, isCustom); | |||
JsonWriter json = response.newJsonWriter(); | |||
json.beginObject(); |
@@ -37,7 +37,7 @@ import org.sonar.db.version.MigrationStepModule; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.db.EmbeddedDatabaseFactory; | |||
import org.sonar.server.issue.index.IssueIndex; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.platform.DatabaseServerCompatibility; | |||
import org.sonar.server.platform.DefaultServerFileSystem; | |||
import org.sonar.server.platform.Platform; |
@@ -34,7 +34,7 @@ import org.sonar.db.property.PropertiesDao; | |||
import org.sonar.db.property.PropertyDto; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.WsTester; | |||
@@ -55,7 +55,7 @@ import org.sonar.server.computation.metric.MetricImpl; | |||
import org.sonar.server.computation.metric.MetricRepository; | |||
import org.sonar.server.computation.metric.ReportMetricValidator; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import static com.google.common.collect.FluentIterable.from; | |||
import static java.lang.String.format; |
@@ -27,7 +27,7 @@ import org.junit.rules.ExpectedException; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.test.DbTests; | |||
import static org.assertj.core.api.Assertions.assertThat; |
@@ -40,7 +40,7 @@ import org.sonar.server.computation.component.Component; | |||
import org.sonar.server.computation.component.DbIdsRepository; | |||
import org.sonar.server.computation.component.DumbComponent; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.test.DbTests; | |||
import static com.google.common.collect.Lists.newArrayList; |
@@ -51,7 +51,7 @@ import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.server.exceptions.ServerException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.metric.ws.MetricTesting; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.user.index.UserDoc; | |||
@@ -361,7 +361,7 @@ public class CreateActionTest { | |||
dbClient.componentDao().insert(dbSession, ComponentTesting.newProjectDto(DEFAULT_PROJECT_UUID)); | |||
dbSession.commit(); | |||
expectedException.expect(ServerException.class); | |||
expectedException.expect(IllegalStateException.class); | |||
expectedException.expectMessage("Metric id '42' not found"); | |||
newRequest() |
@@ -45,7 +45,7 @@ import org.sonar.server.db.DbClient; | |||
import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.user.index.UserDoc; | |||
import org.sonar.server.user.index.UserIndexDefinition; |
@@ -51,7 +51,7 @@ import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.user.index.UserDoc; | |||
import org.sonar.server.user.index.UserIndex; |
@@ -45,7 +45,7 @@ import org.sonar.server.es.EsTester; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.ServerException; | |||
import org.sonar.server.exceptions.UnauthorizedException; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.metric.ws.MetricTesting; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.user.index.UserDoc; |
@@ -27,7 +27,7 @@ import org.junit.experimental.categories.Category; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.test.DbTests; | |||
import static org.hamcrest.core.Is.is; |
@@ -37,7 +37,7 @@ import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.ServerException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.db.measure.custom.CustomMeasureTesting; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.ruby.RubyBridge; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.WsTester; |
@@ -38,7 +38,7 @@ import org.sonar.server.db.DbClient; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.db.measure.custom.CustomMeasureTesting; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.ruby.RubyBridge; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.WsTester; |
@@ -30,7 +30,7 @@ import org.sonar.db.DbSession; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.ws.WsTester; | |||
import org.sonar.test.DbTests; | |||
import org.sonar.test.JsonAssert; |
@@ -32,7 +32,7 @@ import org.sonar.db.DbSession; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.ws.WsTester; | |||
import org.sonar.test.DbTests; | |||
@@ -36,7 +36,7 @@ import org.sonar.server.db.DbClient; | |||
import org.sonar.server.exceptions.ForbiddenException; | |||
import org.sonar.server.exceptions.ServerException; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.server.ruby.RubyBridge; | |||
import org.sonar.server.tester.UserSessionRule; | |||
import org.sonar.server.ws.WsTester; |
@@ -31,7 +31,7 @@ import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.qualitygate.QualityGateConditionDao; | |||
import org.sonar.server.db.DbClient; | |||
import org.sonar.server.metric.persistence.MetricDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.test.DbTests; | |||
import static java.util.Arrays.asList; |
@@ -47,6 +47,7 @@ import org.sonar.db.loadedtemplate.LoadedTemplateDao; | |||
import org.sonar.db.measure.MeasureDao; | |||
import org.sonar.db.measure.MeasureFilterDao; | |||
import org.sonar.db.measure.custom.CustomMeasureDao; | |||
import org.sonar.db.metric.MetricDao; | |||
import org.sonar.db.notification.NotificationQueueDao; | |||
import org.sonar.db.permission.PermissionDao; | |||
import org.sonar.db.permission.PermissionTemplateDao; | |||
@@ -109,8 +110,9 @@ public class DbClient { | |||
private final DuplicationDao duplicationDao; | |||
private final NotificationQueueDao notificationQueueDao; | |||
private final CustomMeasureDao customMeasureDao; | |||
private final MetricDao metricDao; | |||
public DbClient(Database database, MyBatis myBatis, Dao ... daos) { | |||
public DbClient(Database database, MyBatis myBatis, Dao... daos) { | |||
this.database = database; | |||
this.myBatis = myBatis; | |||
@@ -159,6 +161,7 @@ public class DbClient { | |||
duplicationDao = getDao(map, DuplicationDao.class); | |||
notificationQueueDao = getDao(map, NotificationQueueDao.class); | |||
customMeasureDao = getDao(map, CustomMeasureDao.class); | |||
metricDao = getDao(map, MetricDao.class); | |||
doOnLoad(map); | |||
} | |||
@@ -343,6 +346,10 @@ public class DbClient { | |||
return customMeasureDao; | |||
} | |||
public MetricDao metricDao() { | |||
return metricDao; | |||
} | |||
protected <K extends Dao> K getDao(Map<Class, Dao> map, Class<K> clazz) { | |||
return (K) map.get(clazz); | |||
} |
@@ -18,7 +18,7 @@ | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.metric.persistence; | |||
package org.sonar.db.metric; | |||
import com.google.common.base.Function; | |||
import com.google.common.base.Predicate; | |||
@@ -37,10 +37,6 @@ import org.apache.ibatis.session.RowBounds; | |||
import org.sonar.db.Dao; | |||
import org.sonar.db.DatabaseUtils; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.db.metric.MetricMapper; | |||
import org.sonar.server.es.SearchOptions; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import static com.google.common.collect.Lists.newArrayList; | |||
@@ -63,7 +59,7 @@ public class MetricDao implements Dao { | |||
public MetricDto selectByKey(DbSession session, String key) { | |||
MetricDto metric = selectNullableByKey(session, key); | |||
if (metric == null) { | |||
throw new NotFoundException(String.format("Metric key '%s' not found", key)); | |||
throw new IllegalStateException(String.format("Metric key '%s' not found", key)); | |||
} | |||
return metric; | |||
} | |||
@@ -72,13 +68,13 @@ public class MetricDao implements Dao { | |||
return mapper(session).selectAllEnabled(); | |||
} | |||
public List<MetricDto> selectEnabled(DbSession session, @Nullable Boolean isCustom, SearchOptions searchOptions) { | |||
public List<MetricDto> selectEnabled(DbSession session, @Nullable Boolean isCustom, int offset, int limit) { | |||
Map<String, Object> properties = Maps.newHashMapWithExpectedSize(1); | |||
if (isCustom != null) { | |||
properties.put("isCustom", isCustom); | |||
} | |||
return mapper(session).selectAllEnabled(properties, new RowBounds(searchOptions.getOffset(), searchOptions.getLimit())); | |||
return mapper(session).selectAllEnabled(properties, new RowBounds(offset, limit)); | |||
} | |||
public int countEnabled(DbSession session, @Nullable Boolean isCustom) { | |||
@@ -107,10 +103,6 @@ public class MetricDao implements Dao { | |||
return mapper(session).selectAvailableCustomMetricsByComponentUuid(projectUuid); | |||
} | |||
public List<MetricDto> selectAvailableCustomMetricsByComponentKey(DbSession session, String projectKey) { | |||
return mapper(session).selectAvailableCustomMetricsByComponentUuid(projectKey); | |||
} | |||
public List<MetricDto> selectByIds(final DbSession session, Set<Integer> idsSet) { | |||
List<Integer> ids = new ArrayList<>(idsSet); | |||
return DatabaseUtils.executeLargeInputs(ids, new Function<List<Integer>, List<MetricDto>>() { | |||
@@ -158,7 +150,7 @@ public class MetricDao implements Dao { | |||
public MetricDto selectById(DbSession session, int id) { | |||
MetricDto metric = mapper(session).selectById(id); | |||
if (metric == null) { | |||
throw new NotFoundException(String.format("Metric id '%d' not found", id)); | |||
throw new IllegalStateException(String.format("Metric id '%d' not found", id)); | |||
} | |||
return metric; | |||
} |
@@ -53,6 +53,4 @@ public interface MetricMapper { | |||
void update(MetricDto metric); | |||
List<MetricDto> selectAvailableCustomMetricsByComponentUuid(String projectUuid); | |||
List<MetricDto> selectAvailableCustomMetricsByComponentKey(String projectKey); | |||
} |
@@ -18,7 +18,7 @@ | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
package org.sonar.server.metric.persistence; | |||
package org.sonar.db.metric; | |||
import org.junit.After; | |||
import org.junit.Before; | |||
@@ -28,8 +28,6 @@ import org.junit.experimental.categories.Category; | |||
import org.sonar.api.utils.System2; | |||
import org.sonar.db.DbSession; | |||
import org.sonar.db.DbTester; | |||
import org.sonar.db.metric.MetricDto; | |||
import org.sonar.server.exceptions.NotFoundException; | |||
import org.sonar.test.DbTests; | |||
import static org.assertj.core.api.Assertions.assertThat; | |||
@@ -83,7 +81,7 @@ public class MetricDaoTest { | |||
assertThat(result.isEnabled()).isFalse(); | |||
} | |||
@Test(expected = NotFoundException.class) | |||
@Test(expected = IllegalStateException.class) | |||
public void get_nullable_by_key() { | |||
dao.selectByKey(session, "unknown"); | |||
} |