]> source.dussan.org Git - sonarqube.git/blob
9feb25dcbf829fd2d8ed486ef17ed43ba69d7770
[sonarqube.git] /
1 /*
2  * SonarQube, open source software quality management tool.
3  * Copyright (C) 2008-2014 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
6  * SonarQube 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  * SonarQube 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.duplication;
21
22 import java.util.Set;
23 import org.junit.rules.ExternalResource;
24 import org.sonar.server.computation.batch.TreeRootHolderRule;
25 import org.sonar.server.computation.component.Component;
26 import org.sonar.server.computation.component.ComponentProvider;
27 import org.sonar.server.computation.component.TreeRootHolder;
28 import org.sonar.server.computation.component.TreeRootHolderComponentProvider;
29
30 public class DuplicationRepositoryRule extends ExternalResource implements DuplicationRepository {
31   private final TreeRootHolder treeRootHolder;
32   private final ComponentProvider componentProvider;
33   private DuplicationRepositoryImpl delegate;
34
35   private DuplicationRepositoryRule(TreeRootHolder treeRootHolder) {
36     this.treeRootHolder = treeRootHolder;
37     this.componentProvider = new TreeRootHolderComponentProvider(treeRootHolder);
38   }
39
40   public static DuplicationRepositoryRule create(TreeRootHolderRule treeRootHolder) {
41     return new DuplicationRepositoryRule(treeRootHolder);
42   }
43
44   @Override
45   protected void before() throws Throwable {
46     this.delegate = new DuplicationRepositoryImpl(treeRootHolder);
47   }
48
49   @Override
50   protected void after() {
51     this.componentProvider.reset();
52     this.delegate = null;
53   }
54
55   public Set<Duplication> getDuplications(int fileRef) {
56     componentProvider.ensureInitialized();
57
58     return delegate.getDuplications(componentProvider.getByRef(fileRef));
59   }
60
61   public DuplicationRepositoryRule addDuplication(int fileRef, TextBlock original, TextBlock duplicate) {
62     componentProvider.ensureInitialized();
63
64     delegate.addDuplication(componentProvider.getByRef(fileRef), original, duplicate);
65
66     return this;
67   }
68
69   public DuplicationRepositoryRule addDuplication(int fileRef, TextBlock original, int otherFileRef, TextBlock duplicate) {
70     componentProvider.ensureInitialized();
71
72     delegate.addDuplication(componentProvider.getByRef(fileRef), original, componentProvider.getByRef(otherFileRef), duplicate);
73
74     return this;
75   }
76
77   public DuplicationRepositoryRule addDuplication(int fileRef, TextBlock original, String otherFileKey, TextBlock duplicate) {
78     componentProvider.ensureInitialized();
79
80     delegate.addDuplication(componentProvider.getByRef(fileRef), original, otherFileKey, duplicate);
81
82     return this;
83   }
84
85   @Override
86   public Set<Duplication> getDuplications(Component file) {
87     return delegate.getDuplications(file);
88   }
89
90   @Override
91   public void addDuplication(Component file, TextBlock original, TextBlock duplicate) {
92     delegate.addDuplication(file, original, duplicate);
93   }
94
95   @Override
96   public void addDuplication(Component file, TextBlock original, Component otherFile, TextBlock duplicate) {
97     delegate.addDuplication(file, original, otherFile, duplicate);
98   }
99
100   @Override
101   public void addDuplication(Component file, TextBlock original, String otherFileKey, TextBlock duplicate) {
102     delegate.addDuplication(file, original, otherFileKey, duplicate);
103   }
104 }