From b5f52d01f06c94bd179e6eba6c86180199734735 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Thu, 12 Jul 2012 16:13:15 +0200 Subject: [PATCH] SONAR-3510 Select a view or a developer when adding a widget to a global dashboard --- .../plugins/core/DefaultResourceTypes.java | 47 +++++++++---------- .../core/DefaultResourceTypesTest.java | 24 +++++++--- .../app/helpers/widget_properties_helper.rb | 16 +++++-- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/DefaultResourceTypes.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/DefaultResourceTypes.java index a05b3e65ef8..e2b9328d31f 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/DefaultResourceTypes.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/DefaultResourceTypes.java @@ -29,33 +29,30 @@ import org.sonar.api.resources.ResourceTypeTree; @InstantiationStrategy(InstantiationStrategy.PER_BATCH) public final class DefaultResourceTypes extends ExtensionProvider implements BatchExtension, ServerExtension { - @Override public ResourceTypeTree provide() { return ResourceTypeTree.builder() - - .addType(ResourceType.builder(Qualifiers.PROJECT) - .setProperty("deletable", true) - .setProperty("modifiable_history", true) - .setProperty("hasRolePolicy", true) - .setProperty("updatable_key", true) - .build()) - .addType(ResourceType.builder(Qualifiers.MODULE) - .setProperty("updatable_key", true) - .build()) - .addType(ResourceType.builder(Qualifiers.DIRECTORY).build()) - .addType(ResourceType.builder(Qualifiers.PACKAGE).build()) - .addType(ResourceType.builder(Qualifiers.FILE).hasSourceCode().build()) - .addType(ResourceType.builder(Qualifiers.CLASS).hasSourceCode().build()) - .addType(ResourceType.builder(Qualifiers.UNIT_TEST_FILE).hasSourceCode().build()) - - .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE) - .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY, Qualifiers.PACKAGE) - .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE) - .addRelations(Qualifiers.PACKAGE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE) - - .build(); - + .addType(ResourceType.builder(Qualifiers.PROJECT) + .setProperty("deletable", true) + .setProperty("supportsGlobalDashboards", true) + .setProperty("modifiable_history", true) + .setProperty("hasRolePolicy", true) + .setProperty("updatable_key", true) + .build()) + .addType(ResourceType.builder(Qualifiers.MODULE) + .setProperty("updatable_key", true) + .build()) + .addType(ResourceType.builder(Qualifiers.DIRECTORY).build()) + .addType(ResourceType.builder(Qualifiers.PACKAGE).build()) + .addType(ResourceType.builder(Qualifiers.FILE).hasSourceCode().build()) + .addType(ResourceType.builder(Qualifiers.CLASS).hasSourceCode().build()) + .addType(ResourceType.builder(Qualifiers.UNIT_TEST_FILE).hasSourceCode().build()) + + .addRelations(Qualifiers.PROJECT, Qualifiers.MODULE) + .addRelations(Qualifiers.MODULE, Qualifiers.DIRECTORY, Qualifiers.PACKAGE) + .addRelations(Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.UNIT_TEST_FILE) + .addRelations(Qualifiers.PACKAGE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE) + + .build(); } - } diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/DefaultResourceTypesTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/DefaultResourceTypesTest.java index 9bf732c734c..55b41931402 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/DefaultResourceTypesTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/DefaultResourceTypesTest.java @@ -19,20 +19,30 @@ */ package org.sonar.plugins.core; +import org.sonar.api.resources.ResourceType; + import org.junit.Test; import org.sonar.api.resources.Qualifiers; import org.sonar.api.resources.ResourceTypeTree; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; -import static org.junit.internal.matchers.IsCollectionContaining.hasItem; +import static org.fest.assertions.Assertions.assertThat; public class DefaultResourceTypesTest { @Test - public void provide() { + public void should_provide() { + ResourceTypeTree tree = new DefaultResourceTypes().provide(); + + assertThat(tree.getTypes()).hasSize(7); + assertThat(tree.getChildren(Qualifiers.PROJECT)).containsExactly(Qualifiers.MODULE); + } + + @Test + public void projects_should_be_available_for_global_widgets() { ResourceTypeTree tree = new DefaultResourceTypes().provide(); - assertThat(tree.getTypes().size(), is(7)); - assertThat(tree.getChildren(Qualifiers.PROJECT).size(), is(1)); - assertThat(tree.getChildren(Qualifiers.PROJECT), hasItem(Qualifiers.MODULE)); + + ResourceType projectResourceType = tree.getTypes().get(0); + + assertThat(projectResourceType.getQualifier()).isEqualTo(Qualifiers.PROJECT); + assertThat(projectResourceType.getBooleanProperty("supportsGlobalDashboards")).isTrue(); } } diff --git a/sonar-server/src/main/webapp/WEB-INF/app/helpers/widget_properties_helper.rb b/sonar-server/src/main/webapp/WEB-INF/app/helpers/widget_properties_helper.rb index dd53bcf1c55..d19fe776114 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/helpers/widget_properties_helper.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/helpers/widget_properties_helper.rb @@ -25,10 +25,20 @@ module WidgetPropertiesHelper end def resource_value_field(value) - projects = Project.all(:conditions => {:scope => 'PRJ', :qualifier => 'TRK', :enabled => true}) - sorted_projects = Api::Utils.insensitive_sort(projects, &:name) + combo = '' - select_tag 'resource_id', options_id(value, sorted_projects) + visible_qualifiers=Java::OrgSonarServerUi::JRubyFacade.getInstance().getQualifiersWithProperty('supportsGlobalDashboards') + + visible_qualifiers.each do |qualifier| + projects = Project.all(:conditions => {:qualifier => qualifier, :enabled => true}) + + unless projects.nil? || projects.empty? + sorted_projects = Api::Utils.insensitive_sort(projects, &:name) + combo += option_group(message('qualifiers.' + qualifier), options_id(value, sorted_projects)) + end + end + + select_tag 'resource_id', combo end end -- 2.39.5