]> source.dussan.org Git - sonarqube.git/blob
003d0c7509f39dc82c2b318f722c81bc1e66515b
[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 com.google.common.collect.ImmutableMap;
23 import java.util.Map;
24 import javax.annotation.CheckForNull;
25 import javax.annotation.Nullable;
26 import org.sonar.server.computation.qualityprofile.QualityProfile;
27 import org.sonar.server.computation.snapshot.Snapshot;
28 import org.sonar.server.computation.util.InitializedProperty;
29
30 import static com.google.common.base.Preconditions.checkState;
31
32 public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder {
33
34   private InitializedProperty<Long> analysisDate = new InitializedProperty<>();
35
36   private InitializedProperty<Snapshot> baseProjectSnapshot = new InitializedProperty<>();
37
38   private InitializedProperty<Boolean> crossProjectDuplicationEnabled = new InitializedProperty<>();
39
40   private InitializedProperty<String> branch = new InitializedProperty<>();
41
42   private InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
43
44   private InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
45
46   @Override
47   public MutableAnalysisMetadataHolder setAnalysisDate(long date) {
48     checkState(!analysisDate.isInitialized(), "Analysis date has already been set");
49     this.analysisDate.setProperty(date);
50     return this;
51   }
52
53   @Override
54   public long getAnalysisDate() {
55     checkState(analysisDate.isInitialized(), "Analysis date has not been set");
56     return this.analysisDate.getProperty();
57   }
58
59   @Override
60   public boolean isFirstAnalysis() {
61     return getBaseProjectSnapshot() == null;
62   }
63
64   @Override
65   public MutableAnalysisMetadataHolder setBaseProjectSnapshot(@Nullable Snapshot baseProjectSnapshot) {
66     checkState(!this.baseProjectSnapshot.isInitialized(), "Base project snapshot has already been set");
67     this.baseProjectSnapshot.setProperty(baseProjectSnapshot);
68     return this;
69   }
70
71   @Override
72   @CheckForNull
73   public Snapshot getBaseProjectSnapshot() {
74     checkState(baseProjectSnapshot.isInitialized(), "Base project snapshot has not been set");
75     return baseProjectSnapshot.getProperty();
76   }
77
78   @Override
79   public MutableAnalysisMetadataHolder setCrossProjectDuplicationEnabled(boolean isCrossProjectDuplicationEnabled) {
80     checkState(!this.crossProjectDuplicationEnabled.isInitialized(), "Cross project duplication flag has already been set");
81     this.crossProjectDuplicationEnabled.setProperty(isCrossProjectDuplicationEnabled);
82     return this;
83   }
84
85   @Override
86   public boolean isCrossProjectDuplicationEnabled() {
87     checkState(crossProjectDuplicationEnabled.isInitialized(), "Cross project duplication flag has not been set");
88     return crossProjectDuplicationEnabled.getProperty();
89   }
90
91   @Override
92   public MutableAnalysisMetadataHolder setBranch(@Nullable String branch) {
93     checkState(!this.branch.isInitialized(), "Branch has already been set");
94     this.branch.setProperty(branch);
95     return this;
96   }
97
98   @Override
99   public String getBranch() {
100     checkState(branch.isInitialized(), "Branch has not been set");
101     return branch.getProperty();
102   }
103
104   @Override
105   public MutableAnalysisMetadataHolder setRootComponentRef(int rootComponentRef) {
106     checkState(!this.rootComponentRef.isInitialized(), "Root component ref has already been set");
107     this.rootComponentRef.setProperty(rootComponentRef);
108     return this;
109   }
110
111   @Override
112   public int getRootComponentRef() {
113     checkState(rootComponentRef.isInitialized(), "Root component ref has not been set");
114     return rootComponentRef.getProperty();
115   }
116
117   @Override
118   public MutableAnalysisMetadataHolder setQProfilesByLanguage(Map<String, QualityProfile> qprofilesByLanguage) {
119     checkState(!this.qProfilesPerLanguage.isInitialized(), "QProfiles by language has already been set");
120     this.qProfilesPerLanguage.setProperty(ImmutableMap.copyOf(qprofilesByLanguage));
121     return this;
122   }
123
124   @Override
125   public Map<String, QualityProfile> getQProfilesByLanguage() {
126     checkState(qProfilesPerLanguage.isInitialized(), "QProfiles by language has not been set");
127     return qProfilesPerLanguage.getProperty();
128   }
129
130 }