blob: 29a8d176db7384a1b13848ee976a3325847dec1a [file] [log] [blame]
tom3065d122014-09-03 21:56:43 -07001package org.onlab.onos.net;
2
3import org.onlab.onos.net.provider.ProviderId;
4
5import java.util.Objects;
6
tomeadbb462014-09-07 16:10:19 -07007import static com.google.common.base.MoreObjects.toStringHelper;
tom3065d122014-09-03 21:56:43 -07008
9/**
tom4c6606f2014-09-07 11:11:21 -070010 * Default infrastructure device model implementation.
tom3065d122014-09-03 21:56:43 -070011 */
12public class DefaultDevice extends AbstractElement implements Device {
13
14 private final Type type;
15 private final String manufacturer;
16 private final String serialNumber;
17 private final String hwVersion;
18 private final String swVersion;
19
tomc6491322014-09-19 15:27:40 -070020 // For serialization
21 private DefaultDevice() {
22 this.type = null;
23 this.manufacturer = null;
24 this.hwVersion = null;
25 this.swVersion = null;
26 this.serialNumber = null;
27 }
28
tom3065d122014-09-03 21:56:43 -070029 /**
30 * Creates a network element attributed to the specified provider.
31 *
32 * @param providerId identity of the provider
33 * @param id device identifier
34 * @param type device type
35 * @param manufacturer device manufacturer
36 * @param hwVersion device HW version
37 * @param swVersion device SW version
38 * @param serialNumber device serial number
39 */
40 public DefaultDevice(ProviderId providerId, DeviceId id, Type type,
41 String manufacturer, String hwVersion, String swVersion,
42 String serialNumber) {
43 super(providerId, id);
44 this.type = type;
45 this.manufacturer = manufacturer;
46 this.hwVersion = hwVersion;
47 this.swVersion = swVersion;
48 this.serialNumber = serialNumber;
49 }
50
51 @Override
52 public DeviceId id() {
53 return (DeviceId) super.id();
54 }
55
56 @Override
57 public Type type() {
58 return type;
59 }
60
61 @Override
62 public String manufacturer() {
63 return manufacturer;
64 }
65
66 @Override
67 public String hwVersion() {
68 return hwVersion;
69 }
70
71 @Override
72 public String swVersion() {
73 return swVersion;
74 }
75
76 @Override
77 public String serialNumber() {
78 return serialNumber;
79 }
80
81 @Override
82 public int hashCode() {
83 return Objects.hash(id, type, manufacturer, hwVersion, swVersion, serialNumber);
84 }
85
86 @Override
87 public boolean equals(Object obj) {
tomfc9a4ff2014-09-22 18:22:47 -070088 if (this == obj) {
89 return true;
90 }
tom3065d122014-09-03 21:56:43 -070091 if (obj instanceof DefaultDevice) {
92 final DefaultDevice other = (DefaultDevice) obj;
93 return Objects.equals(this.id, other.id) &&
94 Objects.equals(this.type, other.type) &&
95 Objects.equals(this.manufacturer, other.manufacturer) &&
96 Objects.equals(this.hwVersion, other.hwVersion) &&
97 Objects.equals(this.swVersion, other.swVersion) &&
98 Objects.equals(this.serialNumber, other.serialNumber);
99 }
100 return false;
101 }
102
103 @Override
104 public String toString() {
105 return toStringHelper(this)
106 .add("id", id)
107 .add("type", type)
108 .add("manufacturer", manufacturer)
109 .add("hwVersion", hwVersion)
110 .add("swVersion", swVersion)
111 .add("serialNumber", serialNumber)
112 .toString();
113 }
114
115}