aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-12-30 19:20:20 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-12-30 19:20:20 +0100
commitfaea9ba2b320ddbce864c5f3f0c4e29cc477f800 (patch)
treefd42f67e9b563f960aebf362c26921bf82ec9456 /server
parent5fdff45fc6e56b5240e619d296d9975a317b94ea (diff)
downloadsonarqube-faea9ba2b320ddbce864c5f3f0c4e29cc477f800.tar.gz
sonarqube-faea9ba2b320ddbce864c5f3f0c4e29cc477f800.zip
SONAR-5849 Improve the way to get modules tree by using components.moduleUuid
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/batch/ProjectReferentialsLoader.java39
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java5
3 files changed, 23 insertions, 24 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectReferentialsLoader.java b/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectReferentialsLoader.java
index dbff7696929..4579670fe93 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectReferentialsLoader.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/batch/ProjectReferentialsLoader.java
@@ -29,7 +29,6 @@ import org.sonar.api.resources.Languages;
import org.sonar.batch.protocol.input.ProjectReferentials;
import org.sonar.core.UtcDateUtils;
import org.sonar.core.component.ComponentDto;
-import org.sonar.core.component.ProjectRefentialsComponentDto;
import org.sonar.core.permission.GlobalPermissions;
import org.sonar.core.persistence.DbSession;
import org.sonar.core.persistence.MyBatis;
@@ -91,7 +90,7 @@ public class ProjectReferentialsLoader implements ServerComponent {
}
List<PropertyDto> moduleSettings = dbClient.propertiesDao().selectProjectProperties(query.getModuleKey(), session);
- List<ProjectRefentialsComponentDto> moduleChildren = dbClient.componentDao().findChildrenModulesFromModule(session, query.getModuleKey());
+ List<ComponentDto> moduleChildren = dbClient.componentDao().findChildrenModulesFromModule(session, query.getModuleKey());
List<PropertyDto> moduleChildrenSettings = newArrayList();
if (!moduleChildren.isEmpty()) {
moduleChildrenSettings = dbClient.propertiesDao().findChildrenModuleProperties(query.getModuleKey(), session);
@@ -152,7 +151,7 @@ public class ProjectReferentialsLoader implements ServerComponent {
}
}
- private Map<String, String> getPropertiesMap(List<? extends PropertyDto> propertyDtos, boolean hasScanPerm) {
+ private Map<String, String> getPropertiesMap(List<PropertyDto> propertyDtos, boolean hasScanPerm) {
Map<String, String> properties = newHashMap();
for (PropertyDto propertyDto : propertyDtos) {
String key = propertyDto.getKey();
@@ -235,27 +234,31 @@ public class ProjectReferentialsLoader implements ServerComponent {
private static class TreeModuleSettings {
private Map<String, Long> moduleIdsByKey;
+ private Map<String, String> moduleUuidsByKey;
private Multimap<Long, PropertyDto> propertiesByModuleId;
- private Multimap<String, ProjectRefentialsComponentDto> moduleChildrenByModuleKey;
+ private Multimap<String, ComponentDto> moduleChildrenByModuleUuid;
- private TreeModuleSettings(List<ProjectRefentialsComponentDto> moduleChildren, List<PropertyDto> moduleChildrenSettings, ComponentDto module, List<PropertyDto> moduleSettings) {
+ private TreeModuleSettings(List<ComponentDto> moduleChildren, List<PropertyDto> moduleChildrenSettings, ComponentDto module, List<PropertyDto> moduleSettings) {
propertiesByModuleId = ArrayListMultimap.create();
+ moduleIdsByKey = newHashMap();
+ moduleUuidsByKey = newHashMap();
+ moduleChildrenByModuleUuid = ArrayListMultimap.create();
+
for (PropertyDto settings : moduleChildrenSettings) {
propertiesByModuleId.put(settings.getResourceId(), settings);
}
propertiesByModuleId.putAll(module.getId(), moduleSettings);
- moduleIdsByKey = newHashMap();
- for (ProjectRefentialsComponentDto componentDto : moduleChildren) {
- moduleIdsByKey.put(componentDto.key(), componentDto.getId());
- }
+
moduleIdsByKey.put(module.key(), module.getId());
- moduleChildrenByModuleKey = ArrayListMultimap.create();
- for (ProjectRefentialsComponentDto componentDto : moduleChildren) {
- String parentModuleKey = componentDto.getParentModuleKey();
- if (parentModuleKey != null) {
- moduleChildrenByModuleKey.put(parentModuleKey, componentDto);
+ moduleUuidsByKey.put(module.key(), module.uuid());
+ for (ComponentDto componentDto : moduleChildren) {
+ moduleIdsByKey.put(componentDto.key(), componentDto.getId());
+ moduleUuidsByKey.put(componentDto.key(), componentDto.uuid());
+ String moduleUuid = componentDto.moduleUuid();
+ if (moduleUuid != null) {
+ moduleChildrenByModuleUuid.put(moduleUuid, componentDto);
} else {
- moduleChildrenByModuleKey.put(module.key(), componentDto);
+ moduleChildrenByModuleUuid.put(module.uuid(), componentDto);
}
}
}
@@ -265,9 +268,9 @@ public class ProjectReferentialsLoader implements ServerComponent {
return newArrayList(propertiesByModuleId.get(moduleId));
}
- private List<? extends ComponentDto> findChildrenModule(String moduleKey) {
- return newArrayList(moduleChildrenByModuleKey.get(moduleKey));
+ private List<ComponentDto> findChildrenModule(String moduleKey) {
+ String moduleUuid = moduleUuidsByKey.get(moduleKey);
+ return newArrayList(moduleChildrenByModuleUuid.get(moduleUuid));
}
-
}
}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java b/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java
index 69e3ec3dfa8..d6693eae1c7 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java
@@ -24,7 +24,6 @@ import com.google.common.collect.Lists;
import org.sonar.api.ServerComponent;
import org.sonar.api.utils.System2;
import org.sonar.core.component.ComponentDto;
-import org.sonar.core.component.ProjectRefentialsComponentDto;
import org.sonar.core.component.db.ComponentMapper;
import org.sonar.core.persistence.DaoComponent;
import org.sonar.core.persistence.DbSession;
@@ -115,7 +114,7 @@ public class ComponentDao extends BaseDao<ComponentMapper, ComponentDto, String>
return mapper(session).findSubProjectsByComponentUuids(keys);
}
- public List<ProjectRefentialsComponentDto> findChildrenModulesFromModule(DbSession session, String moduleKey) {
+ public List<ComponentDto> findChildrenModulesFromModule(DbSession session, String moduleKey) {
return mapper(session).findChildrenModulesFromModule(moduleKey);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java
index b49a2009645..8e3532cbe8e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java
@@ -27,7 +27,6 @@ import org.junit.Test;
import org.sonar.api.utils.DateUtils;
import org.sonar.api.utils.System2;
import org.sonar.core.component.ComponentDto;
-import org.sonar.core.component.ProjectRefentialsComponentDto;
import org.sonar.core.persistence.AbstractDaoTestCase;
import org.sonar.core.persistence.DbSession;
import org.sonar.server.exceptions.NotFoundException;
@@ -336,16 +335,14 @@ public class ComponentDaoTest extends AbstractDaoTestCase {
setupData("multi-modules");
// From root project
- List<ProjectRefentialsComponentDto> modules = dao.findChildrenModulesFromModule(session, "org.struts:struts");
+ List<ComponentDto> modules = dao.findChildrenModulesFromModule(session, "org.struts:struts");
assertThat(modules).hasSize(2);
assertThat(modules).onProperty("id").containsOnly(2L, 3L);
- assertThat(modules).onProperty("parentModuleKey").containsOnly("org.struts:struts", "org.struts:struts-core");
// From module
modules = dao.findChildrenModulesFromModule(session, "org.struts:struts-core");
assertThat(modules).hasSize(1);
assertThat(modules).onProperty("id").containsOnly(3L);
- assertThat(modules).onProperty("parentModuleKey").containsOnly("org.struts:struts-core");
// From sub module
modules = dao.findChildrenModulesFromModule(session, "org.struts:struts-data");