import com.google.common.collect.Lists;
import org.picocontainer.Startable;
import org.sonar.api.utils.System2;
+import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import org.sonar.core.dashboard.DashboardDto;
import org.sonar.core.dashboard.WidgetDto;
public class RenameIssueWidgets implements Startable {
+ private static final Logger LOGGER = Loggers.get(RenameIssueWidgets.class);
+
private static final String TASK_KEY = "RenameIssueWidgets";
private static final String WIDGET_FALSE_POSITIVES = "false_positive_reviews";
WIDGET_UNRESOLVED_BY_STATUS, "statuses"
);
- Loggers.get(getClass()).info("Replacing issue related widgets with issue filter widgets");
+ LOGGER.info("Replacing issue related widgets with issue filter widgets");
List<Long> updatedWidgetIds = Lists.newArrayList();
List<WidgetPropertyDto> newWidgetProperties = Lists.newArrayList();
private String getReplacementWidgetKey(DbSession session, WidgetDto widget) {
DashboardDto dashboard = dbClient.dashboardDao().getNullableByKey(session, widget.getDashboardId());
+ if (dashboard == null) {
+ LOGGER.warn(String.format("Widget with ID=%d is not displayed on any dashboard, updating nevertheless", widget.getId()));
+ }
boolean isOnGlobalDashboard = dashboard != null && dashboard.getGlobal();
return isOnGlobalDashboard && widget.getResourceId() == null ? WIDGET_ISSUE_FILTER : WIDGET_PROJECT_ISSUE_FILTER;
<widget_properties id="10" widget_id="5" kee="distributionAxis" text_value="statuses"/>
+ <!-- 'Unresolved Issues Per Status' - dashboard not found, still replaced by issue_filter w/ 'Unresolved Issues' filter -->
+ <widgets id="6" dashboard_id="3" widget_key="project_issue_filter" name="[null]" description="[null]"
+ column_index="1" row_index="1" configured="[true]" created_at="[null]" updated_at="2003-03-23 01:23:45" resource_id="[null]"/>
+
+ <!-- filter = 'Unresolved Issues' -->
+ <widget_properties id="11" widget_id="6" kee="filter" text_value="1"/>
+ <!-- distributionAxis is 'assignees' -->
+ <widget_properties id="12" widget_id="6" kee="distributionAxis" text_value="statuses"/>
+
+
<loaded_templates id="1" template_type="ONE_SHOT_TASK" kee="RenameIssueWidgets"/>
</dataset>
<widgets id="5" dashboard_id="2" widget_key="unresolved_issues_statuses" name="[null]" description="[null]"
column_index="1" row_index="5" configured="[true]" created_at="[null]" updated_at="[null]" resource_id="[null]"/>
+ <!-- 'Unresolved Issues Per Status' - dashboard not found, still replaced by issue_filter w/ 'Unresolved Issues' filter -->
+ <widgets id="6" dashboard_id="3" widget_key="unresolved_issues_statuses" name="[null]" description="[null]"
+ column_index="1" row_index="1" configured="[true]" created_at="[null]" updated_at="[null]" resource_id="[null]"/>
+
</dataset>