From 6c64694189d6997672892782c99a988db97650e3 Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Mon, 19 Mar 2012 11:30:55 +0100 Subject: [PATCH] SONAR-2977 Setting a profile to default via the API doesn't work --- .../startup/ActivateDefaultProfiles.java | 23 ++++++++++++------- .../startup/RegisterProvidedProfiles.java | 16 ++++++------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java index 3d63834ca61..f597ee3214b 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/ActivateDefaultProfiles.java @@ -52,12 +52,12 @@ public final class ActivateDefaultProfiles { RulesProfile profileToActivate = null; boolean oneProfileIsActivated = false; if (profiles.isEmpty()) { - profileToActivate = new RulesProfile("Default " + language.getName(), language.getKey(), true, false); - + profileToActivate = RulesProfile.create("Default " + language.getName(), language.getKey()); + profileToActivate.setDefaultProfile(true); + profileToActivate.setProvided(false); } else if (profiles.size() == 1) { profileToActivate = profiles.get(0); - - } else { + } else if (!activeProfileFoundInDB(profiles)) { Iterator iterator = profiles.iterator(); while (iterator.hasNext() && !oneProfileIsActivated) { RulesProfile profile = iterator.next(); @@ -66,10 +66,8 @@ public final class ActivateDefaultProfiles { profileToActivate = profile; } } - if (!oneProfileIsActivated) { - if (profileToActivate == null) { - profileToActivate = profiles.get(0); - } + if (!oneProfileIsActivated && profileToActivate == null) { + profileToActivate = profiles.get(0); } } if (!oneProfileIsActivated && profileToActivate != null) { @@ -77,4 +75,13 @@ public final class ActivateDefaultProfiles { session.saveWithoutFlush(profileToActivate); } } + + private boolean activeProfileFoundInDB(List profiles) { + for (RulesProfile rulesProfile : profiles) { + if (rulesProfile.getDefaultProfile()) { + return true; + } + } + return false; + } } diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java index 89aeded16e8..7ed797f2ead 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java @@ -108,7 +108,7 @@ public final class RegisterProvidedProfiles { void saveProvidedProfiles(List profiles, DatabaseSession session) { for (RulesProfile profile : profiles) { TimeProfiler profiler = new TimeProfiler().start("Save profile " + profile); - RulesProfile persistedProfile = findOrCreate(profile.getName(), profile.getLanguage(), session); + RulesProfile persistedProfile = findOrCreate(profile, session); for (ActiveRule activeRule : profile.getActiveRules()) { Rule rule = getPersistedRule(activeRule); @@ -140,14 +140,14 @@ public final class RegisterProvidedProfiles { return rule; } - private RulesProfile findOrCreate(String name, String language, DatabaseSession session) { - RulesProfile profile = session.getSingleResult(RulesProfile.class, "name", name, "language", language); - if (profile == null) { - profile = RulesProfile.create(name, language); - profile.setProvided(true); - profile.setDefaultProfile(false); + private RulesProfile findOrCreate(RulesProfile profile, DatabaseSession session) { + RulesProfile persistedProfile = session.getSingleResult(RulesProfile.class, "name", profile.getName(), "language", profile.getLanguage()); + if (persistedProfile == null) { + persistedProfile = RulesProfile.create(profile.getName(), profile.getLanguage()); + persistedProfile.setDefaultProfile(profile.getDefaultProfile()); + persistedProfile.setProvided(true); } - return profile; + return persistedProfile; } } -- 2.39.5