]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3510 Select a view or a developer when adding a widget to a global dashboard
authorDavid Gageot <david@gageot.net>
Thu, 12 Jul 2012 14:13:15 +0000 (16:13 +0200)
committerDavid Gageot <david@gageot.net>
Thu, 12 Jul 2012 15:21:01 +0000 (17:21 +0200)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/DefaultResourceTypes.java
plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/DefaultResourceTypesTest.java
sonar-server/src/main/webapp/WEB-INF/app/helpers/widget_properties_helper.rb

index a05b3e65ef800842d5e1120ca5cacad43685071f..e2b9328d31fcf0a2d7d7decb3bd408ce8bb8a62e 100644 (file)
@@ -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();
   }
-
 }
index 9bf732c734cb0dc79d5a3d65cf01917ef817b154..55b41931402819fb9def1f481d916a9ab94fabce 100644 (file)
  */
 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();
   }
 }
index dd53bcf1c5547a0087be3840548c07ebd44cbba4..d19fe7761143903d7f14297c1bf3d18a61a55a4a 100644 (file)
@@ -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