]> source.dussan.org Git - sonarqube.git/blob
9dcb3d34ece175104479d201d70bc20eff56d712
[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.api.batch.sensor.dependency.internal;
21
22 import com.google.common.base.Preconditions;
23 import org.apache.commons.lang.builder.EqualsBuilder;
24 import org.apache.commons.lang.builder.HashCodeBuilder;
25 import org.sonar.api.batch.fs.InputFile;
26 import org.sonar.api.batch.fs.internal.DefaultInputFile;
27 import org.sonar.api.batch.sensor.SensorStorage;
28 import org.sonar.api.batch.sensor.dependency.Dependency;
29 import org.sonar.api.batch.sensor.dependency.NewDependency;
30 import org.sonar.api.batch.sensor.internal.DefaultStorable;
31
32 import javax.annotation.Nullable;
33
34 public class DefaultDependency extends DefaultStorable implements Dependency, NewDependency {
35
36   private String fromKey;
37   private String toKey;
38   private int weight = 1;
39
40   public DefaultDependency() {
41     super(null);
42   }
43
44   public DefaultDependency(@Nullable SensorStorage storage) {
45     super(storage);
46   }
47
48   @Override
49   public DefaultDependency from(InputFile from) {
50     Preconditions.checkNotNull(from, "InputFile should be non null");
51     this.fromKey = ((DefaultInputFile) from).key();
52     return this;
53   }
54
55   @Override
56   public DefaultDependency to(InputFile to) {
57     Preconditions.checkNotNull(to, "InputFile should be non null");
58     this.toKey = ((DefaultInputFile) to).key();
59     return this;
60   }
61
62   @Override
63   public DefaultDependency weight(int weight) {
64     Preconditions.checkArgument(weight > 1, "weight should be greater than 1");
65     this.weight = weight;
66     return this;
67   }
68
69   @Override
70   public void doSave() {
71     Preconditions.checkState(!this.fromKey.equals(this.toKey), "From and To can't be the same inputFile");
72     Preconditions.checkNotNull(this.fromKey, "From inputFile can't be null");
73     Preconditions.checkNotNull(this.toKey, "To inputFile can't be null");
74     storage.store((Dependency) this);
75   }
76
77   @Override
78   public String fromKey() {
79     return this.fromKey;
80   }
81
82   public DefaultDependency setFromKey(String fromKey) {
83     this.fromKey = fromKey;
84     return this;
85   }
86
87   @Override
88   public String toKey() {
89     return this.toKey;
90   }
91
92   public DefaultDependency setToKey(String toKey) {
93     this.toKey = toKey;
94     return this;
95   }
96
97   @Override
98   public int weight() {
99     return this.weight;
100   }
101
102   public DefaultDependency setWeight(int weight) {
103     this.weight = weight;
104     return this;
105   }
106
107   // For testing purpose
108
109   @Override
110   public boolean equals(Object obj) {
111     if (obj == null) {
112       return false;
113     }
114     if (obj == this) {
115       return true;
116     }
117     if (obj.getClass() != getClass()) {
118       return false;
119     }
120     DefaultDependency rhs = (DefaultDependency) obj;
121     return new EqualsBuilder()
122       .append(fromKey, rhs.fromKey)
123       .append(toKey, rhs.toKey)
124       .append(weight, rhs.weight)
125       .isEquals();
126   }
127
128   @Override
129   public int hashCode() {
130     return new HashCodeBuilder(27, 45).
131       append(fromKey).
132       append(toKey).
133       append(weight).
134       toHashCode();
135   }
136
137 }