From f0fa06b6f52c87002e186a054b0ca7e41a04913f Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Wed, 14 Dec 2011 18:17:47 +0100 Subject: [PATCH] SONAR-1929 Improve the Dashboard template API Use of enum instead of simple String constants. --- .../core/dashboards/HotspotsDashboard.java | 4 +-- .../core/dashboards/SonarMainDashboard.java | 4 +-- .../sonar/api/web/dashboard/Dashboard.java | 10 +++---- ...boardLayouts.java => DashboardLayout.java} | 26 ++++++++++++------- .../api/web/dashboard/DashboardTest.java | 10 +++---- .../sonar/api/web/dashboard/WidgetTest.java | 2 +- .../startup/RegisterProvidedDashboards.java | 4 +-- .../RegisterProvidedDashboardsTest.java | 5 ++-- 8 files changed, 37 insertions(+), 28 deletions(-) rename sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/{DashboardLayouts.java => DashboardLayout.java} (78%) diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/HotspotsDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/HotspotsDashboard.java index f2dc9072cf1..9879dac74ec 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/HotspotsDashboard.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/HotspotsDashboard.java @@ -20,7 +20,7 @@ package org.sonar.plugins.core.dashboards; import org.sonar.api.web.dashboard.Dashboard; -import org.sonar.api.web.dashboard.DashboardLayouts; +import org.sonar.api.web.dashboard.DashboardLayout; import org.sonar.api.web.dashboard.DashboardTemplate; import org.sonar.api.web.dashboard.Widget; @@ -35,7 +35,7 @@ public class HotspotsDashboard extends DashboardTemplate { @Override public org.sonar.api.web.dashboard.Dashboard createDashboard() { - Dashboard dashboard = Dashboard.createDashboard("sonar-hotspots", "Hotspots", DashboardLayouts.TWO_COLUMNS); + Dashboard dashboard = Dashboard.createDashboard("sonar-hotspots", "Hotspots", DashboardLayout.TWO_COLUMNS); Widget widget = dashboard.addWidget("hotspot_most_violated_rules", 1, 1); diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/SonarMainDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/SonarMainDashboard.java index 8b81c8b747e..ac7f07103cd 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/SonarMainDashboard.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/SonarMainDashboard.java @@ -20,7 +20,7 @@ package org.sonar.plugins.core.dashboards; import org.sonar.api.web.dashboard.Dashboard; -import org.sonar.api.web.dashboard.DashboardLayouts; +import org.sonar.api.web.dashboard.DashboardLayout; import org.sonar.api.web.dashboard.DashboardTemplate; /** @@ -30,7 +30,7 @@ public class SonarMainDashboard extends DashboardTemplate { @Override public org.sonar.api.web.dashboard.Dashboard createDashboard() { - Dashboard dashboard = Dashboard.createDashboard("sonar-main", "Dashboard", DashboardLayouts.TWO_COLUMNS); + Dashboard dashboard = Dashboard.createDashboard("sonar-main", "Dashboard", DashboardLayout.TWO_COLUMNS); dashboard.addWidget("size", 1, 1); dashboard.addWidget("comments_duplications", 1, 2); dashboard.addWidget("complexity", 1, 3); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/Dashboard.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/Dashboard.java index 4843418eb04..1396b1a22fa 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/Dashboard.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/Dashboard.java @@ -37,7 +37,7 @@ public final class Dashboard { private String id; private String name; private String description; - private String layout; + private DashboardLayout layout; private Collection widgets; private Dashboard() { @@ -45,7 +45,7 @@ public final class Dashboard { } /** - * Creates a new {@link Dashboard}. See {@link DashboardLayouts} for the layout parameter. + * Creates a new {@link Dashboard}. See {@link DashboardLayout} for the layout parameter. * * @param id * the id @@ -54,7 +54,7 @@ public final class Dashboard { * @param layout * the layout */ - public static Dashboard createDashboard(String id, String name, String layout) { + public static Dashboard createDashboard(String id, String name, DashboardLayout layout) { Dashboard dashboard = new Dashboard(); dashboard.setId(id); dashboard.setName(name); @@ -149,7 +149,7 @@ public final class Dashboard { * * @return the layout */ - public String getLayout() { + public DashboardLayout getLayout() { return layout; } @@ -157,7 +157,7 @@ public final class Dashboard { * @param layout * the layout to set */ - private void setLayout(String layout) { + private void setLayout(DashboardLayout layout) { this.layout = layout; } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayouts.java b/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayout.java similarity index 78% rename from sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayouts.java rename to sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayout.java index 186a16f5b4c..02d83565008 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayouts.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/web/dashboard/DashboardLayout.java @@ -24,34 +24,42 @@ package org.sonar.api.web.dashboard; * * @since 2.13 */ -public final class DashboardLayouts { - - private DashboardLayouts() { - } +public enum DashboardLayout { /** * Only 1 column that take all the page */ - public static final String ONE_COLUMN = "100%"; + ONE_COLUMN("100%"), /** * 2 columns of the same width */ - public static final String TWO_COLUMNS = "50%-50%"; + TWO_COLUMNS("50%-50%"), /** * 2 columns with the first one smaller than the second */ - public static final String TWO_COLUMNS_30_70 = "30%-70%"; + TWO_COLUMNS_30_70("30%-70%"), /** * 2 columns with the first one bigger than the second */ - public static final String TWO_COLUMNS_70_30 = "70%-30%"; + TWO_COLUMNS_70_30("70%-30%"), /** * 3 columns of the same width */ - public static final String TREE_COLUMNS = "33%-33%-33%"; + TREE_COLUMNS("33%-33%-33%"); + + private String layout; + + private DashboardLayout(String layout) { + this.layout = layout; + } + + @Override + public String toString() { + return layout; + } } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/DashboardTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/DashboardTest.java index bcac4887a06..6c60e47be21 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/DashboardTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/DashboardTest.java @@ -31,10 +31,10 @@ public class DashboardTest { @Test public void shouldCreateDashboardAndWidget() throws Exception { - Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", "30%-70%"); + Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", DashboardLayout.TWO_COLUMNS_30_70); assertThat(dashboard.getId(), is("fake-dashboard")); assertThat(dashboard.getName(), is("Fake")); - assertThat(dashboard.getLayout(), is("30%-70%")); + assertThat(dashboard.getLayout(), is(DashboardLayout.TWO_COLUMNS_30_70)); assertThat(dashboard.getDescription(), is("")); Widget widget = dashboard.addWidget("fake-widget", 12, 13); @@ -52,11 +52,11 @@ public class DashboardTest { @Test public void shouldAddWidget() throws Exception { - Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", "30%-70%"); + Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", DashboardLayout.TWO_COLUMNS_30_70); dashboard.addWidget("fake-widget", 12, 13); - + Widget widget = dashboard.getWidgets().iterator().next(); - + assertThat(widget.getId(), is("fake-widget")); assertThat(widget.getColumnIndex(), is(12)); assertThat(widget.getRowIndex(), is(13)); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/WidgetTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/WidgetTest.java index 199d83cd9ef..2d6fe2fc41b 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/WidgetTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/web/dashboard/WidgetTest.java @@ -31,7 +31,7 @@ public class WidgetTest { @Test public void shouldCreateWidgetWithProperties() throws Exception { - Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", "30%-70%"); + Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", DashboardLayout.TWO_COLUMNS_30_70); Widget widget = dashboard.addWidget("fake-widget", 12, 13); assertThat(widget.getId(), is("fake-widget")); assertThat(widget.getColumnIndex(), is(12)); diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedDashboards.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedDashboards.java index 96cb9f7fa50..afe2d447b45 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedDashboards.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedDashboards.java @@ -37,8 +37,8 @@ import org.sonar.core.i18n.I18nManager; import org.sonar.persistence.dashboard.ActiveDashboardDao; import org.sonar.persistence.dashboard.ActiveDashboardDto; import org.sonar.persistence.dashboard.DashboardDao; -import org.sonar.persistence.template.LoadedTemplateDto; import org.sonar.persistence.template.LoadedTemplateDao; +import org.sonar.persistence.template.LoadedTemplateDto; import com.google.common.collect.Lists; @@ -128,7 +128,7 @@ public final class RegisterProvidedDashboards { dashboardDataModel.setKey(dashboard.getId()); dashboardDataModel.setName(i18nManager.message(Locale.ENGLISH, "dashboard." + dashboard.getId() + ".name", dashboard.getName())); dashboardDataModel.setDescription(dashboard.getDescription()); - dashboardDataModel.setColumnLayout(dashboard.getLayout()); + dashboardDataModel.setColumnLayout(dashboard.getLayout().toString()); dashboardDataModel.setShared(true); dashboardDataModel.setCreatedAt(now); dashboardDataModel.setUpdatedAt(now); diff --git a/sonar-server/src/test/java/org/sonar/server/startup/RegisterProvidedDashboardsTest.java b/sonar-server/src/test/java/org/sonar/server/startup/RegisterProvidedDashboardsTest.java index 52919c27447..a7815f16e51 100644 --- a/sonar-server/src/test/java/org/sonar/server/startup/RegisterProvidedDashboardsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/startup/RegisterProvidedDashboardsTest.java @@ -37,14 +37,15 @@ import java.util.Locale; import org.junit.Before; import org.junit.Test; import org.sonar.api.web.dashboard.Dashboard; +import org.sonar.api.web.dashboard.DashboardLayout; import org.sonar.api.web.dashboard.DashboardTemplate; import org.sonar.core.i18n.I18nManager; import org.sonar.persistence.dashboard.ActiveDashboardDao; import org.sonar.persistence.dashboard.ActiveDashboardDto; import org.sonar.persistence.dashboard.DashboardDao; import org.sonar.persistence.dashboard.WidgetDto; -import org.sonar.persistence.template.LoadedTemplateDto; import org.sonar.persistence.template.LoadedTemplateDao; +import org.sonar.persistence.template.LoadedTemplateDto; import com.google.common.collect.Lists; @@ -190,7 +191,7 @@ public class RegisterProvidedDashboardsTest { @Override public Dashboard createDashboard() { - Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", "30%-70%"); + Dashboard dashboard = Dashboard.createDashboard("fake-dashboard", "Fake", DashboardLayout.TWO_COLUMNS_30_70); org.sonar.api.web.dashboard.Widget widget = dashboard.addWidget("fake-widget", 12, 13); widget.addProperty("fake-property", "fake_metric"); return dashboard; -- 2.39.5