import org.sonar.db.DbSession;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.SnapshotDto;
-import org.sonar.db.dashboard.ActiveDashboardDao;
-import org.sonar.db.dashboard.DashboardDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.property.PropertyQuery;
import org.sonar.server.ce.ws.ActivityAction;
private static final String PARAM_COMPONENT_KEY = "componentKey";
- private static final String ANONYMOUS = null;
-
private static final String PROPERTY_COMPARABLE = "comparable";
private static final String PROPERTY_CONFIGURABLE = "configurable";
private static final String PROPERTY_HAS_ROLE_POLICY = "hasRolePolicy";
private static final String PROPERTY_DELETABLE = "deletable";
private final DbClient dbClient;
- private final ActiveDashboardDao activeDashboardDao;
private final Views views;
private final I18n i18n;
private final ResourceTypes resourceTypes;
public ComponentNavigationAction(DbClient dbClient, Views views, I18n i18n, ResourceTypes resourceTypes, UserSession userSession,
ComponentFinder componentFinder) {
this.dbClient = dbClient;
- this.activeDashboardDao = dbClient.activeDashboardDao();
this.views = views;
this.i18n = i18n;
this.resourceTypes = resourceTypes;
.prop("canBeFavorite", userSession.isLoggedIn())
.prop("isFavorite", isFavourite(session, component, userSession));
- List<DashboardDto> dashboards = activeDashboardDao.selectProjectDashboardsForUserLogin(session, userSession.getLogin());
- if (dashboards.isEmpty()) {
- dashboards = activeDashboardDao.selectProjectDashboardsForUserLogin(session, ANONYMOUS);
- }
- writeDashboards(json, dashboards);
-
if (analysis != null) {
json.prop("version", analysis.getVersion())
.prop("snapshotDate", DateUtils.formatDateTime(new Date(analysis.getCreatedAt())));
return componentKey;
}
- private static void writeDashboards(JsonWriter json, List<DashboardDto> dashboards) {
- json.name("dashboards").beginArray();
- for (DashboardDto dashboard : dashboards) {
- json.beginObject()
- .prop("key", dashboard.getId())
- .prop("name", dashboard.getName())
- .endObject();
- }
- json.endArray();
- }
-
private void writeConfiguration(JsonWriter json, ComponentDto component, UserSession userSession) {
boolean isAdmin = userSession.hasComponentUuidPermission(UserRole.ADMIN, component.projectUuid());
Locale locale = userSession.locale();
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.component.SnapshotDto;
import org.sonar.db.component.SnapshotTesting;
-import org.sonar.db.dashboard.ActiveDashboardDto;
-import org.sonar.db.dashboard.DashboardDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.server.component.ComponentFinder;
import org.sonar.server.exceptions.ForbiddenException;
wsTester.newGetRequest("api/navigation", "component").setParam("componentKey", "polop").execute().assertJson(getClass(), "with_snapshot_and_connected_user.json");
}
- @Test
- public void with_dashboards() throws Exception {
- dbClient.componentDao().insert(dbTester.getSession(), ComponentTesting.newProjectDto("abcd")
- .setKey("polop").setName("Polop"));
- DashboardDto dashboard = new DashboardDto().setGlobal(false).setName("Anon Dashboard").setShared(true).setColumnLayout("100%");
- dbClient.dashboardDao().insert(dashboard);
- dbClient.activeDashboardDao().insert(new ActiveDashboardDto().setDashboardId(dashboard.getId()));
- dbTester.getSession().commit();
-
- userSessionRule.addProjectUuidPermissions(UserRole.USER, "abcd");
-
- WsTester wsTester = newdWsTester();
- wsTester.newGetRequest("api/navigation", "component").setParam("componentKey", "polop").execute().assertJson(getClass(), "with_dashboards.json");
- }
-
- @Test
- public void with_default_dashboards() throws Exception {
- dbClient.componentDao().insert(dbTester.getSession(), ComponentTesting.newProjectDto("abcd")
- .setKey("polop").setName("Polop"));
- DashboardDto dashboard = new DashboardDto().setGlobal(false).setName("Anon Dashboard").setShared(true).setColumnLayout("100%");
- dbClient.dashboardDao().insert(dashboard);
- dbClient.activeDashboardDao().insert(new ActiveDashboardDto().setDashboardId(dashboard.getId()));
- dbTester.getSession().commit();
-
- userSessionRule.login("obiwan").addProjectUuidPermissions(UserRole.USER, "abcd");
-
- WsTester wsTester = newdWsTester();
- wsTester.newGetRequest("api/navigation", "component").setParam("componentKey", "polop").execute().assertJson(getClass(), "with_default_dashboards.json");
- }
-
@Test
public void with_extensions() throws Exception {
ComponentDto project = ComponentTesting.newProjectDto("abcd")