]> source.dussan.org Git - sonarqube.git/commitdiff
Generic search engine in order to handle all the ResourceType extensions
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 29 Mar 2012 17:48:56 +0000 (19:48 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 29 Mar 2012 17:49:06 +0000 (19:49 +0200)
sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
sonar-server/src/main/webapp/WEB-INF/app/controllers/search_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/views/search/_autocomplete.html.erb

index 8f2bcb7cd976da4c1f6d3a143ffa80145e3b4a24..a55d5e2c28fcb743387146c9f8dcebe8dfce31ef 100644 (file)
@@ -25,7 +25,9 @@ import org.sonar.api.CoreProperties;
 import org.sonar.api.config.License;
 import org.sonar.api.config.PropertyDefinitions;
 import org.sonar.api.config.Settings;
-import org.sonar.api.platform.*;
+import org.sonar.api.platform.ComponentContainer;
+import org.sonar.api.platform.PluginMetadata;
+import org.sonar.api.platform.PluginRepository;
 import org.sonar.api.profiles.ProfileExporter;
 import org.sonar.api.profiles.ProfileImporter;
 import org.sonar.api.resources.Language;
@@ -78,6 +80,10 @@ public final class JRubyFacade {
     return getContainer().getComponentByType(ResourceTypes.class).getAll(ResourceTypes.AVAILABLE_FOR_FILTERS);
   }
 
+  public Collection<ResourceType> getResourceTypes() {
+    return getContainer().getComponentByType(ResourceTypes.class).getAll();
+  }
+
   public ResourceType getResourceType(String qualifier) {
     return getContainer().getComponentByType(ResourceTypes.class).get(qualifier);
   }
@@ -418,7 +424,7 @@ public final class JRubyFacade {
   public String generateRandomSecretKey() {
     return getContainer().getComponentByType(Settings.class).getEncryption().generateRandomSecretKey();
   }
-  
+
   public License parseLicense(String base64) {
     return License.readBase64(base64);
   }
index 5bc3e0bc9c75afb5e9ea1f323512d61996c406b7..171edc8a637700ea92f84b8f8ecad864e2978de1 100644 (file)
@@ -41,11 +41,11 @@ class SearchController < ApplicationController
     @total = results.size
 
     resource_ids=[]
-    @results_by_qualifier={}
+    @resource_indexes_by_qualifier={}
     results.each do |resource_index|
       qualifier = fix_qualifier(resource_index.qualifier)
-      @results_by_qualifier[qualifier]||=[]
-      array=@results_by_qualifier[qualifier]
+      @resource_indexes_by_qualifier[qualifier]||=[]
+      array=@resource_indexes_by_qualifier[qualifier]
       if array.size<MAX_RESULTS
         resource_ids<<resource_index.resource_id
         array<<resource_index
@@ -54,7 +54,7 @@ class SearchController < ApplicationController
 
     @resources_by_id = {}
     unless resource_ids.empty?
-      Project.find(:all, :conditions => ['id in (?)', resource_ids]).each do |resource|
+      Project.find(:all, :conditions => ['id in (?) and enabled=?', resource_ids, true]).each do |resource|
         @resources_by_id[resource.id]=resource
       end
     end
index 9dce955da7b51ad904303c45942a8eb65f2f323a..39341c87f0e3c37a8f2e216261cef79c3369003c 100644 (file)
@@ -1,15 +1,16 @@
-<% unless @results_by_qualifier.empty? %>
+<% unless @resource_indexes_by_qualifier.empty? %>
   <ul>
     <%
-       Resourceable::QUALIFIERS.each do |qualifier|
-         if @results_by_qualifier[qualifier]
+       controller.java_facade.getResourceTypes().each do |resource_type|
+         resource_indexes = @resource_indexes_by_qualifier[resource_type.getQualifier()]
+         if resource_indexes
            first=true
-           @results_by_qualifier[qualifier].each do |resource_index|
+           resource_indexes.each do |resource_index|
              resource=@resources_by_id[resource_index.resource_id]
              if resource
 %>
         <li id="<%= resource.id -%>">
-          <div class="q"><%= message("qualifiers.#{qualifier}") if first -%></div>
+          <div class="q"><%= message("qualifiers.#{resource.qualifier}") if first -%></div>
           <%= qualifier_icon resource -%> <%= highlight(truncate(resource.name(true), :length => 65), params[:s]) -%>
         </li>
 <%             first=false