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 }