From 238334f4b4a9cbf9b4c1384e185082937548c058 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 12 Jul 2012 10:06:55 +0200 Subject: [PATCH] Add ResourceDao#getResource(ResourceQuery query) --- .../java/org/sonar/core/resource/ResourceDao.java | 14 +++++++++++++- .../org/sonar/core/resource/ResourceDaoTest.java | 7 +++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/resource/ResourceDao.java b/sonar-core/src/main/java/org/sonar/core/resource/ResourceDao.java index 260b4abcb7e..58763fb621e 100644 --- a/sonar-core/src/main/java/org/sonar/core/resource/ResourceDao.java +++ b/sonar-core/src/main/java/org/sonar/core/resource/ResourceDao.java @@ -41,6 +41,18 @@ public class ResourceDao { } } + /** + * Return a single result or null. If the request returns multiple rows, then + * the first row is returned. + */ + public ResourceDto getResource(ResourceQuery query) { + List resources = getResources(query); + if (!resources.isEmpty()) { + return resources.get(0); + } + return null; + } + public List getResourceIds(ResourceQuery query) { SqlSession session = mybatis.openSession(); try { @@ -92,7 +104,7 @@ public class ResourceDao { ResourceMapper mapper = session.getMapper(ResourceMapper.class); try { for (ResourceDto resource : resources) { - if (resource.getId()==null) { + if (resource.getId() == null) { mapper.insert(resource); } else { mapper.update(resource); diff --git a/sonar-core/src/test/java/org/sonar/core/resource/ResourceDaoTest.java b/sonar-core/src/test/java/org/sonar/core/resource/ResourceDaoTest.java index 9899b31cd2f..f33b4f30a9a 100644 --- a/sonar-core/src/test/java/org/sonar/core/resource/ResourceDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/resource/ResourceDaoTest.java @@ -57,7 +57,7 @@ public class ResourceDaoTest extends AbstractDaoTestCase { } @Test - public void getResource() { + public void get_resource_by_id() { setupData("fixture"); ResourceDto resource = dao.getResource(1L); @@ -104,9 +104,12 @@ public class ResourceDaoTest extends AbstractDaoTestCase { public void getResources_filter_by_key() { setupData("fixture"); - List resources = dao.getResources(ResourceQuery.create().setKey("org.struts:struts-core")); + ResourceQuery query = ResourceQuery.create().setKey("org.struts:struts-core"); + List resources = dao.getResources(query); assertThat(resources).hasSize(1); assertThat(resources.get(0).getKey()).isEqualTo("org.struts:struts-core"); + + assertThat(dao.getResource(query).getKey()).isEqualTo("org.struts:struts-core"); } @Test -- 2.39.5