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 @RequiredMeasures(anyOf = {CoreMetrics.COVERAGE_KEY, CoreMetrics.IT_COVERAGE_KEY}) 077 @UserRole(UserRole.CODEVIEWER) 078 private static final class CoverageTab implements RubyRailsPage { 079 public String getTemplate() { 080 //not used, hardcoded in BrowseController 081 return "browse/index"; 082 } 083 084 public String getId() { 085 return "coverage"; 086 } 087 088 public String getTitle() { 089 return "Coverage"; 090 } 091 } 092 093 @NavigationSection(NavigationSection.RESOURCE_TAB) 094 @DefaultTab(metrics = {CoreMetrics.VIOLATIONS_DENSITY_KEY, CoreMetrics.WEIGHTED_VIOLATIONS_KEY, CoreMetrics.VIOLATIONS_KEY, CoreMetrics.BLOCKER_VIOLATIONS_KEY, 095 CoreMetrics.CRITICAL_VIOLATIONS_KEY, CoreMetrics.MAJOR_VIOLATIONS_KEY, CoreMetrics.MINOR_VIOLATIONS_KEY, CoreMetrics.INFO_VIOLATIONS_KEY, 096 CoreMetrics.NEW_VIOLATIONS_KEY, CoreMetrics.NEW_BLOCKER_VIOLATIONS_KEY, CoreMetrics.NEW_CRITICAL_VIOLATIONS_KEY, CoreMetrics.NEW_MAJOR_VIOLATIONS_KEY, 097 CoreMetrics.NEW_MINOR_VIOLATIONS_KEY, CoreMetrics.NEW_INFO_VIOLATIONS_KEY, CoreMetrics.ACTIVE_REVIEWS_KEY, CoreMetrics.UNASSIGNED_REVIEWS_KEY, 098 CoreMetrics.UNPLANNED_REVIEWS_KEY, CoreMetrics.FALSE_POSITIVE_REVIEWS_KEY, CoreMetrics.UNREVIEWED_VIOLATIONS_KEY, CoreMetrics.NEW_UNREVIEWED_VIOLATIONS_KEY}) 099 @ResourceQualifier({Qualifiers.VIEW, Qualifiers.SUBVIEW, Qualifiers.PROJECT, Qualifiers.MODULE, Qualifiers.PACKAGE, Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.CLASS}) 100 /* all exept unit tests...*/ 101 @UserRole(UserRole.CODEVIEWER) 102 private static final class ViolationsTab implements RubyRailsPage { 103 public String getTemplate() { 104 //not used, hardcoded in BrowseController 105 return "browse/index"; 106 } 107 108 public String getId() { 109 return "violations"; 110 } 111 112 public String getTitle() { 113 return "Violations"; 114 } 115 } 116 117 @NavigationSection(NavigationSection.RESOURCE_TAB) 118 @DefaultTab(metrics = {CoreMetrics.DUPLICATED_LINES_KEY, CoreMetrics.DUPLICATED_BLOCKS_KEY, CoreMetrics.DUPLICATED_FILES_KEY, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY}) 119 @ResourceQualifier({Qualifiers.FILE, Qualifiers.CLASS}) 120 @UserRole(UserRole.CODEVIEWER) 121 private static final class DuplicationsTab implements RubyRailsPage { 122 public String getTemplate() { 123 //not used, hardcoded in BrowseController 124 return "browse/index"; 125 } 126 127 public String getId() { 128 return "duplications"; 129 } 130 131 public String getTitle() { 132 return "Duplications"; 133 } 134 } 135 }