001 /* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2014 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 */ 020 package org.sonar.api.design; 021 022 import org.apache.commons.lang.builder.EqualsBuilder; 023 import org.apache.commons.lang.builder.HashCodeBuilder; 024 import org.apache.commons.lang.builder.ToStringBuilder; 025 import org.sonar.api.resources.Resource; 026 import org.sonar.graph.Edge; 027 028 public class Dependency implements Edge<Resource> { 029 030 private Resource from; 031 private Resource to; 032 private String usage; 033 private int weight; 034 private Dependency parent; 035 private Long id; 036 037 public Dependency(Resource from, Resource to) { 038 if (from == null) { 039 throw new IllegalArgumentException("Dependency source is null"); 040 } 041 if (to == null) { 042 throw new IllegalArgumentException("Dependency target is null"); 043 } 044 this.from = from; 045 this.to = to; 046 } 047 048 @Override 049 public Resource getFrom() { 050 return from; 051 } 052 053 @Override 054 public Resource getTo() { 055 return to; 056 } 057 058 public String getUsage() { 059 return usage; 060 } 061 062 public Dependency setUsage(String usage) { 063 this.usage = usage; 064 return this; 065 } 066 067 @Override 068 public int getWeight() { 069 return weight; 070 } 071 072 public Dependency setWeight(int weight) { 073 this.weight = weight; 074 return this; 075 } 076 077 public Dependency getParent() { 078 return parent; 079 } 080 081 public Dependency setParent(Dependency parent) { 082 this.parent = parent; 083 return this; 084 } 085 086 public Long getId() { 087 return id; 088 } 089 090 /** 091 * Internal use only. 092 */ 093 public Dependency setId(Long id) { 094 this.id = id; 095 return this; 096 } 097 098 @Override 099 public boolean equals(Object obj) { 100 if (!(obj instanceof Dependency)) { 101 return false; 102 } 103 if (this == obj) { 104 return true; 105 } 106 Dependency other = (Dependency) obj; 107 return new EqualsBuilder() 108 .append(from, other.from) 109 .append(to, other.to) 110 .isEquals(); 111 } 112 113 @Override 114 public int hashCode() { 115 return new HashCodeBuilder(17, 37) 116 .append(from) 117 .append(to) 118 .toHashCode(); 119 } 120 121 @Override 122 public String toString() { 123 return new ToStringBuilder(this) 124 .append("from", from) 125 .append("to", to) 126 .append("weight", weight) 127 .append("usage", usage) 128 .toString(); 129 } 130 }