/* | |
* Copyright 2015 Open Networking Laboratory | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.onosproject.iptopology.api; | |
import org.onosproject.net.AbstractElement; | |
import org.onosproject.net.Annotations; | |
import org.onosproject.net.DeviceId; | |
import org.onosproject.net.provider.ProviderId; | |
import java.util.Objects; | |
import static com.google.common.base.MoreObjects.toStringHelper; | |
/** | |
* Default ip device model implementation. | |
*/ | |
public class DefaultIpDevice extends AbstractElement implements IpDevice { | |
private final Type type; | |
private final IpDeviceIdentifier deviceIdentifier; | |
private final DeviceTed deviceTed; | |
/** | |
* For Serialization. | |
*/ | |
private DefaultIpDevice() { | |
this.type = null; | |
this.deviceIdentifier = null; | |
this.deviceTed = null; | |
} | |
/** | |
* Creates a network element attributed to the specified provider. | |
* | |
* @param providerId identity of the provider | |
* @param id device identifier | |
* @param type device type | |
* @param deviceIdentifier provides device identifier details | |
* @param deviceTed device traffic engineering parameters | |
* @param annotations optional key/value annotations | |
*/ | |
public DefaultIpDevice(ProviderId providerId, DeviceId id, Type type, | |
IpDeviceIdentifier deviceIdentifier, DeviceTed deviceTed, | |
Annotations... annotations) { | |
super(providerId, id, annotations); | |
this.type = type; | |
this.deviceIdentifier = deviceIdentifier; | |
this.deviceTed = deviceTed; | |
} | |
@Override | |
public DeviceId id() { | |
return (DeviceId) id; | |
} | |
@Override | |
public Type type() { | |
return type; | |
} | |
@Override | |
public IpDeviceIdentifier deviceIdentifier() { | |
return deviceIdentifier; | |
} | |
@Override | |
public DeviceTed deviceTed() { | |
return deviceTed; } | |
@Override | |
public int hashCode() { | |
return Objects.hash(type, deviceIdentifier, deviceTed); | |
} | |
@Override | |
public boolean equals(Object obj) { | |
if (this == obj) { | |
return true; | |
} | |
if (obj instanceof DefaultIpDevice) { | |
final DefaultIpDevice other = (DefaultIpDevice) obj; | |
return Objects.equals(this.id, other.id) && | |
Objects.equals(this.type, other.type) && | |
Objects.equals(this.deviceIdentifier, other.deviceIdentifier) && | |
Objects.equals(this.deviceTed, other.deviceTed); | |
} | |
return false; | |
} | |
@Override | |
public String toString() { | |
return toStringHelper(this) | |
.omitNullValues() | |
.add("id", id) | |
.add("deviceIdentifier", deviceIdentifier) | |
.add("deviceTed", deviceTed) | |
.toString(); | |
} | |
} |