From 5c6402aed99c94b5806dc53991ffbdea852ec33f Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 15 Apr 2016 22:05:22 +0200 Subject: [PATCH] Add ComponentDao#insertBatch() for batch inserts --- .../org/sonar/db/component/ComponentDao.java | 4 +++ .../sonar/db/component/ComponentMapper.java | 2 ++ .../sonar/db/component/ComponentMapper.xml | 10 +++++- .../sonar/db/component/ComponentDaoTest.java | 36 +++++++++++++++++-- 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 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 @@ - + 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}) + + + + + + + + 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") @@ -584,6 +582,40 @@ public class ComponentDaoTest { db.assertDbUnit(getClass(), "insert-result.xml", "projects"); } + @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"); -- 2.39.5