summaryrefslogtreecommitdiffstats
path: root/sonar-db
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2016-04-15 22:05:22 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2016-04-15 22:05:22 +0200
commit5c6402aed99c94b5806dc53991ffbdea852ec33f (patch)
tree7c51105b8d124f17b0f98fd35cf19f3ffb72aaec /sonar-db
parent267a66720f000fb81b6b6b395d5366011158f1a5 (diff)
downloadsonarqube-5c6402aed99c94b5806dc53991ffbdea852ec33f.tar.gz
sonarqube-5c6402aed99c94b5806dc53991ffbdea852ec33f.zip
Add ComponentDao#insertBatch() for batch inserts
Diffstat (limited to 'sonar-db')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/component/ComponentDao.java4
-rw-r--r--sonar-db/src/main/java/org/sonar/db/component/ComponentMapper.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/component/ComponentMapper.xml10
-rw-r--r--sonar-db/src/test/java/org/sonar/db/component/ComponentDaoTest.java36
4 files changed, 49 insertions, 3 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/component/ComponentDao.java b/sonar-db/src/main/java/org/sonar/db/component/ComponentDao.java
index ebd4b6e6dad..d58b2c12f0b 100644
--- a/sonar-db/src/main/java/org/sonar/db/component/ComponentDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/component/ComponentDao.java
@@ -278,6 +278,10 @@ public class ComponentDao implements Dao {
mapper(session).insert(item);
}
+ public void insertBatch(DbSession session, ComponentDto item) {
+ mapper(session).insertBatch(item);
+ }
+
public void insert(DbSession session, Collection<ComponentDto> items) {
for (ComponentDto item : items) {
insert(session, item);
diff --git a/sonar-db/src/main/java/org/sonar/db/component/ComponentMapper.java b/sonar-db/src/main/java/org/sonar/db/component/ComponentMapper.java
index ac40231765e..bc5e291c5c7 100644
--- a/sonar-db/src/main/java/org/sonar/db/component/ComponentMapper.java
+++ b/sonar-db/src/main/java/org/sonar/db/component/ComponentMapper.java
@@ -144,6 +144,8 @@ public interface ComponentMapper {
void insert(ComponentDto componentDto);
+ void insertBatch(ComponentDto componentDto);
+
void update(ComponentDto componentDto);
void delete(long componentId);
diff --git a/sonar-db/src/main/resources/org/sonar/db/component/ComponentMapper.xml b/sonar-db/src/main/resources/org/sonar/db/component/ComponentMapper.xml
index d310528ad8a..91641a7a379 100644
--- a/sonar-db/src/main/resources/org/sonar/db/component/ComponentMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/component/ComponentMapper.xml
@@ -484,7 +484,7 @@
</if>
</sql>
- <insert id="insert" parameterType="Component" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
+ <sql id="insertSql">
INSERT INTO projects (kee, deprecated_kee, uuid, project_uuid, module_uuid, module_uuid_path, name, long_name,
qualifier, scope, language, description, root_id, path, copy_resource_id, person_id, enabled,
created_at, authorization_updated_at)
@@ -496,6 +496,14 @@
#{developerId,jdbcType=BIGINT},
#{enabled,jdbcType=BOOLEAN},
#{createdAt,jdbcType=TIMESTAMP}, #{authorizationUpdatedAt,jdbcType=BIGINT})
+ </sql>
+
+ <insert id="insert" parameterType="Component" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
+ <include refid="insertSql"/>
+ </insert>
+
+ <insert id="insertBatch" parameterType="Component" useGeneratedKeys="false">
+ <include refid="insertSql"/>
</insert>
<update id="update" parameterType="Component" useGeneratedKeys="false">
diff --git a/sonar-db/src/test/java/org/sonar/db/component/ComponentDaoTest.java b/sonar-db/src/test/java/org/sonar/db/component/ComponentDaoTest.java
index 8a4de8f8cde..8af397c8ae2 100644
--- a/sonar-db/src/test/java/org/sonar/db/component/ComponentDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/component/ComponentDaoTest.java
@@ -34,7 +34,6 @@ import org.sonar.db.RowNotFoundException;
import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Sets.newHashSet;
-import static java.util.Collections.singleton;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.guava.api.Assertions.assertThat;
@@ -556,7 +555,6 @@ public class ComponentDaoTest {
db.prepareDbUnit(getClass(), "empty.xml");
ComponentDto componentDto = new ComponentDto()
- .setId(1L)
.setUuid("GHIJ")
.setProjectUuid("ABCD")
.setModuleUuid("EFGH")
@@ -585,6 +583,40 @@ public class ComponentDaoTest {
}
@Test
+ public void insertBatch() {
+ try (DbSession batchSession = db.myBatis().openSession(true)) {
+ db.prepareDbUnit(getClass(), "empty.xml");
+
+ ComponentDto componentDto = new ComponentDto()
+ .setUuid("GHIJ")
+ .setProjectUuid("ABCD")
+ .setModuleUuid("EFGH")
+ .setModuleUuidPath(".ABCD.EFGH.")
+ .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+ .setDeprecatedKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+ .setName("RequestContext.java")
+ .setLongName("org.struts.RequestContext")
+ .setQualifier("FIL")
+ .setScope("FIL")
+ .setLanguage("java")
+ .setDescription("description")
+ .setPath("src/org/struts/RequestContext.java")
+ .setParentProjectId(3L)
+ .setCopyResourceId(5L)
+ .setDeveloperId(7L)
+ .setEnabled(true)
+ .setCreatedAt(DateUtils.parseDate("2014-06-18"))
+ .setAuthorizationUpdatedAt(123456789L);
+
+ underTest.insertBatch(batchSession, componentDto);
+ batchSession.commit();
+
+ assertThat(componentDto.getId()).isNull();
+ db.assertDbUnit(getClass(), "insert-result.xml", "projects");
+ }
+ }
+
+ @Test
public void insert_disabled_component() {
db.prepareDbUnit(getClass(), "empty.xml");