]> source.dussan.org Git - sonarqube.git/blob
ae79537f57ea05e400fe8d997fc6dfd90879eb3d
[sonarqube.git] /
1 /*
2  * SonarQube
3  * Copyright (C) 2009-2016 SonarSource SA
4  * mailto:contact AT sonarsource DOT com
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20 package org.sonar.server.computation.analysis;
21
22 import java.util.Date;
23 import java.util.Map;
24 import javax.annotation.CheckForNull;
25 import javax.annotation.Nullable;
26 import org.junit.rules.ExternalResource;
27 import org.sonar.server.computation.qualityprofile.QualityProfile;
28 import org.sonar.server.computation.snapshot.Snapshot;
29 import org.sonar.server.computation.util.InitializedProperty;
30
31 import static com.google.common.base.Preconditions.checkNotNull;
32 import static com.google.common.base.Preconditions.checkState;
33
34 public class AnalysisMetadataHolderRule extends ExternalResource implements AnalysisMetadataHolder {
35
36   private InitializedProperty<Long> analysisDate = new InitializedProperty<>();
37
38   private InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
39
40   private InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
41
42   private InitializedProperty<String> branch = new InitializedProperty<>();
43
44   private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
45
46   private InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
47
48   public AnalysisMetadataHolderRule setAnalysisDate(Date date) {
49     checkNotNull(date, "Date must not be null");
50     this.analysisDate.setProperty(date.getTime());
51     return this;
52   }
53
54   public AnalysisMetadataHolderRule setAnalysisDate(long date) {
55     checkNotNull(date, "Date must not be null");
56     this.analysisDate.setProperty(date);
57     return this;
58   }
59
60   @Override
61   public long getAnalysisDate() {
62     checkState(analysisDate.isInitialized(), "Analysis date has not been set");
63     return this.analysisDate.getProperty();
64   }
65
66   @Override
67   public boolean isFirstAnalysis() {
68     return getBaseProjectSnapshot() == null;
69   }
70
71   public AnalysisMetadataHolderRule setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot) {
72     this.baseProjectSnapshot.setProperty(baseProjectSnapshot);
73     return this;
74   }
75
76   @Override
77   @CheckForNull
78   public Snapshot getBaseProjectSnapshot() {
79     checkState(baseProjectSnapshot.isInitialized(), "Base project snapshot has not been set");
80     return baseProjectSnapshot.getProperty();
81   }
82
83   public AnalysisMetadataHolderRule setCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled) {
84     this.crossProjectDuplicationEnabled.setProperty(isCrossProjectDuplicationEnabled);
85     return this;
86   }
87
88   @Override
89   public boolean isCrossProjectDuplicationEnabled() {
90     checkState(crossProjectDuplicationEnabled.isInitialized(), "Cross project duplication flag has not been set");
91     return crossProjectDuplicationEnabled.getProperty();
92   }
93
94   public AnalysisMetadataHolderRule setBranch(@Nullable String branch) {
95     this.branch.setProperty(branch);
96     return this;
97   }
98
99   @Override
100   public String getBranch() {
101     checkState(branch.isInitialized(), "Branch has not been set");
102     return branch.getProperty();
103   }
104
105   public AnalysisMetadataHolderRule setRootComponentRef(int rootComponentRef) {
106     this.rootComponentRef.setProperty(rootComponentRef);
107     return this;
108   }
109
110   @Override
111   public int getRootComponentRef() {
112     checkState(rootComponentRef.isInitialized(), "Root component ref has not been set");
113     return rootComponentRef.getProperty();
114   }
115
116   public AnalysisMetadataHolderRule setQProfilesByLanguage(Map<String, QualityProfile> qProfilesPerLanguage) {
117     this.qProfilesPerLanguage.setProperty(qProfilesPerLanguage);
118     return this;
119   }
120
121   @Override
122   public Map<String, QualityProfile> getQProfilesByLanguage() {
123     checkState(qProfilesPerLanguage.isInitialized(), "QProfile per language has not been set");
124     return qProfilesPerLanguage.getProperty();
125   }
126 }