001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2012 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * Sonar is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.server.ui; 021 022 import org.sonar.api.measures.CoreMetrics; 023 import org.sonar.api.resources.Qualifiers; 024 import org.sonar.api.web.*; 025 026 /** 027 * @since 2.7 028 */ 029 public final class DefaultPages { 030 031 private static final View[] PAGES = {new SourceTab(), new CoverageTab(), new ViolationsTab(), new DuplicationsTab()}; 032 033 private DefaultPages() { 034 } 035 036 public static View[] getPages() { 037 return PAGES.clone(); 038 } 039 040 // should be qualifier FILE only but waiting for java refactoring 041 @NavigationSection(NavigationSection.RESOURCE_TAB) 042 @DefaultTab 043 @ResourceQualifier({Qualifiers.FILE, Qualifiers.CLASS, Qualifiers.UNIT_TEST_FILE}) 044 @UserRole(UserRole.CODEVIEWER) 045 private static final class SourceTab implements RubyRailsPage { 046 public String getTemplate() { 047 //not used, hardcoded in BrowseController 048 return "browse/index"; 049 } 050 051 public String getId() { 052 return "source"; 053 } 054 055 public String getTitle() { 056 return "Source"; 057 } 058 } 059 060 061 @NavigationSection(NavigationSection.RESOURCE_TAB) 062 @ResourceQualifier({Qualifiers.FILE, Qualifiers.CLASS}) 063 @DefaultTab(metrics = { 064 /* unit tests */ 065 CoreMetrics.COVERAGE_KEY, CoreMetrics.LINES_TO_COVER_KEY, CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.LINE_COVERAGE_KEY, 066 CoreMetrics.CONDITIONS_TO_COVER_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY, CoreMetrics.BRANCH_COVERAGE_KEY, 067 CoreMetrics.NEW_COVERAGE_KEY, CoreMetrics.NEW_UNCOVERED_LINES_KEY, CoreMetrics.NEW_LINE_COVERAGE_KEY, 068 CoreMetrics.NEW_LINES_TO_COVER_KEY, CoreMetrics.NEW_BRANCH_COVERAGE_KEY, CoreMetrics.NEW_CONDITIONS_TO_COVER_KEY, CoreMetrics.NEW_UNCOVERED_CONDITIONS_KEY, 069 070 /* integration tests */ 071 CoreMetrics.IT_COVERAGE_KEY, CoreMetrics.IT_LINES_TO_COVER_KEY, CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_LINE_COVERAGE_KEY, 072 CoreMetrics.IT_CONDITIONS_TO_COVER_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY, CoreMetrics.IT_BRANCH_COVERAGE_KEY, 073 CoreMetrics.NEW_IT_COVERAGE_KEY, CoreMetrics.NEW_IT_UNCOVERED_LINES_KEY, CoreMetrics.NEW_IT_LINE_COVERAGE_KEY, 074 CoreMetrics.NEW_IT_LINES_TO_COVER_KEY, CoreMetrics.NEW_IT_BRANCH_COVERAGE_KEY, CoreMetrics.NEW_IT_CONDITIONS_TO_COVER_KEY, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS_KEY 075 }) 076 @UserRole(UserRole.CODEVIEWER) 077 private static final class CoverageTab implements RubyRailsPage { 078 public String getTemplate() { 079 //not used, hardcoded in BrowseController 080 return "browse/index"; 081 } 082 083 public String getId() { 084 return "coverage"; 085 } 086 087 public String getTitle() { 088 return "Coverage"; 089 } 090 } 091 092 @NavigationSection(NavigationSection.RESOURCE_TAB) 093 @DefaultTab(metrics = {CoreMetrics.VIOLATIONS_DENSITY_KEY, CoreMetrics.WEIGHTED_VIOLATIONS_KEY, CoreMetrics.VIOLATIONS_KEY, CoreMetrics.BLOCKER_VIOLATIONS_KEY, 094 CoreMetrics.CRITICAL_VIOLATIONS_KEY, CoreMetrics.MAJOR_VIOLATIONS_KEY, CoreMetrics.MINOR_VIOLATIONS_KEY, CoreMetrics.INFO_VIOLATIONS_KEY, 095 CoreMetrics.NEW_VIOLATIONS_KEY, CoreMetrics.NEW_BLOCKER_VIOLATIONS_KEY, CoreMetrics.NEW_CRITICAL_VIOLATIONS_KEY, CoreMetrics.NEW_MAJOR_VIOLATIONS_KEY, 096 CoreMetrics.NEW_MINOR_VIOLATIONS_KEY, CoreMetrics.NEW_INFO_VIOLATIONS_KEY, CoreMetrics.ACTIVE_REVIEWS_KEY, CoreMetrics.UNASSIGNED_REVIEWS_KEY, 097 CoreMetrics.UNPLANNED_REVIEWS_KEY, CoreMetrics.FALSE_POSITIVE_REVIEWS_KEY, CoreMetrics.UNREVIEWED_VIOLATIONS_KEY, CoreMetrics.NEW_UNREVIEWED_VIOLATIONS_KEY}) 098 @ResourceQualifier({Qualifiers.VIEW, Qualifiers.SUBVIEW, Qualifiers.PROJECT, Qualifiers.MODULE, Qualifiers.PACKAGE, Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.CLASS}) 099 /* all exept unit tests...*/ 100 @UserRole(UserRole.CODEVIEWER) 101 private static final class ViolationsTab implements RubyRailsPage { 102 public String getTemplate() { 103 //not used, hardcoded in BrowseController 104 return "browse/index"; 105 } 106 107 public String getId() { 108 return "violations"; 109 } 110 111 public String getTitle() { 112 return "Violations"; 113 } 114 } 115 116 @NavigationSection(NavigationSection.RESOURCE_TAB) 117 @DefaultTab(metrics = {CoreMetrics.DUPLICATED_LINES_KEY, CoreMetrics.DUPLICATED_BLOCKS_KEY, CoreMetrics.DUPLICATED_FILES_KEY, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY}) 118 @ResourceQualifier({Qualifiers.FILE, Qualifiers.CLASS}) 119 @UserRole(UserRole.CODEVIEWER) 120 private static final class DuplicationsTab implements RubyRailsPage { 121 public String getTemplate() { 122 //not used, hardcoded in BrowseController 123 return "browse/index"; 124 } 125 126 public String getId() { 127 return "duplications"; 128 } 129 130 public String getTitle() { 131 return "Duplications"; 132 } 133 } 134 }