]> source.dussan.org Git - sonarqube.git/commitdiff
Revert removal of some code still used by jruby
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 13 Sep 2016 16:27:55 +0000 (18:27 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Tue, 13 Sep 2016 16:29:35 +0000 (18:29 +0200)
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java

index d6b69f64ce7b1c0f6f90a0bcc75704275a37a7af..73a538414073b961d682bced371c326f8a6a1388 100644 (file)
  */
 package org.sonar.server.qualityprofile;
 
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import org.sonar.api.server.ServerSide;
 import org.sonar.core.permission.GlobalPermissions;
@@ -39,17 +44,21 @@ public class QProfileService {
   private final ActiveRuleIndexer activeRuleIndexer;
   private final RuleActivator ruleActivator;
   private final QProfileFactory factory;
+  private final QProfileBackuper backuper;
+  private final QProfileCopier copier;
   private final QProfileReset reset;
   private final QProfileExporters exporters;
   private final UserSession userSession;
 
   public QProfileService(DbClient db, ActiveRuleIndexer activeRuleIndexer, RuleActivator ruleActivator, QProfileFactory factory,
-    QProfileReset reset, QProfileExporters exporters,
+    QProfileBackuper backuper, QProfileCopier copier, QProfileReset reset, QProfileExporters exporters,
     UserSession userSession) {
     this.db = db;
     this.activeRuleIndexer = activeRuleIndexer;
     this.ruleActivator = ruleActivator;
     this.factory = factory;
+    this.backuper = backuper;
+    this.copier = copier;
     this.reset = reset;
     this.exporters = exporters;
     this.userSession = userSession;
@@ -111,11 +120,72 @@ public class QProfileService {
     return ruleActivator.bulkDeactivate(ruleQuery, profile);
   }
 
+  public void backup(String profileKey, Writer writer) {
+    // Allowed to non-admin users (see http://jira.sonarsource.com/browse/SONAR-2039)
+    backuper.backup(profileKey, writer);
+  }
+
+  /**
+   * @deprecated used only by Ruby on Rails. Use {@link #backup(String, java.io.Writer)}
+   */
+  @Deprecated
+  public String backup(String profileKey) {
+    StringWriter output = new StringWriter();
+    backup(profileKey, output);
+    return output.toString();
+  }
+
+  public void restore(Reader backup) {
+    verifyAdminPermission();
+    backuper.restore(backup, null);
+  }
+
+  /**
+   * @deprecated used only by Ruby on Rails. Use {@link #restore(java.io.Reader)}
+   */
+  @Deprecated
+  public void restore(String backup) {
+    restore(new StringReader(backup));
+  }
+
   public void restoreBuiltInProfilesForLanguage(String lang) {
     verifyAdminPermission();
     reset.resetLanguage(lang);
   }
 
+  public void delete(String key) {
+    verifyAdminPermission();
+    DbSession session = db.openSession(false);
+    try {
+      List<ActiveRuleChange> changes = factory.delete(session, key, false);
+      session.commit();
+      activeRuleIndexer.index(changes);
+    } finally {
+      db.closeSession(session);
+    }
+  }
+
+  public void rename(String key, String newName) {
+    verifyAdminPermission();
+    factory.rename(key, newName);
+  }
+
+  /**
+   * Set the given quality profile as default for the related language
+   */
+  public void setDefault(String key) {
+    verifyAdminPermission();
+    factory.setDefault(key);
+  }
+
+  /**
+   * Used in /api/profiles and in /profiles/export
+   */
+  @CheckForNull
+  public QualityProfileDto getDefault(String language) {
+    return factory.getDefault(language);
+  }
+
   private void verifyAdminPermission() {
     userSession.checkLoggedIn();
     userSession.checkPermission(GlobalPermissions.QUALITY_PROFILE_ADMIN);