001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 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}) 097 @ResourceQualifier({Qualifiers.VIEW, Qualifiers.SUBVIEW, Qualifiers.PROJECT, Qualifiers.MODULE, Qualifiers.PACKAGE, Qualifiers.DIRECTORY, Qualifiers.FILE, Qualifiers.CLASS}) 098 /* all exept unit tests...*/ 099 @UserRole(UserRole.CODEVIEWER) 100 private static final class ViolationsTab implements RubyRailsPage { 101 public String getTemplate() { 102 //not used, hardcoded in BrowseController 103 return "browse/index"; 104 } 105 106 public String getId() { 107 return "violations"; 108 } 109 110 public String getTitle() { 111 return "Violations"; 112 } 113 } 114 115 @NavigationSection(NavigationSection.RESOURCE_TAB) 116 @DefaultTab(metrics = {CoreMetrics.DUPLICATED_LINES_KEY, CoreMetrics.DUPLICATED_BLOCKS_KEY, CoreMetrics.DUPLICATED_FILES_KEY, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY}) 117 @ResourceQualifier({Qualifiers.FILE, Qualifiers.CLASS}) 118 @UserRole(UserRole.CODEVIEWER) 119 private static final class DuplicationsTab implements RubyRailsPage { 120 public String getTemplate() { 121 //not used, hardcoded in BrowseController 122 return "browse/index"; 123 } 124 125 public String getId() { 126 return "duplications"; 127 } 128 129 public String getTitle() { 130 return "Duplications"; 131 } 132 } 133 }