001/*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2013 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * SonarQube 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 * SonarQube 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 License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
019 */
020package org.sonar.api.design;
021
022import org.apache.commons.lang.builder.EqualsBuilder;
023import org.apache.commons.lang.builder.HashCodeBuilder;
024import org.apache.commons.lang.builder.ReflectionToStringBuilder;
025import org.apache.commons.lang.builder.ToStringStyle;
026
027import javax.persistence.*;
028
029@Entity
030@Table(name = "dependencies")
031public class DependencyDto {
032
033  @Id
034  @Column(name = "id")
035  @GeneratedValue
036  private Long id;
037
038  @Column(name = "from_snapshot_id", updatable = true, nullable = false)
039  private Integer fromSnapshotId;
040
041  @Column(name = "from_resource_id", updatable = true, nullable = false)
042  private Integer fromResourceId;
043
044  @Column(name = "from_scope", updatable = true, nullable = true)
045  private String fromScope;
046
047  @Column(name = "to_snapshot_id", updatable = true, nullable = false)
048  private Integer toSnapshotId;
049
050  @Column(name = "to_resource_id", updatable = true, nullable = false)
051  private Integer toResourceId;
052
053  @Column(name = "to_scope", updatable = true, nullable = true)
054  private String toScope;
055
056  @Column(name = "dep_weight", updatable = true, nullable = true)
057  private Integer weight;
058
059  @Column(name = "dep_usage", updatable = true, nullable = true, length = 30)
060  private String usage;
061
062  @Column(name = "project_snapshot_id", updatable = true, nullable = false)
063  private Integer projectSnapshotId;
064
065  @Column(name = "parent_dependency_id", updatable = true, nullable = true)
066  private Long parentDependencyId;
067
068  public Long getId() {
069    return id;
070  }
071
072  public void setId(Long id) {
073    this.id = id;
074  }
075
076  public Integer getFromSnapshotId() {
077    return fromSnapshotId;
078  }
079
080  public DependencyDto setFromSnapshotId(Integer fromSnapshotId) {
081    this.fromSnapshotId = fromSnapshotId;
082    return this;
083  }
084
085  public Integer getFromResourceId() {
086    return fromResourceId;
087  }
088
089  public DependencyDto setFromResourceId(Integer fromResourceId) {
090    this.fromResourceId = fromResourceId;
091    return this;
092  }
093
094  public Integer getToSnapshotId() {
095    return toSnapshotId;
096  }
097
098  public DependencyDto setToSnapshotId(Integer toSnapshotId) {
099    this.toSnapshotId = toSnapshotId;
100    return this;
101  }
102
103  public Integer getToResourceId() {
104    return toResourceId;
105  }
106
107  public DependencyDto setToResourceId(Integer toResourceId) {
108    this.toResourceId = toResourceId;
109    return this;
110  }
111
112  public Integer getWeight() {
113    return weight;
114  }
115
116  public DependencyDto setWeight(Integer weight) {
117    if (weight < 0) {
118      throw new IllegalArgumentException("Dependency weight can not be negative");
119    }
120    this.weight = weight;
121    return this;
122  }
123
124  public String getFromScope() {
125    return fromScope;
126  }
127
128  public DependencyDto setFromScope(String fromScope) {
129    this.fromScope = fromScope;
130    return this;
131  }
132
133  public String getToScope() {
134    return toScope;
135  }
136
137  public DependencyDto setToScope(String toScope) {
138    this.toScope = toScope;
139    return this;
140  }
141
142  public String getUsage() {
143    return usage;
144  }
145
146  public DependencyDto setUsage(String usage) {
147    this.usage = usage;
148    return this;
149  }
150
151  public Integer getProjectSnapshotId() {
152    return projectSnapshotId;
153  }
154
155  public DependencyDto setProjectSnapshotId(Integer projectSnapshotId) {
156    this.projectSnapshotId = projectSnapshotId;
157    return this;
158  }
159
160  public Long getParentDependencyId() {
161    return parentDependencyId;
162  }
163
164  public DependencyDto setParentDependencyId(Long parentDependencyId) {
165    this.parentDependencyId = parentDependencyId;
166    return this;
167  }
168
169  @Override
170  public boolean equals(Object obj) {
171    if (!(obj instanceof DependencyDto)) {
172      return false;
173    }
174    if (this == obj) {
175      return true;
176    }
177    DependencyDto other = (DependencyDto) obj;
178    return new EqualsBuilder()
179        .append(fromSnapshotId, other.fromSnapshotId)
180        .append(toSnapshotId, other.toSnapshotId)
181        .isEquals();
182  }
183
184  @Override
185  public int hashCode() {
186    return new HashCodeBuilder(17, 37)
187        .append(fromSnapshotId)
188        .append(toSnapshotId)
189        .toHashCode();
190  }
191
192  @Override
193  public String toString() {
194    return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).toString();
195  }
196}